<search string="Search Bill Of Material">
<field name="name" string="Bill Of Material" filter_domain="['|',('name','ilike',self),('code','ilike',self)]"/>
<field name="bom_line_ids" string="Components"/>
- <field name="product_tmpl_id"/>
+ <field name="product_tmpl_id" string="Product"/>
+ <field name="product_id" string="Variant"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_tmpl_id'}"/>
id="menu_mrp_production_order_action" name="Order Planning"
parent="menu_mrp_planning" sequence="1"/>
- <record model="ir.actions.act_window" id="product_open_bom">
+ <record model="ir.actions.act_window" id="template_open_bom">
<field name="context">{'default_product_tmpl_id': active_id, 'search_default_product_tmpl_id': active_id}</field>
<field name="name">Bill of Materials</field>
<field name="res_model">mrp.bom</field>
<field name="view_type">form</field>
</record>
+ <record model="ir.actions.act_window" id="product_open_bom">
+ <field name="context">{'default_product_id': active_id, 'search_default_product_id': active_id}</field>
+ <field name="name">Bill of Materials</field>
+ <field name="res_model">mrp.bom</field>
+ <field name="view_type">form</field>
+ </record>
+
<record id="act_product_mrp_production" model="ir.actions.act_window">
<field name="context">{'search_default_product_id': [active_id]}</field>
<field name="name">Manufacturing Orders</field>
<record model="ir.ui.view" id="product_template_form_view_bom_button">
<field name="name">product.template.procurement</field>
<field name="model">product.template</field>
- <field name="inherit_id" ref="product.product_template_form_view"/>
+ <field name="inherit_id" ref="product.product_template_only_form_view"/>
+ <field name="arch" type="xml">
+ <div name="buttons" position="inside">
+ <button class="oe_inline oe_stat_button" name="%(template_open_bom)d" type="action"
+ groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}" icon="fa-flask">
+ <field string="Bill of Materials" name="bom_count" widget="statinfo" />
+ </button>
+ </div>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="product_product_form_view_bom_button">
+ <field name="name">product.product.procurement</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<div name="buttons" position="inside">
- <button class="oe_inline oe_stat_button" name="%(product_open_bom)d" type="action"
+ <button class="oe_inline oe_stat_button" name="%(product_open_bom)d" type="action"
groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}" icon="fa-flask">
<field string="Bill of Materials" name="bom_count" widget="statinfo" />
</button>
</field>
</record>
+ <!-- base structure of product.template, common with product.product -->
<record id="product_template_form_view" model="ir.ui.view">
- <field name="name">product.template.product.form</field>
+ <field name="name">product.template.common.form</field>
<field name="model">product.template</field>
<field name="arch" type="xml">
<form string="Product">
<separator string="Description for Quotations"/>
<field name="description_sale" placeholder="note to be displayed on quotations..."/>
</page>
- <page name="variants" string="Variants">
- <field name="attribute_line_ids" widget="one2many_list">
- <tree string="Variants" editable="bottom">
- <field name="attribute_id"/>
- <field name="value_ids" widget="many2many_tags" domain="[('attribute_id', '=', attribute_id)]" context="{'default_attribute_id': attribute_id}"/>
- </tree>
- </field>
- </page>
</notebook>
</sheet>
<div class="oe_chatter">
</field>
</record>
+ <record id="product_search_form_view" model="ir.ui.view">
+ <field name="name">product.product.search</field>
+ <field name="model">product.product</field>
+ <field name="mode">primary</field>
+ <field name="inherit_id" ref="product.product_template_search_view"/>
+ <field name="arch" type="xml">
+ <field name="name" position="replace">
+ <field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
+ </field>
+ <field name="product_variant_ids" position="replace">
+ <field name="attribute_value_ids"/>
+ </field>
+ <field name="name" position="after">
+ <field name="product_tmpl_id" string="Product Template"/>
+ </field>
+ <xpath expr="//group[@string='Group by...']" position="inside">
+ <filter string='Product Template' name="template_id" domain="[]" context="{'group_by' : 'product_tmpl_id'}"/>
+ </xpath>
+ </field>
+ </record>
+
+ <!-- variants -->
+
+ <record id="variants_template_tree_view" model="ir.ui.view">
+ <field name="name">variants.template.tree</field>
+ <field name="model">product.attribute.value</field>
+ <field name="arch" type="xml">
+ <tree string="Variant Values" editable="top">
+ <field name="sequence" widget="handle"/>
+ <field name="attribute_id"/>
+ <field name="name"/>
+ <field name="price_extra"/>
+ </tree>
+ </field>
+ </record>
+ <record id="variants_template_action" model="ir.actions.act_window">
+ <field name="name">Variant Values</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">product.attribute.value</field>
+ <field name="view_mode">tree</field>
+ <field name="view_type">form</field>
+ <field name="domain">[('product_ids.product_tmpl_id', '=', active_id)]</field>
+ <field name="context">{'default_product_tmpl_id': active_id}</field>
+ </record>
+
+ <record id="product_normal_action" model="ir.actions.act_window">
+ <field name="name">Product Variants</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">product.product</field>
+ <field name="view_mode">tree,form,kanban</field>
+ <field name="view_type">form</field>
+ <field name="search_view_id" ref="product_search_form_view"/>
+ <field name="help" type="html">
+ <p class="oe_view_nocontent_create">
+ Click to define a new product.
+ </p><p>
+ You must define a product for everything you buy or sell,
+ whether it's a physical product, a consumable or service.
+ </p>
+ </field>
+ </record>
+ <record id="product_variant_action" model="ir.actions.act_window">
+ <field name="name">Product Variants</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">product.product</field>
+ <field name="view_mode">tree,form,kanban</field>
+ <field name="view_type">form</field>
+ <field name="context">{'search_default_product_tmpl_id': [active_id], 'default_product_tmpl_id': active_id}</field>
+ <field name="search_view_id" ref="product_search_form_view"/>
+ <field name="help" type="html">
+ <p class="oe_view_nocontent_create">
+ Click to define a new product.
+ </p><p>
+ You must define a product for everything you buy or sell,
+ whether it's a physical product, a consumable or service.
+ </p>
+ </field>
+ </record>
+
+
+ <!-- view specific to product.template -->
+ <record id="product_template_only_form_view" model="ir.ui.view">
+ <field name="name">product.template.product.form</field>
+ <field name="model">product.template</field>
+ <field name="mode">primary</field>
+ <field name="priority" eval="8" />
+ <field name="inherit_id" ref="product.product_template_form_view"/>
+ <field name="arch" type="xml">
+ <xpath expr="//form" position="attributes">
+ <attribute name="name">Product Template</attribute>
+ </xpath>
+ <xpath expr="//page[@string='Sales']" position="after">
+ <page name="variants" string="Variants">
+ <div class="oe_right">
+ <button class="oe_inline oe_stat_button" string="Variant Prices" name="%(variants_template_action)d" type="action" icon="fa-strikethrough"/>
+ <button class="oe_inline oe_stat_button" name="%(product.product_variant_action)d" type="action" icon="fa-sitemap">
+ <field string="Variants" name="product_variant_count" widget="statinfo" />
+ </button>
+ </div>
+ <field name="attribute_line_ids" widget="one2many_list">
+ <tree string="Variants" editable="bottom">
+ <field name="attribute_id"/>
+ <field name="value_ids" widget="many2many_tags" domain="[('attribute_id', '=', attribute_id)]" context="{'default_attribute_id': attribute_id}"/>
+ </tree>
+ </field>
+ </page>
+ </xpath>
+ </field>
+ </record>
+
<record id="product_template_kanban_view" model="ir.ui.view">
<field name="name">Product.template.product.kanban</field>
<field name="model">product.template</field>
<kanban>
<field name="image_small"/>
<field name="lst_price"/>
+ <field name="is_product_variant"/>
+ <field name="product_variant_count"/>
+ <field name="product_variant_ids"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_vignette oe_semantic_html_override">
<field name="name"/>
</a>
</h4>
+ <a name="%(product.product_variant_action)d" type="action">
+ <t t-esc="record.product_variant_count.value"/> Variants
+ </a>
<div name="tags"/>
<ul>
<li>Price: <field name="lst_price"></field></li>
id="menu_product_template_action"
parent="base.menu_product" sequence="1" />
- <!-- variants -->
-
- <record id="variants_template_tree_view" model="ir.ui.view">
- <field name="name">variants.template.tree</field>
- <field name="model">product.attribute.value</field>
- <field name="priority" eval="2"/>
- <field name="arch" type="xml">
- <tree string="Variant Values" editable="top">
- <field name="sequence" widget="handle"/>
- <field name="attribute_id"/>
- <field name="name"/>
- <field name="price_extra"/>
- </tree>
- </field>
- </record>
- <record id="variants_template_action" model="ir.actions.act_window">
- <field name="name">Variant Values</field>
- <field name="type">ir.actions.act_window</field>
- <field name="res_model">product.attribute.value</field>
- <field name="view_mode">tree</field>
- <field name="view_type">form</field>
- <field name="domain">[('product_ids.product_tmpl_id', '=', active_id)]</field>
- <field name="context">{'default_product_tmpl_id': active_id}</field>
- </record>
-
<!-- product product -->
<menuitem id="prod_config_main" name="Product Categories & Attributes" parent="base.menu_base_config" sequence="70" groups="base.group_no_one"/>
- <record id="product_search_form_view" model="ir.ui.view">
- <field name="name">product.product.search</field>
- <field name="model">product.product</field>
- <field name="mode">primary</field>
- <field name="inherit_id" ref="product.product_template_search_view"/>
- <field name="arch" type="xml">
- <field name="name" position="replace">
- <field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
- </field>
- <field name="product_variant_ids" position="replace">
- <field name="attribute_value_ids"/>
- </field>
- <field name="name" position="after">
- <field name="product_tmpl_id" string="Product Template"/>
- </field>
- <xpath expr="//group[@string='Group by...']" position="inside">
- <filter string='Product Template' name="template_id" domain="[]" context="{'group_by' : 'product_tmpl_id'}"/>
- </xpath>
- </field>
- </record>
-
<record id="product_product_tree_view" model="ir.ui.view">
<field name="name">product.product.tree</field>
<field name="model">product.product</field>
<xpath expr="//div[@class='oe_title']" position="inside">
<field name="attribute_value_ids" widget="many2many_tags"/>
</xpath>
- <page name="variants" position="replace">
- </page>
</field>
</record>
<!-- -->
- <record id="product_normal_action" model="ir.actions.act_window">
- <field name="name">Product Variants</field>
- <field name="type">ir.actions.act_window</field>
- <field name="res_model">product.product</field>
- <field name="view_mode">tree,form,kanban</field>
- <field name="view_type">form</field>
- <field name="search_view_id" ref="product_search_form_view"/>
- <field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
- </p><p>
- You must define a product for everything you buy or sell,
- whether it's a physical product, a consumable or service.
- </p>
- </field>
- </record>
-
- <!-- -->
-
- <record id="product_variant_action" model="ir.actions.act_window">
- <field name="name">Product Variants</field>
- <field name="type">ir.actions.act_window</field>
- <field name="res_model">product.product</field>
- <field name="view_mode">tree,form,kanban</field>
- <field name="view_type">form</field>
- <field name="context">{'search_default_product_tmpl_id': [active_id], 'default_product_tmpl_id': active_id}</field>
- <field name="search_view_id" ref="product_search_form_view"/>
- <field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
- </p><p>
- You must define a product for everything you buy or sell,
- whether it's a physical product, a consumable or service.
- </p>
- </field>
- </record>
-
- <record id="product_template_form_view_variant_button" model="ir.ui.view">
- <field name="name">product.template.form</field>
- <field name="model">product.template</field>
- <field name="inherit_id" ref="product.product_template_form_view"/>
- <field name="arch" type="xml">
- <field name="attribute_line_ids" position="before">
- <div class="oe_right">
- <button class="oe_inline oe_stat_button" string="Variant Prices" name="%(product.variants_template_action)d" type="action" icon="fa-strikethrough"/>
- <button class="oe_inline oe_stat_button" name="%(product.product_variant_action)d" type="action" icon="fa-sitemap">
- <field string="Variants" name="product_variant_count" widget="statinfo" />
- </button>
- </div>
- </field>
- </field>
- </record>
-
- <record id="product_template_kanban_view_variant_button" model="ir.ui.view">
- <field name="name">product.template.form</field>
- <field name="model">product.template</field>
- <field name="inherit_id" ref="product.product_template_kanban_view"/>
- <field name="arch" type="xml">
- <field name="lst_price" position="after">
- <field name="is_product_variant"/>
- <field name="product_variant_count"/>
- <field name="product_variant_ids"/>
- </field>
- <h4 position="after">
- <a name="%(product.product_variant_action)d" type="action">
- <t t-esc="record.product_variant_count.value"/> Variants
- </a>
- </h4>
- </field>
- </record>
-
- <!-- -->
-
<record id="attribute_tree_view" model="ir.ui.view">
<field name="name">product.attribute.tree</field>
<field name="model">product.attribute</field>