1 <?xml version="1.0" encoding="utf-8"?>
4 <menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9"/>
8 <record id="product_template_search_view" model="ir.ui.view">
9 <field name="name">product.template.search</field>
10 <field name="model">product.template</field>
11 <field name="arch" type="xml">
12 <search string="Product">
13 <field name="name" string="Product"/>
14 <filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
15 <filter string="Consumable" name="consumable" icon="terp-accessories-archiver" domain="[('type','=','consu')]" help="Consumable products"/>
17 <filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
18 <field name="categ_id"/>
19 <field string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.attribute_value_ids.name','ilike',self)]"/>
20 <field name="company_id"/>
21 <field name="pricelist_id" widget="selection" context="{'pricelist': self}" filter_domain="[]" groups="product.group_sale_pricelist"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
22 <group expand='0' string='Group by...'>
23 <filter string='Category' domain="[]" context="{'group_by' : 'categ_id'}"/>
24 <filter string='Default Unit of Measure' icon="terp-mrp" domain="[]" context="{'group_by' : 'uom_id'}"/>
25 <filter string='Type' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'type'}"/>
31 <record id="product_template_tree_view" model="ir.ui.view">
32 <field name="name">product.template.product.tree</field>
33 <field name="model">product.template</field>
34 <field name="arch" type="xml">
35 <tree string="Product">
37 <field name="categ_id"/>
40 <field name="uom_id" invisible="1"/>
45 <!-- base structure of product.template, common with product.product -->
46 <record id="product_template_form_view" model="ir.ui.view">
47 <field name="name">product.template.common.form</field>
48 <field name="model">product.template</field>
49 <field name="mode">primary</field>
50 <field name="arch" type="xml">
51 <form string="Product">
52 <field name="is_product_variant" invisible="1"/>
54 <field name="id" invisible="True"/>
55 <div class="oe_right oe_button_box" style="width: 300px;" name="buttons">
57 <div class="oe_left" style="width: 500px;">
58 <field name="image_medium" widget="image" class="oe_avatar oe_left"/>
59 <div class="oe_title" style="width: 390px;">
60 <label class="oe_edit_only" for="name" string="Product Name"/>
61 <h1><field name="name" class="oe_inline"/></h1>
63 <div class="oe_left" name="options" groups="base.group_user">
65 <field name="sale_ok"/>
66 <label for="sale_ok"/>
71 <page string="Information">
75 <field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" groups="product.group_uom"/>
76 <field name="list_price"/>
79 <field name="active"/>
81 <field name="default_code"/>
85 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
87 <field name="description" placeholder="describe the product characteristics..."/>
89 <page string="Procurements" groups="base.group_user">
90 <group name="procurement">
91 <group name="general">
92 <field name="standard_price"/>
94 <group name="procurement_uom" groups="product.group_uom" string="Purchase">
95 <field name="uom_po_id"/>
98 <separator string="Suppliers"/>
99 <field name="seller_ids"/>
100 <separator string="Description for Suppliers"/>
101 <field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
103 <page string="Inventory">
104 <group name="inventory">
105 <group name="status" string="Status">
106 <field name="state"/>
107 <field name="product_manager"/>
109 <group name="weight" string="Weights" attrs="{'invisible':[('type','=','service')]}">
110 <field digits="(14, 3)" name="volume"/>
111 <field digits="(14, 3)" name="weight"/>
112 <field digits="(14, 3)" name="weight_net"/>
116 <page string="Sales" attrs="{'invisible':[('sale_ok','=',False)]}" name="sales">
118 <group name="sale_condition" string="Sale Conditions" colspan="3">
119 <label for="warranty"/>
121 <field name="warranty" class="oe_inline"/> months
124 <group groups="product.group_uos" string="Unit of Measure">
125 <field name="uos_id"/>
126 <field name="uos_coeff"/>
127 <field name="mes_type"/>
130 <group name="website_and_pos" col="2">
132 <separator string="Description for Quotations"/>
133 <field name="description_sale" placeholder="note to be displayed on quotations..."/>
137 <div class="oe_chatter">
138 <field name="message_follower_ids" widget="mail_followers"/>
139 <field name="message_ids" widget="mail_thread"/>
145 <record id="product_search_form_view" model="ir.ui.view">
146 <field name="name">product.product.search</field>
147 <field name="model">product.product</field>
148 <field name="mode">primary</field>
149 <field name="inherit_id" ref="product.product_template_search_view"/>
150 <field name="arch" type="xml">
151 <field name="name" position="replace">
152 <field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
154 <field name="product_variant_ids" position="replace">
155 <field name="attribute_value_ids"/>
157 <field name="name" position="after">
158 <field name="product_tmpl_id" string="Product Template"/>
160 <xpath expr="//group[@string='Group by...']" position="inside">
161 <filter string='Product Template' name="template_id" domain="[]" context="{'group_by' : 'product_tmpl_id'}"/>
168 <record id="variants_template_tree_view" model="ir.ui.view">
169 <field name="name">variants.template.tree</field>
170 <field name="model">product.attribute.value</field>
171 <field name="arch" type="xml">
172 <tree string="Variant Values" editable="top">
173 <field name="sequence" widget="handle"/>
174 <field name="attribute_id"/>
176 <field name="price_extra"/>
180 <record id="variants_template_action" model="ir.actions.act_window">
181 <field name="name">Variant Values</field>
182 <field name="type">ir.actions.act_window</field>
183 <field name="res_model">product.attribute.value</field>
184 <field name="view_mode">tree</field>
185 <field name="view_type">form</field>
186 <field name="view_id" ref="variants_template_tree_view"/>
187 <field name="domain">[('product_ids.product_tmpl_id', '=', active_id)]</field>
188 <field name="context">{'default_product_tmpl_id': active_id}</field>
191 <record id="product_normal_action" model="ir.actions.act_window">
192 <field name="name">Product Variants</field>
193 <field name="type">ir.actions.act_window</field>
194 <field name="res_model">product.product</field>
195 <field name="view_mode">tree,form,kanban</field>
196 <field name="view_type">form</field>
197 <field name="search_view_id" ref="product_search_form_view"/>
198 <field name="view_id" eval="False"/> <!-- Force empty -->
199 <field name="help" type="html">
200 <p class="oe_view_nocontent_create">
201 Click to define a new product.
203 You must define a product for everything you buy or sell,
204 whether it's a physical product, a consumable or service.
208 <record id="product_variant_action" model="ir.actions.act_window">
209 <field name="name">Product Variants</field>
210 <field name="type">ir.actions.act_window</field>
211 <field name="res_model">product.product</field>
212 <field name="view_mode">tree,form,kanban</field>
213 <field name="view_type">form</field>
214 <field name="context">{'search_default_product_tmpl_id': [active_id], 'default_product_tmpl_id': active_id}</field>
215 <field name="search_view_id" ref="product_search_form_view"/>
216 <field name="help" type="html">
217 <p class="oe_view_nocontent_create">
218 Click to define a new product.
220 You must define a product for everything you buy or sell,
221 whether it's a physical product, a consumable or service.
227 <!-- view specific to product.template -->
228 <record id="product_template_only_form_view" model="ir.ui.view">
229 <field name="name">product.template.product.form</field>
230 <field name="model">product.template</field>
231 <field name="mode">primary</field>
232 <field name="priority" eval="8" />
233 <field name="inherit_id" ref="product.product_template_form_view"/>
234 <field name="arch" type="xml">
235 <xpath expr="//form" position="attributes">
236 <attribute name="name">Product Template</attribute>
238 <xpath expr="//page[@string='Sales']" position="after">
239 <page name="variants" string="Variants">
240 <div class="oe_right">
241 <button class="oe_inline oe_stat_button" string="Variant Prices" name="%(variants_template_action)d" type="action" icon="fa-strikethrough"/>
242 <button class="oe_inline oe_stat_button" name="%(product.product_variant_action)d" type="action" icon="fa-sitemap">
243 <field string="List of Variants" name="product_variant_count" widget="statinfo" />
246 <field name="attribute_line_ids" widget="one2many_list">
247 <tree string="Variants" editable="bottom">
248 <field name="attribute_id"/>
249 <field name="value_ids" widget="many2many_tags" options="{'no_create_edit': True}" domain="[('attribute_id', '=', attribute_id)]" context="{'default_attribute_id': attribute_id}"/>
257 <record id="product_template_kanban_view" model="ir.ui.view">
258 <field name="name">Product.template.product.kanban</field>
259 <field name="model">product.template</field>
260 <field name="arch" type="xml">
262 <field name="image_small"/>
263 <field name="lst_price"/>
264 <field name="is_product_variant"/>
265 <field name="product_variant_count"/>
266 <field name="product_variant_ids"/>
268 <t t-name="kanban-box">
269 <div class="oe_kanban_vignette oe_semantic_html_override">
270 <a type="open"><img t-att-src="kanban_image('product.template', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
271 <div class="oe_kanban_details">
277 <a name="%(product.product_variant_action)d" type="action">
278 <t t-esc="record.product_variant_count.value"/> Variants
282 <li>Price: <field name="lst_price"></field></li>
292 <record id="product_template_action" model="ir.actions.act_window">
293 <field name="name">Products</field>
294 <field name="type">ir.actions.act_window</field>
295 <field name="res_model">product.template</field>
296 <field name="view_mode">kanban,tree,form</field>
297 <field name="view_type">form</field>
298 <field name="view_id" ref="product_template_kanban_view"/>
301 <menuitem action="product_template_action"
302 id="menu_product_template_action"
303 parent="base.menu_product" sequence="1" />
305 <!-- product product -->
307 <menuitem id="prod_config_main" name="Product Categories & Attributes" parent="base.menu_base_config" sequence="70" groups="base.group_no_one"/>
309 <record id="product_product_tree_view" model="ir.ui.view">
310 <field name="name">product.product.tree</field>
311 <field name="model">product.product</field>
312 <field eval="7" name="priority"/>
313 <field name="arch" type="xml">
315 <tree string="Product Variants">
316 <field name="default_code"/>
318 <field name="attribute_value_ids" widget="many2many_tags"/>
319 <field name="lst_price"/>
320 <field name="price" invisible="not context.get('pricelist',False)"/>
321 <field name="uom_id"/>
322 <field name="ean13"/>
323 <field name="state" invisible="1"/>
324 <field name="product_tmpl_id" invisible="1"/>
329 <record id="product_normal_form_view" model="ir.ui.view">
330 <field name="name">product.product.form</field>
331 <field name="model">product.product</field>
332 <field name="mode">primary</field>
333 <field eval="7" name="priority"/>
334 <field name="inherit_id" ref="product.product_template_form_view"/>
335 <field name="arch" type="xml">
336 <form position="attributes">
337 <attribute name="string">Product Variant</attribute>
339 <field name="list_price" position="attributes">
340 <attribute name="name">lst_price</attribute>
342 <field name="name" position="replace">
343 <field name="name" attrs="{'invisible': [('id', '!=', False)]}"/>
344 <field name="product_tmpl_id" class="oe_inline" readonly="1" attrs="{'invisible': [('id', '=', False)], 'required': [('id', '!=', False)]}"/>
346 <xpath expr="//div[@class='oe_title']" position="inside">
347 <field name="attribute_value_ids" widget="many2many_tags"/>
352 <record id="product_kanban_view" model="ir.ui.view">
353 <field name="name">Product Kanban</field>
354 <field name="model">product.product</field>
355 <field name="arch" type="xml">
357 <field name="image_small"/>
358 <field name="lst_price"/>
360 <t t-name="kanban-box">
361 <div class="oe_kanban_vignette oe_semantic_html_override">
362 <a type="open"><img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
363 <div class="oe_kanban_details">
367 <field name="attribute_value_ids"/>
372 <li>Price: <field name="lst_price"></field></li>
384 <record id="attribute_tree_view" model="ir.ui.view">
385 <field name="name">product.attribute.tree</field>
386 <field name="model">product.attribute</field>
387 <field name="arch" type="xml">
388 <tree string="Variant Values" editable="top">
394 <record id="attribute_action" model="ir.actions.act_window">
395 <field name="name">Attributes</field>
396 <field name="type">ir.actions.act_window</field>
397 <field name="res_model">product.attribute</field>
398 <field name="view_mode">tree</field>
399 <field name="view_type">form</field>
402 <menuitem action="attribute_action"
403 id="menu_attribute_action"
404 parent="product.prod_config_main" sequence="9" />
406 <record id="variants_tree_view" model="ir.ui.view">
407 <field name="name">product.attribute.value.tree</field>
408 <field name="model">product.attribute.value</field>
409 <field name="arch" type="xml">
410 <tree string="Variant Values" editable="top">
411 <field name="sequence" widget="handle"/>
412 <field name="attribute_id"/>
418 <record id="variants_action" model="ir.actions.act_window">
419 <field name="name">Attribute Values</field>
420 <field name="type">ir.actions.act_window</field>
421 <field name="res_model">product.attribute.value</field>
422 <field name="view_mode">tree</field>
423 <field name="view_type">form</field>
426 <menuitem action="variants_action"
427 id="menu_variants_action"
428 parent="product.prod_config_main" sequence="10" />
432 <record id="product_normal_action_sell" model="ir.actions.act_window">
433 <field name="name">Product Variants</field>
434 <field name="type">ir.actions.act_window</field>
435 <field name="res_model">product.product</field>
436 <field name="view_mode">kanban,tree,form</field>
437 <field name="view_type">form</field>
438 <field name="context">{"search_default_filter_to_sell":1}</field>
439 <field name="view_id" ref="product_product_tree_view"/>
440 <field name="search_view_id" ref="product_search_form_view"/>
441 <field name="help" type="html">
442 <p class="oe_view_nocontent_create">
443 Click to define a new product.
445 You must define a product for everything you sell, whether it's
446 a physical product, a consumable or a service you offer to
449 The product form contains information to simplify the sale
450 process: price, notes in the quotation, accounting data,
451 procurement methods, etc.
456 <menuitem id="product.menu_products" action="product.product_normal_action_sell" parent="base.menu_product" groups="base.group_no_one" sequence="10"/>
458 <record id="product_category_search_view" model="ir.ui.view">
459 <field name="name">product.category.search</field>
460 <field name="model">product.category</field>
461 <field name="arch" type="xml">
462 <search string="Product Categories">
463 <field name="name" string="Product Categories"/>
464 <field name="parent_id"/>
468 <record id="product_category_form_view" model="ir.ui.view">
469 <field name="name">product.category.form</field>
470 <field name="model">product.category</field>
471 <field name="arch" type="xml">
472 <form string="Product Categories">
474 <div class="oe_title">
475 <label for="name" class="oe_edit_only"/>
481 <group name="parent" col="4">
482 <field name="parent_id"/>
490 <record id="product_category_list_view" model="ir.ui.view">
491 <field name="name">product.category.list</field>
492 <field name="model">product.category</field>
493 <field name="priority">1</field>
494 <field name="arch" type="xml">
495 <tree string="Product Categories">
496 <field name="complete_name"/>
500 <record id="product_category_tree_view" model="ir.ui.view">
501 <field name="name">product.category.tree</field>
502 <field name="model">product.category</field>
503 <field name="field_parent">child_id</field>
504 <field name="arch" type="xml">
505 <tree toolbar="True" string="Product Categories">
510 <record id="product_category_action" model="ir.actions.act_window">
511 <field name="name">Products by Category</field>
512 <field name="type">ir.actions.act_window</field>
513 <field name="res_model">product.category</field>
514 <field name="domain">[('parent_id','=',False)]</field>
515 <field name="view_type">tree</field>
516 <field name="view_id" ref="product_category_tree_view"/>
517 <field name="help" type="html">
519 Here is a list of all your products classified by category. You
520 can click a category to get the list of all products linked to
521 this category or to a child of this category.
526 action="product_category_action"
527 id="product.menu_products_category"
528 parent="base.menu_product"
529 sequence="30" groups="base.group_no_one"/>
530 <record id="product_category_action_form" model="ir.actions.act_window">
531 <field name="name">Product Categories</field>
532 <field name="type">ir.actions.act_window</field>
533 <field name="res_model">product.category</field>
534 <field name="view_type">form</field>
535 <field name="search_view_id" ref="product_category_search_view"/>
536 <field name="view_id" ref="product_category_list_view"/>
538 <menuitem action="product_category_action_form"
539 groups="base.group_no_one"
540 id="menu_product_category_action_form"
541 parent="prod_config_main" sequence="2"/>
544 <record id="product_normal_action_tree" model="ir.actions.act_window">
545 <field name="name">Product Variants</field>
546 <field name="type">ir.actions.act_window</field>
547 <field name="res_model">product.product</field>
548 <field name="view_type">form</field>
549 <field name="view_mode">tree,form,kanban</field>
550 <field name="context">{'categ_id':active_id, 'search_default_categ_id':active_id}</field>
552 <record id="ir_product_category_open" model="ir.values">
553 <field eval="'tree_but_open'" name="key2"/>
554 <field eval="'product.category'" name="model"/>
555 <field name="name">Products by Categories</field>
556 <field eval="'ir.actions.act_window,%d'%product_normal_action_tree" name="value"/>
559 <!-- Unit of Measure -->
561 <record id="product_uom_tree_view" model="ir.ui.view">
562 <field name="name">product.uom.tree</field>
563 <field name="model">product.uom</field>
564 <field name="arch" type="xml">
565 <tree string="Units of Measure">
567 <field name="category_id"/>
572 <record id="product_uom_form_view" model="ir.ui.view">
573 <field name="name">product.uom.form</field>
574 <field name="model">product.uom</field>
575 <field name="arch" type="xml">
576 <form string="Units of Measure">
580 <field name="category_id"/>
581 <field name="uom_type" on_change="onchange_type(uom_type)"/>
582 <label for="factor"/>
584 <field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/>
585 <field name="factor_inv" attrs="{'invisible':[('uom_type','!=','bigger')]}"/>
586 <p attrs="{'invisible':[('uom_type','!=','smaller')]}" class="oe_grey">
587 e.g: 1 * (reference unit) = ratio * (this unit)
589 <p attrs="{'invisible':[('uom_type','!=','bigger')]}" class="oe_grey">
590 e.g: 1 * (this unit) = ratio * (reference unit)
595 <field name="active"/>
596 <field name="rounding"/>
602 <record id="product_uom_form_action" model="ir.actions.act_window">
603 <field name="name">Units of Measure</field>
604 <field name="type">ir.actions.act_window</field>
605 <field name="res_model">product.uom</field>
606 <field name="view_type">form</field>
607 <field name="view_id" ref="product_uom_tree_view"/>
608 <field name="help" type="html">
609 <p class="oe_view_nocontent_create">
610 Click to add a new unit of measure.
612 You must define a conversion rate between several Units of
613 Measure within the same category.
617 <menuitem id="next_id_16" name="Units of Measure" parent="prod_config_main" sequence="30" groups="product.group_uom"/>
618 <menuitem action="product_uom_form_action" id="menu_product_uom_form_action" parent="base.menu_base_config" sequence="30" groups="product.group_uom"/>
620 <record id="product_uom_categ_form_view" model="ir.ui.view">
621 <field name="name">product.uom.categ.form</field>
622 <field name="model">product.uom.categ</field>
623 <field name="arch" type="xml">
624 <form string="Units of Measure categories">
631 <record id="product_uom_categ_form_action" model="ir.actions.act_window">
632 <field name="name">Unit of Measure Categories</field>
633 <field name="type">ir.actions.act_window</field>
634 <field name="res_model">product.uom.categ</field>
635 <field name="view_type">form</field>
636 <field name="view_mode">tree,form</field>
637 <field name="help" type="html">
638 <p class="oe_view_nocontent_create">
639 Click to add a new unit of measure category.
641 Units of measure belonging to the same category can be
642 converted between each others. For example, in the category
643 <i>'Time'</i>, you will have the following units of measure:
648 <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"/>
650 <record id="product_ul_form_view" model="ir.ui.view">
651 <field name="name">product.ul.form.view</field>
652 <field name="model">product.ul</field>
653 <field name="arch" type="xml">
654 <form string="Logistic Units">
661 <field name="height"/>
662 <field name="width"/>
663 <field name="length"/>
664 <field name="weight"/>
670 <record id="product_ul_tree" model="ir.ui.view">
671 <field name="name">product.ul.tree</field>
672 <field name="model">product.ul</field>
673 <field name="arch" type="xml">
674 <tree string="Logistic Units">
680 <record id="product_ul_form_action" model="ir.actions.act_window">
681 <field name="name">Logistic Units</field>
682 <field name="type">ir.actions.act_window</field>
683 <field name="res_model">product.ul</field>
684 <field name="view_type">form</field>
685 <field name="view_mode">tree,form</field>
686 <field name="help" type="html">
687 <p class="oe_view_nocontent_create">
688 Click to add a new Logistic Unit
690 The logistic unit defines the container used for the package.
691 It has a type (e.g. pallet, box, ...) and you can specify its
697 action="product_ul_form_action" groups="product.group_stock_packaging" id="menu_product_ul_form_action" parent="prod_config_main" sequence="5"/>
699 <record id="product_packaging_tree_view" model="ir.ui.view">
700 <field name="name">product.packaging.tree.view</field>
701 <field name="model">product.packaging</field>
702 <field name="arch" type="xml">
703 <tree string="Packaging">
704 <field name="sequence" widget="handle"/>
708 <field name="ul_container"/>
713 <record id="product_packaging_form_view" model="ir.ui.view">
714 <field name="name">product.packaging.form.view</field>
715 <field name="model">product.packaging</field>
716 <field name="arch" type="xml">
717 <form string="Packaging">
719 <field name="product_tmpl_id"/>
722 <field name="sequence" invisible="1"/>
726 <separator colspan="4" string="Palletization"/>
727 <field name="ul_qty"/>
729 <field name="ul_container"/>
730 <field name="weight"/>
731 <separator colspan="4" string="Other Info"/>
732 <field colspan="4" name="name"/>
738 <record id="product_supplierinfo_form_view" model="ir.ui.view">
739 <field name="name">product.supplierinfo.form.view</field>
740 <field name="model">product.supplierinfo</field>
741 <field name="arch" type="xml">
742 <form string="Supplier Information">
744 <field name="name" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}"/>
745 <field name="sequence"/>
746 <field name="product_name"/>
747 <field name="product_code"/>
748 <field name="min_qty"/>
749 <field name="product_uom" groups="product.group_uom"/>
750 <field name="delay"/>
751 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
753 <p groups="product.group_purchase_pricelist" class="oe_grey">The prices below will only be taken into account when your pricelist is set as based on supplier prices.</p>
754 <field groups="product.group_purchase_pricelist" name="pricelist_ids">
755 <tree editable="bottom" string="Pricelist">
756 <field name="min_quantity"/>
757 <field name="price"/>
761 <field name="min_quantity"/>
762 <field name="price"/>
769 <record id="product_supplierinfo_tree_view" model="ir.ui.view">
770 <field name="name">product.supplierinfo.tree.view</field>
771 <field name="model">product.supplierinfo</field>
772 <field name="arch" type="xml">
773 <tree string="Supplier Information">
774 <field name="sequence" widget="handle"/>
776 <field name="delay"/>
777 <field name="min_qty"/>
778 <field name="company_id" groups="base.group_multi_company" widget="selection"/>