+ <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="view_id" eval="False"/> <!-- Force empty -->
+ <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="view_id" eval="False"/> <!-- Force empty -->
+ <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>
+ <field name="active" position="after">
+ <field name="ean13" attrs="{'invisible': [('product_variant_count', '>', 1)]}"/>
+ <field name="default_code" attrs="{'invisible': [('product_variant_count', '>', 1)]}"/>
+ </field>
+ <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="List of Variants" name="product_variant_count" widget="statinfo" />
+ </button>
+ </div>
+ <field name="attribute_line_ids" widget="one2many_list" context="{'show_attribute': False}">
+ <tree string="Variants" editable="bottom">
+ <field name="attribute_id"/>
+ <field name="value_ids" widget="many2many_tags" options="{'no_create_edit': True}" 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>
+ <field name="arch" type="xml">
+ <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">
+ <a type="open"><img t-att-src="kanban_image('product.template', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
+ <div class="oe_kanban_details">
+ <h4>
+ <a type="open">
+ <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>
+ </ul>
+ </div>
+ </div>
+ </t>
+ </templates>
+ </kanban>
+ </field>
+ </record>
+
+ <record id="product_template_action" model="ir.actions.act_window">
+ <field name="name">Products</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">product.template</field>
+ <field name="view_mode">kanban,tree,form</field>
+ <field name="view_type">form</field>
+ <field name="view_id" ref="product_template_kanban_view"/>
+ <field name="context">{"search_default_filter_to_sell":1}</field>
+ </record>
+
+ <menuitem action="product_template_action"
+ id="menu_product_template_action"
+ parent="base.menu_product" sequence="1" />
+
+ <!-- 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_product_tree_view" model="ir.ui.view">
+ <field name="name">product.product.tree</field>
+ <field name="model">product.product</field>
+ <field eval="7" name="priority"/>
+ <field name="arch" type="xml">
+
+ <tree string="Product Variants">
+ <field name="default_code"/>
+ <field name="name"/>
+ <field name="attribute_value_ids" widget="many2many_tags"/>
+ <field name="lst_price"/>
+ <field name="price" invisible="not context.get('pricelist',False)"/>
+ <field name="uom_id"/>
+ <field name="ean13"/>
+ <field name="state" invisible="1"/>
+ <field name="product_tmpl_id" invisible="1"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="product_normal_form_view" model="ir.ui.view">
+ <field name="name">product.product.form</field>
+ <field name="model">product.product</field>
+ <field name="mode">primary</field>
+ <field eval="7" name="priority"/>
+ <field name="inherit_id" ref="product.product_template_form_view"/>
+ <field name="arch" type="xml">
+ <form position="attributes">
+ <attribute name="string">Product Variant</attribute>
+ </form>
+ <field name="active" position="after">
+ <field name="ean13"/>
+ <field name="default_code"/>
+ </field>
+ <field name="list_price" position="attributes">
+ <attribute name="name">lst_price</attribute>
+ </field>
+ <field name="name" position="replace">
+ <field name="name" attrs="{'invisible': [('id', '!=', False)]}"/>
+ <field name="product_tmpl_id" class="oe_inline" readonly="1" attrs="{'invisible': [('id', '=', False)], 'required': [('id', '!=', False)]}"/>
+ </field>
+ <xpath expr="//div[@class='oe_title']" position="inside">
+ <field name="attribute_value_ids" widget="many2many_tags"/>
+ </xpath>
+ </field>
+ </record>
+
+ <record id="product_kanban_view" model="ir.ui.view">