<field name="model">product.template</field>
<field name="arch" type="xml">
<search string="Product">
- <field name="name" string="Product"/>
- <filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
+ <field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
+ <filter string="Services" name="services" domain="[('type','=','service')]"/>
<filter string="Consumable" name="consumable" icon="terp-accessories-archiver" domain="[('type','=','consu')]" help="Consumable products"/>
<separator/>
<filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<field name="arch" type="xml">
<form string="Product">
<field name="is_product_variant" invisible="1"/>
+ <field name='product_variant_count' invisible='1'/>
<sheet>
<field name="id" invisible="True"/>
<div class="oe_right oe_button_box" style="width: 300px;" name="buttons">
<div class="oe_title" style="width: 390px;">
<label class="oe_edit_only" for="name" string="Product Name"/>
<h1><field name="name" class="oe_inline"/></h1>
- </div>
- <div class="oe_left" name="options" groups="base.group_user">
- <div>
- <field name="sale_ok"/>
- <label for="sale_ok"/>
+ <div name="options" groups="base.group_user">
+ <div>
+ <field name="sale_ok"/>
+ <label for="sale_ok"/>
+ </div>
</div>
</div>
</div>
</group>
<group>
<field name="active"/>
- <field name="ean13"/>
- <field name="default_code"/>
</group>
</group>
<group colspan="4">
<field digits="(14, 3)" name="weight_net"/>
</group>
</group>
+ <group name="packaging" string="Packaging" attrs="{'invisible':[('type','=','service')]}" groups="product.group_stock_packaging" colspan="4">
+ <field name="packaging_ids" string="Configurations" context="{'tree_view_ref':'product.product_packaging_tree_view_product', 'form_view_ref': 'product.product_packaging_form_view_without_product'}"/>
+ </group>
</page>
<page string="Sales" attrs="{'invisible':[('sale_ok','=',False)]}" name="sales">
<group name="sale">
<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>
<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.
+ You must define a product for everything you sell, whether it's
+ a physical product, a consumable or a service you offer to
+ customers.
+ </p><p>
+ The product form contains information to simplify the sale
+ process: price, notes in the quotation, accounting data,
+ procurement methods, etc.
</p>
</field>
</record>
<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.
+ You must define a product for everything you sell, whether it's
+ a physical product, a consumable or a service you offer to
+ customers.
+ </p><p>
+ The product form contains information to simplify the sale
+ process: price, notes in the quotation, accounting data,
+ procurement methods, etc.
</p>
</field>
</record>
<xpath expr="//form" position="attributes">
<attribute name="name">Product Template</attribute>
</xpath>
+ <field name="active" position="after">
+ <field name="barcode" 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">
<field string="List of Variants" name="product_variant_count" widget="statinfo" />
</button>
</div>
- <field name="attribute_line_ids" widget="one2many_list">
+ <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}"/>
<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>
+ <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 sell, whether it's a physical product, a consumable or a service you offer to customers.
+ </p><p>
+ The product form contains information to simplify the sale process: price, notes in the quotation, accounting data, procurement methods, etc.
+ </p>
+ </field>
</record>
<menuitem action="product_template_action"
<!-- product product -->
- <menuitem id="prod_config_main" name="Product Categories & Attributes" parent="base.menu_base_config" sequence="70" groups="base.group_no_one"/>
+ <menuitem id="prod_config_main" name="Products" parent="base.menu_base_config" sequence="2" groups="base.group_no_one"/>
<record id="product_product_tree_view" model="ir.ui.view">
<field name="name">product.product.tree</field>
<field name="lst_price"/>
<field name="price" invisible="not context.get('pricelist',False)"/>
<field name="uom_id"/>
- <field name="ean13"/>
+ <field name="barcode"/>
<field name="state" invisible="1"/>
<field name="product_tmpl_id" invisible="1"/>
</tree>
<form position="attributes">
<attribute name="string">Product Variant</attribute>
</form>
+ <field name="active" position="after">
+ <field name="barcode"/>
+ <field name="default_code"/>
+ </field>
<field name="list_price" position="attributes">
<attribute name="name">lst_price</attribute>
</field>
<menuitem action="attribute_action"
id="menu_attribute_action"
- parent="product.prod_config_main" sequence="9" />
+ parent="product.prod_config_main" sequence="4" />
<record id="variants_tree_view" model="ir.ui.view">
<field name="name">product.attribute.value.tree</field>
<menuitem action="variants_action"
id="menu_variants_action"
- parent="product.prod_config_main" sequence="10" />
+ parent="product.prod_config_main" sequence="5" />
<!-- -->
<field name="model">product.category</field>
<field name="arch" type="xml">
<form string="Product Categories">
- <sheet>
- <div class="oe_title">
- <label for="name" class="oe_edit_only"/>
- <h1>
- <field name="name"/>
- </h1>
- </div>
- <group>
- <group name="parent" col="4">
- <field name="parent_id"/>
- <field name="type"/>
- </group>
+ <div class="oe_title">
+ <label for="name" class="oe_edit_only"/>
+ <h1>
+ <field name="name"/>
+ </h1>
+ </div>
+ <group>
+ <group name="parent" col="4">
+ <field name="parent_id"/>
+ <field name="type"/>
</group>
- </sheet>
+ </group>
</form>
</field>
</record>
parent="base.menu_product"
sequence="30" groups="base.group_no_one"/>
<record id="product_category_action_form" model="ir.actions.act_window">
- <field name="name">Product Categories</field>
+ <field name="name">Internal Categories</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.category</field>
<field name="view_type">form</field>
<field name="uom_type" on_change="onchange_type(uom_type)"/>
<label for="factor"/>
<div>
- <field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/>
- <field name="factor_inv" attrs="{'invisible':[('uom_type','!=','bigger')]}"/>
+ <field name="factor"
+ digits="[42,5]"
+ attrs="{'invisible':[('uom_type','!=','smaller')],
+ 'readonly':[('uom_type','=','bigger')]}"/>
+ <field name="factor_inv"
+ digits="[42,5]"
+ attrs="{'invisible':[('uom_type','!=','bigger')],
+ 'readonly':[('uom_type','!=','bigger')]}"/>
<p attrs="{'invisible':[('uom_type','!=','smaller')]}" class="oe_grey">
e.g: 1 * (reference unit) = ratio * (this unit)
</p>
</group>
<group>
<field name="active"/>
- <field name="rounding"/>
+ <field name="rounding" digits="[42, 5]"/>
</group>
</group>
</form>
</field>
</record>
<menuitem id="next_id_16" name="Units of Measure" parent="prod_config_main" sequence="30" groups="product.group_uom"/>
- <menuitem action="product_uom_form_action" id="menu_product_uom_form_action" parent="base.menu_base_config" sequence="30" groups="product.group_uom"/>
+ <menuitem action="product_uom_form_action" id="menu_product_uom_form_action" parent="product.prod_config_main" sequence="6" groups="product.group_uom"/>
<record id="product_uom_categ_form_view" model="ir.ui.view">
<field name="name">product.uom.categ.form</field>
</p>
</field>
</record>
- <menuitem action="product_uom_categ_form_action" id="menu_product_uom_categ_form_action" parent="base.menu_base_config" sequence="25" groups="base.group_no_one"/>
+ <menuitem action="product_uom_categ_form_action" id="menu_product_uom_categ_form_action" parent="product.prod_config_main" sequence="7" groups="base.group_no_one"/>
<record id="product_ul_form_view" model="ir.ui.view">
<field name="name">product.ul.form.view</field>
</field>
</record>
<menuitem
- action="product_ul_form_action" groups="product.group_stock_packaging" id="menu_product_ul_form_action" parent="prod_config_main" sequence="5"/>
+ action="product_ul_form_action" groups="product.group_stock_packaging" id="menu_product_ul_form_action" parent="prod_config_main" sequence="3"/>
<record id="product_packaging_tree_view" model="ir.ui.view">
<field name="name">product.packaging.tree.view</field>
<field name="arch" type="xml">
<tree string="Packaging">
<field name="sequence" widget="handle"/>
- <field name="ean"/>
+ <field name="product_tmpl_id"/>
+ <field name="barcode"/>
+ <field name="qty"/>
+ <field name="ul"/>
+ <field name="ul_container"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="product_packaging_tree_view_product" model="ir.ui.view">
+ <field name="name">product.packaging.tree.view.product</field>
+ <field name="model">product.packaging</field>
+ <field name="arch" type="xml">
+ <tree string="Packaging">
<field name="qty"/>
<field name="ul"/>
+ <field name="ul_qty"/>
+ <field name="rows"/>
<field name="ul_container"/>
</tree>
</field>
<group col="4">
<field name="product_tmpl_id"/>
<newline/>
- <field name="ean"/>
+ <field name="barcode"/>
+ <field name="sequence" invisible="1"/>
+ <newline/>
+ <field name="qty"/>
+ <field name="ul"/>
+ <separator colspan="4" string="Palletization"/>
+ <field name="ul_qty"/>
+ <field name="rows"/>
+ <field name="ul_container"/>
+ <field name="weight"/>
+ <separator colspan="4" string="Other Info"/>
+ <field colspan="4" name="name"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="product_packaging_form_view_without_product" model="ir.ui.view">
+ <field name="name">product.packaging.form.view.without.product</field>
+ <field name="model">product.packaging</field>
+ <field name="arch" type="xml">
+ <form string="Packaging">
+ <group col="4">
+ <field name="barcode"/>
<field name="sequence" invisible="1"/>
<newline/>
<field name="qty"/>