Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/产品的权限优化

# Conflicts:
#	sf_dlm_management/views/product_template_management_view.xml
#	sf_sale/models/quick_easy_order.py
#	sf_sale/models/sale_order.py
#	sf_sale/views/purchase_order_view.xml
This commit is contained in:
jinling.yang
2024-02-22 09:35:18 +08:00
194 changed files with 9912 additions and 3459 deletions

View File

@@ -6,22 +6,29 @@
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form"/>
<field name="arch" type="xml">
<field name="currency_id" position="after">
<field name="partner_id" position="replace">
<field name="partner_id" widget="res_partner_many2one" context="{'is_supplier': True }"/>
<field name="check_status" invisible="1"/>
<!-- <field name="state"/>-->
</field>
<field name="currency_id" position="after">
<field name="remark" attrs="{'readonly': ['&amp;',('state', 'in', ['purchase']),('check_status','in',
['pending','approved'])]}"/>
</field>
<xpath expr="//form/header/button[@name='action_rfq_send'][1]" position="after">
<button name="sf_sale.action_purchase_order_check_wizard" string="审核" type="action"
context="{'default_order_id':active_id}" groups="sf_base.group_purchase_director"
attrs="{'invisible': ['&amp;',('check_status','in', ['approved']),('state', 'in', ['draft','send','purchase'])]}"
attrs="{'invisible': ['&amp;',('check_status','in', ['approved','fail']),('state', 'in', ['purchase','draft'])]}"
class="oe_highlight"/>
</xpath>
<xpath expr="//form/header/button[@name='button_confirm'][2]" position="replace">
<button name="button_confirm" type="object" context="{'validate_analytic': True}"
string="确认订单" id="draft_confirm"
attrs="{'invisible': ['|','&amp;',('check_status','in', ['approved','fail','pending']),('state', 'in', ['draft','purchase']),('state', 'in', ['purchase'])]}"
attrs="{'invisible': ['|','&amp;','&amp;', ('state', 'in', ['purchase','draft']), ('check_status', 'in', ['approved']), ('date_approve', '!=', False),'&amp;', '&amp;',('state', 'in', ['purchase', 'draft']),('check_status', 'in', [False, 'pending', 'fail']),('date_approve', '=', False)]}"
/>
<button name="button_confirming" type="object"
string="确认订单"
attrs="{'invisible': ['&amp;',('check_status','!=', False),('state', 'not in', ['draft','send'])]}"
/>
</xpath>
@@ -126,12 +133,23 @@
</field>
</record>
<<<<<<< HEAD
<record id="purchase_order_view_tree_inherit_sf" model="ir.ui.view">
=======
<record id="view_purchase_order_view_tree_inherit_sf" model="ir.ui.view">
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<field name="name">purchase.order.tree.inherit.sf</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_view_tree"/>
<field name="arch" type="xml">
<<<<<<< HEAD
<field name="invoice_status" position="after">
=======
<tree position="attributes">
<attribute name="default_order">check_status desc,date_approve asc</attribute>
</tree>
<field name="amount_total" position="after">
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<field name="check_status" widget="badge"
decoration-success="check_status == 'approved'"
decoration-warning="check_status == 'pending'"

View File

@@ -47,7 +47,7 @@
</h1>
<group>
<group>
<field name="customer_id" readonly="1" force_save="1"/>
<field name="customer_id" />
<field name="material_id"/>
<field name="material_model_id"/>
<!-- <field name="process_id"/>-->
@@ -119,6 +119,6 @@
<menuitem sequence="21" name="快速订单" id="menu_quick_easy_order"
action="action_quick_easy_order"
parent="sale.sale_order_menu"
groups="sales_team.group_sale_salesman"/>
groups="sales_team.group_sale_salesman,sf_base.group_sale_salemanager,sf_base.group_sale_director"/>
</data>
</odoo>

View File

@@ -6,53 +6,95 @@
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<form position="attributes">
<attribute name="delete">false</attribute>
<!-- <attribute name="edit">false</attribute>-->
</form>
<field name="name" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="company_type" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="vat" position="after">
<field name="customer_rank" invisible="1"/>
<field name="supplier_rank" invisible="1"/>
</field>
<field name="vat" position="attributes">
<attribute name="required">1</attribute>
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="email" position="replace">
<field name="email" attrs="{'required' : [('customer_rank','>', 0)]}"/>
<field name="email"
attrs="{'required' : [('customer_rank','>', 0)],'readonly': [('id','!=', False)]}"/>
</field>
<field name="mobile" position="attributes">
<attribute name="attrs">{'required': [('phone', '=', False)]}
<attribute name="attrs">{'required': [('phone', '=', False)],'readonly': [('id','!=', False)]}
</attribute>
</field>
<field name="phone" position="attributes">
<attribute name="attrs">{'required': [('mobile', '=', False)]}
<attribute name="attrs">{'required': [('mobile', '=', False)],'readonly': [('id','!=', False)]}
</attribute>
</field>
<field name="street" position="attributes">
<attribute name="attrs">{'required': [('supplier_rank','>', 0)]}
<attribute name="attrs">{'required': [('supplier_rank','>', 0)],'readonly': [('id','!=', False)]}
</attribute>
</field>
<field name="street2" position="attributes">
<attribute name="attrs">{'required': [('supplier_rank','>', 0)]}
<attribute name="attrs">{'required': [('supplier_rank','>', 0)],'readonly': [('id','!=', False)]}
</attribute>
</field>
<field name="city" position="attributes">
<attribute name="attrs">{'required': [('supplier_rank','>', 0)]}
<attribute name="attrs">{'required': [('supplier_rank','>', 0)],'readonly': [('id','!=', False)]}
</attribute>
</field>
<field name="country_id" position="attributes">
<attribute name="attrs">{'required': [('supplier_rank','>', 0)]}
<attribute name="attrs">{'required': [('supplier_rank','>', 0)],'readonly': [('id','!=', False)]}
</attribute>
</field>
<xpath expr="//group[@name='sale']/field[@name='user_id']" position="replace">
<field name="user_id" widget="many2one_avatar_user" context="{'is_sale': True }"
attrs="{'required' : [('customer_rank','>', 0)],'readonly': [('supplier_rank','>', 0)]}"/>
attrs="{'required' : [('customer_rank','>', 0)]}"/>
</xpath>
<field name="category_id" position="attributes">
<attribute name="required">1</attribute>
<!-- <attribute name="attrs">{'required': ['|',('customer_rank','>', 0),('supplier_rank','>', 0)]}</attribute>-->
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="company_registry" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="ref" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="company_id" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="industry_id" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<xpath expr="//field[@name='comment']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<xpath expr="//page[@name='internal_notes']/field[@name='comment']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<field name="zip" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="website" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<field name="lang" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</field>
<xpath expr="//field[@name='child_ids']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_property_form_inherit_sf">
<field name="name">res.partner.property.form.inherit.sf</field>
<record model="ir.ui.view" id="view_partner_property_form_account_inherit_sf">
<field name="name">res.partner.account.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="account.view_partner_property_form"/>
<field name="arch" type="xml">
@@ -61,14 +103,90 @@
widget="many2one_avatar_user"
attrs="{'required' : [('supplier_rank','>', 0)],'readonly': [('customer_rank','>', 0)]}"/>
</field>
<xpath expr="//field[@name='property_account_position_id']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<xpath expr="//field[@name='property_payment_term_id']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<xpath expr="//field[@name='property_supplier_payment_term_id']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<xpath expr="//field[@name='bank_ids']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_property_form_inherit_sf">
<record model="ir.ui.view" id="view_partner_delivery_form_inherit_sf">
<field name="name">res.partner.delivery.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="delivery.view_partner_property_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='property_delivery_carrier_id']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_stock_form_inherit_sf">
<field name="name">res.partner.stock.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="stock.view_partner_stock_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='property_stock_customer']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<xpath expr="//field[@name='property_stock_supplier']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_mrp_subcontracting_form_inherit_sf">
<field name="name">res.partner.mrp.subcontracting.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="mrp_subcontracting.view_partner_mrp_subcontracting_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='property_stock_subcontractor']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_purchase_form_inherit_sf">
<field name="name">res.partner.purchase.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="purchase.view_partner_property_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='receipt_reminder_email']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
<xpath expr="//field[@name='property_purchase_currency_id']" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_team_form_inherit_sf">
<field name="name">res.partner.team.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="sales_team.res_partner_view_team"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='team_id'][2]" position="attributes">
<attribute name="attrs">{'readonly': [('id','!=', False)]}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_partner_tree_inherit_sf">
<field name="name">res.partner.property.form.inherit.sf</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_tree"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="delete">false</attribute>
</tree>
<field name="function" position="before">
<field name="customer_rank" invisible="1"/>
<field name="supplier_rank" invisible="1"/>

View File

@@ -1,11 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="sale_order_view_search_inherit_sf" model="ir.ui.view">
<field name="name">sale.order.search.inherit.sf</field>
<field name="model">sale.order</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
<field name="arch" type="xml">
<filter name="my_sale_orders_filter" position="replace">
<field name="campaign_id"/>
<separator/>
<filter string="报价" name="draft" domain="[('state','in',('draft', 'sent'))]"/>
<filter string="销售订单" name="sales" domain="[('state','in',('sale','done'))]"/>
<separator/>
<filter string="创建日期" name="filter_create_date" date="create_date"/>
</filter>
</field>
</record>
<record id="action_quotations_with_onboarding_inherit_sf" model="ir.actions.act_window">
<field name="name">报价</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="view_id" ref="sale.view_quotation_tree_with_onboarding"/>
<field name="view_mode">tree,kanban,form,calendar,pivot,graph,activity</field>
<field name="search_view_id" ref="sale_order_view_search_inherit_sf"/>
<field name="context">{'search_default_my_quotation': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new quotation, the first step of a new sale!
</p>
<p>
Once the quotation is confirmed by the customer, it becomes a sales order.
<br/>
You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
<!-- <menuitem id="menu_sale_quotations">-->
<!-- <field name="active" eval="False"/>-->
<!-- </menuitem>-->
<menuitem id="menu_sale_quotations_inherit_sf"
action="action_quotations_with_onboarding_inherit_sf"
groups="sales_team.group_sale_salesman,sf_base.group_sale_salemanager,sf_base.group_sale_director"
parent="sale.sale_order_menu"
sequence="11"/>
<record model="ir.ui.view" id="view_sale_order_form_inherit_sf">
<field name="name">sale.order.form.inherit.sf</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="replace">
<field name="user_id" widget="many2one_avatar_user" context="{'is_sale': True }"/>
</xpath>
<xpath expr="//form/header/button[@name='action_quotation_send'][1]" position="replace">
<button name="action_quotation_send" string="通过EMAIL发送" type="object"
class="btn-primary" data-hotkey="g" context="{'validate_analytic': True}"
@@ -33,11 +84,14 @@
<xpath expr="//form/header/button[@name='action_confirm'][2]" position="replace">
<button name="action_confirm" data-hotkey="v"
string="确认" type="object" context="{'validate_analytic': True}"
attrs="{'invisible': ['|','&amp;',('check_status', '!=', 'approved'),('state', 'in', ['draft','cancel']),'&amp;',('check_status', '=', 'approved'),('state', 'in', ['sale','cancel'])]}"/>
attrs="{'invisible': ['|','&amp;',('check_status', '!=', 'approved'),('state', 'in', ['draft','cancel']),'&amp;','&amp;',('check_status', '=', 'approved'),('state', 'in', ['sale','cancel']),('schedule_status', 'not in', False)]}"/>
</xpath>
<xpath expr="//form/header/button[@name='action_cancel']" position="attributes">
<attribute name="attrs">{'invisible': ['|',('check_status', '!=', 'approved'),('schedule_status',
'not in', ['to schedule',False])]}
<attribute name="attrs">{'invisible': ['|','&amp;',('state', 'in',
['cancel','draft']),('check_status',
'in',
[False,'approved']),'&amp;','&amp;',('check_status', '=', 'approved'),('state', 'in',
['sale','cancel','draft']),('schedule_status', 'not in', False)]}
</attribute>
</xpath>
<xpath expr="//form/header/button[@name='action_draft']" position="attributes">
@@ -58,12 +112,11 @@
<field name="deadline_of_delivery" attrs="{'readonly': [('state', 'in', ('sale','cancel'))]}"/>
<field name="payments_way" attrs="{'readonly': [('state', 'in', ('sale','cancel'))]}"/>
<field name="pay_way" attrs="{'readonly': [('state', 'in', ('sale','cancel'))]}"/>
<field name="schedule_status" readonly="1"
attrs="{'invisible': [('state', 'in', ('sale','cancel'))]}"/>
<field name="schedule_status" readonly="1"/>
</field>
<xpath expr="//field[@name='order_line']/tree/field[@name='name']" position="before">
<field name="model_glb_file" widget="Viewer3D" optional="show"
string="模型文件"/>
string="模型文件" attrs="{'readonly': [('state', 'in', ['draft'])]}"/>
</xpath>
<xpath expr="//field[@name='order_line']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ['cancel','sale'])]}</attribute>
@@ -120,7 +173,6 @@
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale_management.sale_order_form_quote"/>
<field name="arch" type="xml">
<field name="date_order" position="attributes">
<attribute name="string">下单日期</attribute>
</field>
@@ -142,6 +194,7 @@
<field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="default_order">check_status desc,create_date asc</attribute>
<attribute name="delete">False</attribute>
</tree>
<field name="name" position="attributes">
@@ -165,6 +218,7 @@
<field name="inherit_id" ref="sale.view_order_tree"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="default_order">schedule_status desc,date_order asc</attribute>
<attribute name="create">False</attribute>
</tree>
<field name="name" position="attributes">
@@ -186,6 +240,9 @@
<field name="model">product.template</field>
<field name="inherit_id" ref="sale.product_template_form_view"/>
<field name="arch" type="xml">
<form position="attributes">
<attribute name="delete">False</attribute>
</form>
<field name="categ_id" position="replace">
<field name='categ_id' invisible="1"/>
</field>