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 string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.attribute_value_ids.name','ilike',self)]"/>
19 <field name="company_id"/>
20 <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! -->
21 <group expand='0' string='Group by...'>
22 <filter string='Default Unit of Measure' icon="terp-mrp" domain="[]" context="{'group_by' : 'uom_id'}"/>
23 <filter string='Type' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'type'}"/>
29 <record id="product_template_tree_view" model="ir.ui.view">
30 <field name="name">product.template.product.tree</field>
31 <field name="model">product.template</field>
32 <field name="arch" type="xml">
33 <tree string="Product">
35 <field name="categ_id"/>
38 <field name="uom_id" invisible="1"/>
43 <record id="product_template_form_view" model="ir.ui.view">
44 <field name="name">product.template.product.form</field>
45 <field name="model">product.template</field>
46 <field name="arch" type="xml">
47 <form string="Product">
48 <field name="is_product_variant" invisible="1"/>
50 <field name="id" invisible="True"/>
51 <div class="oe_right oe_button_box" style="width: 300px;" name="buttons">
53 <div class="oe_left" style="width: 500px;">
54 <field name="image_medium" widget="image" class="oe_avatar oe_left"/>
55 <div class="oe_title" style="width: 390px;">
56 <label class="oe_edit_only" for="name" string="Product Name"/>
57 <h1><field name="name" class="oe_inline"/></h1>
59 <div class="oe_left" name="options" groups="base.group_user">
61 <field name="sale_ok"/>
62 <label for="sale_ok"/>
67 <page string="Information">
71 <field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" groups="product.group_uom"/>
72 <field name="list_price"/>
75 <field name="active"/>
77 <field name="default_code"/>
81 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
83 <field name="description" placeholder="describe the product characteristics..."/>
85 <page string="Procurements" groups="base.group_user">
86 <group name="procurement">
87 <group name="general">
88 <field name="standard_price"/>
90 <group name="procurement_uom" groups="product.group_uom" string="Purchase">
91 <field name="uom_po_id"/>
94 <separator string="Suppliers"/>
95 <field name="seller_ids"/>
96 <separator string="Description for Suppliers"/>
97 <field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
99 <page string="Inventory">
100 <group name="inventory">
101 <group name="status" string="Status">
102 <field name="state"/>
103 <field name="product_manager"/>
105 <group name="weight" string="Weights">
106 <field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/>
107 <field digits="(14, 3)" name="weight" attrs="{'readonly':[('type','=','service')]}"/>
108 <field digits="(14, 3)" name="weight_net" attrs="{'readonly':[('type','=','service')]}"/>
112 <page string="Sales" attrs="{'invisible':[('sale_ok','=',False)]}">
114 <group name="sale_condition" string="Sale Conditions" colspan="3">
115 <label for="warranty"/>
117 <field name="warranty" class="oe_inline"/> months
120 <group groups="product.group_uos" string="Unit of Measure">
121 <field name="uos_id"/>
122 <field name="uos_coeff"/>
123 <field name="mes_type"/>
126 <group name="website_and_pos" col="2">
128 <separator string="Description for Quotations"/>
129 <field name="description_sale" placeholder="note to be displayed on quotations..."/>
131 <page name="variants" string="Variants">
132 <field name="attribute_line_ids" widget="one2many_list">
133 <tree string="Variants" editable="bottom">
134 <field name="attribute_id"/>
135 <field name="value_ids" widget="many2many_tags" domain="[('attribute_id', '=', attribute_id)]" context="{'default_attribute_id': attribute_id}"/>
141 <div class="oe_chatter">
142 <field name="message_follower_ids" widget="mail_followers"/>
143 <field name="message_ids" widget="mail_thread"/>
149 <record id="product_template_kanban_view" model="ir.ui.view">
150 <field name="name">Product.template.product.kanban</field>
151 <field name="model">product.template</field>
152 <field name="arch" type="xml">
154 <field name="image_small"/>
155 <field name="lst_price"/>
157 <t t-name="kanban-box">
158 <div class="oe_kanban_vignette oe_semantic_html_override">
159 <a type="open"><img t-att-src="kanban_image('product.template', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
160 <div class="oe_kanban_details">
168 <li>Price: <field name="lst_price"></field></li>
178 <record id="product_template_action" model="ir.actions.act_window">
179 <field name="name">Products</field>
180 <field name="type">ir.actions.act_window</field>
181 <field name="res_model">product.template</field>
182 <field name="view_mode">kanban,tree,form</field>
183 <field name="view_type">form</field>
184 <field name="view_id" ref="product_template_kanban_view"/>
187 <menuitem action="product_template_action"
188 id="menu_product_template_action"
189 parent="base.menu_product" sequence="1" />
193 <record id="variants_template_tree_view" model="ir.ui.view">
194 <field name="name">variants.template.tree</field>
195 <field name="model">product.attribute.value</field>
196 <field name="priority" eval="2"/>
197 <field name="arch" type="xml">
198 <tree string="Variant Values" editable="top">
199 <field name="sequence" widget="handle"/>
200 <field name="attribute_id"/>
202 <field name="price_extra"/>
206 <record id="variants_template_action" model="ir.actions.act_window">
207 <field name="name">Variant Values</field>
208 <field name="type">ir.actions.act_window</field>
209 <field name="res_model">product.attribute.value</field>
210 <field name="view_mode">tree</field>
211 <field name="view_type">form</field>
212 <field name="domain">[('product_ids.product_tmpl_id', '=', active_id)]</field>
213 <field name="context">{'default_product_tmpl_id': active_id}</field>
216 <!-- product product -->
218 <menuitem id="prod_config_main" name="Product Categories & Attributes" parent="base.menu_base_config" sequence="70" groups="base.group_no_one"/>
220 <record id="product_search_form_view" model="ir.ui.view">
221 <field name="name">product.product.search</field>
222 <field name="model">product.product</field>
223 <field name="mode">primary</field>
224 <field name="inherit_id" ref="product.product_template_search_view"/>
225 <field name="arch" type="xml">
226 <field name="name" position="replace">
227 <field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
229 <field name="product_variant_ids" position="replace">
230 <field name="attribute_value_ids"/>
232 <field name="name" position="after">
233 <field name="product_tmpl_id" string="Product Template"/>
235 <xpath expr="//group[@string='Group by...']" position="inside">
236 <filter string='Product Template' name="template_id" domain="[]" context="{'group_by' : 'product_tmpl_id'}"/>
241 <record id="product_product_tree_view" model="ir.ui.view">
242 <field name="name">product.product.tree</field>
243 <field name="model">product.product</field>
244 <field eval="7" name="priority"/>
245 <field name="arch" type="xml">
247 <tree string="Product Variants">
248 <field name="default_code"/>
250 <field name="attribute_value_ids" widget="many2many_tags"/>
251 <field name="lst_price"/>
252 <field name="price" invisible="not context.get('pricelist',False)"/>
253 <field name="uom_id"/>
254 <field name="ean13"/>
255 <field name="state" invisible="1"/>
256 <field name="product_tmpl_id" invisible="1"/>
262 <record id="product_normal_form_view" model="ir.ui.view">
263 <field name="name">product.product.form</field>
264 <field name="model">product.product</field>
265 <field name="mode">primary</field>
266 <field eval="7" name="priority"/>
267 <field name="inherit_id" ref="product.product_template_form_view"/>
268 <field name="arch" type="xml">
269 <form position="attributes">
270 <attribute name="string">Product Variant</attribute>
272 <field name="list_price" position="attributes">
273 <attribute name="name">lst_price</attribute>
275 <field name="name" position="replace">
276 <field name="name" attrs="{'invisible': [('id', '!=', False)]}"/>
277 <field name="product_tmpl_id" class="oe_inline" readonly="1" attrs="{'invisible': [('id', '=', False)], 'required': [('id', '!=', False)]}"/>
279 <xpath expr="//div[@class='oe_title']" position="inside">
280 <field name="attribute_value_ids" widget="many2many_tags"/>
282 <page name="variants" position="replace">
287 <record id="product_kanban_view" model="ir.ui.view">
288 <field name="name">Product Kanban</field>
289 <field name="model">product.product</field>
290 <field name="arch" type="xml">
292 <field name="image_small"/>
293 <field name="lst_price"/>
295 <t t-name="kanban-box">
296 <div class="oe_kanban_vignette oe_semantic_html_override">
297 <a type="open"><img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
298 <div class="oe_kanban_details">
302 <field name="attribute_value_ids"/>
307 <li>Price: <field name="lst_price"></field></li>
319 <record id="product_normal_action" model="ir.actions.act_window">
320 <field name="name">Product Variants</field>
321 <field name="type">ir.actions.act_window</field>
322 <field name="res_model">product.product</field>
323 <field name="view_mode">tree,form,kanban</field>
324 <field name="view_type">form</field>
325 <field name="search_view_id" ref="product_search_form_view"/>
326 <field name="help" type="html">
327 <p class="oe_view_nocontent_create">
328 Click to define a new product.
330 You must define a product for everything you buy or sell,
331 whether it's a physical product, a consumable or service.
338 <record id="product_variant_action" model="ir.actions.act_window">
339 <field name="name">Product Variants</field>
340 <field name="type">ir.actions.act_window</field>
341 <field name="res_model">product.product</field>
342 <field name="view_mode">tree,form,kanban</field>
343 <field name="view_type">form</field>
344 <field name="context">{'search_default_product_tmpl_id': [active_id], 'default_product_tmpl_id': active_id}</field>
345 <field name="search_view_id" ref="product_search_form_view"/>
346 <field name="help" type="html">
347 <p class="oe_view_nocontent_create">
348 Click to define a new product.
350 You must define a product for everything you buy or sell,
351 whether it's a physical product, a consumable or service.
356 <record id="product_template_form_view_variant_button" model="ir.ui.view">
357 <field name="name">product.template.form</field>
358 <field name="model">product.template</field>
359 <field name="inherit_id" ref="product.product_template_form_view"/>
360 <field name="arch" type="xml">
361 <field name="attribute_line_ids" position="before">
362 <div class="oe_right">
363 <button class="oe_inline oe_stat_button" string="Variant Prices" name="%(product.variants_template_action)d" type="action" icon="fa-strikethrough"/>
364 <button class="oe_inline oe_stat_button" name="%(product.product_variant_action)d" type="action" icon="fa-sitemap">
365 <field string="Variants" name="product_variant_count" widget="statinfo" />
372 <record id="product_template_kanban_view_variant_button" model="ir.ui.view">
373 <field name="name">product.template.form</field>
374 <field name="model">product.template</field>
375 <field name="inherit_id" ref="product.product_template_kanban_view"/>
376 <field name="arch" type="xml">
377 <field name="lst_price" position="after">
378 <field name="is_product_variant"/>
379 <field name="product_variant_count"/>
380 <field name="product_variant_ids"/>
382 <h4 position="after">
383 <a name="%(product.product_variant_action)d" type="action">
384 <t t-esc="record.product_variant_count.value"/> Variants
392 <record id="attribute_tree_view" model="ir.ui.view">
393 <field name="name">product.attribute.tree</field>
394 <field name="model">product.attribute</field>
395 <field name="arch" type="xml">
396 <tree string="Variant Values" editable="top">
402 <record id="attribute_action" model="ir.actions.act_window">
403 <field name="name">Attributes</field>
404 <field name="type">ir.actions.act_window</field>
405 <field name="res_model">product.attribute</field>
406 <field name="view_mode">tree</field>
407 <field name="view_type">form</field>
410 <menuitem action="attribute_action"
411 id="menu_attribute_action"
412 parent="product.prod_config_main" sequence="9" />
414 <record id="variants_tree_view" model="ir.ui.view">
415 <field name="name">product.attribute.value.tree</field>
416 <field name="model">product.attribute.value</field>
417 <field name="arch" type="xml">
418 <tree string="Variant Values" editable="top">
419 <field name="sequence" widget="handle"/>
420 <field name="attribute_id"/>
426 <record id="variants_action" model="ir.actions.act_window">
427 <field name="name">Attribute Values</field>
428 <field name="type">ir.actions.act_window</field>
429 <field name="res_model">product.attribute.value</field>
430 <field name="view_mode">tree</field>
431 <field name="view_type">form</field>
434 <menuitem action="variants_action"
435 id="menu_variants_action"
436 parent="product.prod_config_main" sequence="10" />
440 <record id="product_normal_action_sell" model="ir.actions.act_window">
441 <field name="name">Product Variants</field>
442 <field name="type">ir.actions.act_window</field>
443 <field name="res_model">product.product</field>
444 <field name="view_mode">kanban,tree,form</field>
445 <field name="view_type">form</field>
446 <field name="context">{"search_default_filter_to_sell":1}</field>
447 <field name="view_id" ref="product_product_tree_view"/>
448 <field name="search_view_id" ref="product_search_form_view"/>
449 <field name="help" type="html">
450 <p class="oe_view_nocontent_create">
451 Click to define a new product.
453 You must define a product for everything you sell, whether it's
454 a physical product, a consumable or a service you offer to
457 The product form contains information to simplify the sale
458 process: price, notes in the quotation, accounting data,
459 procurement methods, etc.
464 <menuitem id="product.menu_products" action="product.product_normal_action_sell" parent="base.menu_product" groups="base.group_no_one" sequence="10"/>
466 <record id="product_category_search_view" model="ir.ui.view">
467 <field name="name">product.category.search</field>
468 <field name="model">product.category</field>
469 <field name="arch" type="xml">
470 <search string="Product Categories">
471 <field name="name" string="Product Categories"/>
472 <field name="parent_id"/>
476 <record id="product_category_form_view" model="ir.ui.view">
477 <field name="name">product.category.form</field>
478 <field name="model">product.category</field>
479 <field name="arch" type="xml">
480 <form string="Product Categories">
482 <div class="oe_title">
483 <label for="name" class="oe_edit_only"/>
489 <group name="parent" col="4">
490 <field name="parent_id"/>
498 <record id="product_category_list_view" model="ir.ui.view">
499 <field name="name">product.category.list</field>
500 <field name="model">product.category</field>
501 <field name="priority">1</field>
502 <field name="arch" type="xml">
503 <tree string="Product Categories">
504 <field name="complete_name"/>
508 <record id="product_category_tree_view" model="ir.ui.view">
509 <field name="name">product.category.tree</field>
510 <field name="model">product.category</field>
511 <field name="field_parent">child_id</field>
512 <field name="arch" type="xml">
513 <tree toolbar="True" string="Product Categories">
518 <record id="product_category_action" model="ir.actions.act_window">
519 <field name="name">Products by Category</field>
520 <field name="type">ir.actions.act_window</field>
521 <field name="res_model">product.category</field>
522 <field name="domain">[('parent_id','=',False)]</field>
523 <field name="view_type">tree</field>
524 <field name="view_id" ref="product_category_tree_view"/>
525 <field name="help" type="html">
527 Here is a list of all your products classified by category. You
528 can click a category to get the list of all products linked to
529 this category or to a child of this category.
534 action="product_category_action"
535 id="product.menu_products_category"
536 parent="base.menu_product"
537 sequence="30" groups="base.group_no_one"/>
538 <record id="product_category_action_form" model="ir.actions.act_window">
539 <field name="name">Product Categories</field>
540 <field name="type">ir.actions.act_window</field>
541 <field name="res_model">product.category</field>
542 <field name="view_type">form</field>
543 <field name="search_view_id" ref="product_category_search_view"/>
544 <field name="view_id" ref="product_category_list_view"/>
546 <menuitem action="product_category_action_form"
547 groups="base.group_no_one"
548 id="menu_product_category_action_form"
549 parent="prod_config_main" sequence="2"/>
552 <record id="product_normal_action_tree" model="ir.actions.act_window">
553 <field name="name">Product Variants</field>
554 <field name="type">ir.actions.act_window</field>
555 <field name="res_model">product.product</field>
556 <field name="view_type">form</field>
557 <field name="view_mode">tree,form,kanban</field>
558 <field name="context">{'categ_id':active_id, 'search_default_categ_id':active_id}</field>
560 <record id="ir_product_category_open" model="ir.values">
561 <field eval="'tree_but_open'" name="key2"/>
562 <field eval="'product.category'" name="model"/>
563 <field name="name">Products by Categories</field>
564 <field eval="'ir.actions.act_window,%d'%product_normal_action_tree" name="value"/>
567 <!-- Unit of Measure -->
569 <record id="product_uom_tree_view" model="ir.ui.view">
570 <field name="name">product.uom.tree</field>
571 <field name="model">product.uom</field>
572 <field name="arch" type="xml">
573 <tree string="Units of Measure">
575 <field name="category_id"/>
580 <record id="product_uom_form_view" model="ir.ui.view">
581 <field name="name">product.uom.form</field>
582 <field name="model">product.uom</field>
583 <field name="arch" type="xml">
584 <form string="Units of Measure">
588 <field name="category_id"/>
589 <field name="uom_type" on_change="onchange_type(uom_type)"/>
590 <label for="factor"/>
592 <field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/>
593 <field name="factor_inv" attrs="{'invisible':[('uom_type','!=','bigger')]}"/>
594 <p attrs="{'invisible':[('uom_type','!=','smaller')]}" class="oe_grey">
595 e.g: 1 * (reference unit) = ratio * (this unit)
597 <p attrs="{'invisible':[('uom_type','!=','bigger')]}" class="oe_grey">
598 e.g: 1 * (this unit) = ratio * (reference unit)
603 <field name="active"/>
604 <field name="rounding"/>
610 <record id="product_uom_form_action" model="ir.actions.act_window">
611 <field name="name">Units of Measure</field>
612 <field name="type">ir.actions.act_window</field>
613 <field name="res_model">product.uom</field>
614 <field name="view_type">form</field>
615 <field name="view_id" ref="product_uom_tree_view"/>
616 <field name="help" type="html">
617 <p class="oe_view_nocontent_create">
618 Click to add a new unit of measure.
620 You must define a conversion rate between several Units of
621 Measure within the same category.
625 <menuitem id="next_id_16" name="Units of Measure" parent="prod_config_main" sequence="30" groups="product.group_uom"/>
626 <menuitem action="product_uom_form_action" id="menu_product_uom_form_action" parent="base.menu_base_config" sequence="30" groups="product.group_uom"/>
628 <record id="product_uom_categ_form_view" model="ir.ui.view">
629 <field name="name">product.uom.categ.form</field>
630 <field name="model">product.uom.categ</field>
631 <field name="arch" type="xml">
632 <form string="Units of Measure categories">
639 <record id="product_uom_categ_form_action" model="ir.actions.act_window">
640 <field name="name">Unit of Measure Categories</field>
641 <field name="type">ir.actions.act_window</field>
642 <field name="res_model">product.uom.categ</field>
643 <field name="view_type">form</field>
644 <field name="view_mode">tree,form</field>
645 <field name="help" type="html">
646 <p class="oe_view_nocontent_create">
647 Click to add a new unit of measure category.
649 Units of measure belonging to the same category can be
650 converted between each others. For example, in the category
651 <i>'Time'</i>, you will have the following units of measure:
656 <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"/>
658 <record id="product_ul_form_view" model="ir.ui.view">
659 <field name="name">product.ul.form.view</field>
660 <field name="model">product.ul</field>
661 <field name="arch" type="xml">
662 <form string="Logistic Units">
669 <field name="height"/>
670 <field name="width"/>
671 <field name="length"/>
672 <field name="weight"/>
678 <record id="product_ul_tree" model="ir.ui.view">
679 <field name="name">product.ul.tree</field>
680 <field name="model">product.ul</field>
681 <field name="arch" type="xml">
682 <tree string="Logistic Units">
688 <record id="product_ul_form_action" model="ir.actions.act_window">
689 <field name="name">Logistic Units</field>
690 <field name="type">ir.actions.act_window</field>
691 <field name="res_model">product.ul</field>
692 <field name="view_type">form</field>
693 <field name="view_mode">tree,form</field>
694 <field name="help" type="html">
695 <p class="oe_view_nocontent_create">
696 Click to add a new Logistic Unit
698 The logistic unit defines the container used for the package.
699 It has a type (e.g. pallet, box, ...) and you can specify its
705 action="product_ul_form_action" groups="product.group_stock_packaging" id="menu_product_ul_form_action" parent="prod_config_main" sequence="5"/>
707 <record id="product_packaging_tree_view" model="ir.ui.view">
708 <field name="name">product.packaging.tree.view</field>
709 <field name="model">product.packaging</field>
710 <field name="arch" type="xml">
711 <tree string="Packaging">
712 <field name="sequence" widget="handle"/>
716 <field name="ul_container"/>
721 <record id="product_packaging_form_view" model="ir.ui.view">
722 <field name="name">product.packaging.form.view</field>
723 <field name="model">product.packaging</field>
724 <field name="arch" type="xml">
725 <form string="Packaging">
727 <field name="product_tmpl_id"/>
730 <field name="sequence" invisible="1"/>
734 <separator colspan="4" string="Palletization"/>
735 <field name="ul_qty"/>
737 <field name="ul_container"/>
738 <field name="weight"/>
739 <separator colspan="4" string="Other Info"/>
740 <field colspan="4" name="name"/>
746 <record id="product_supplierinfo_form_view" model="ir.ui.view">
747 <field name="name">product.supplierinfo.form.view</field>
748 <field name="model">product.supplierinfo</field>
749 <field name="arch" type="xml">
750 <form string="Supplier Information">
752 <field name="name" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}"/>
753 <field name="sequence"/>
754 <field name="product_name"/>
755 <field name="product_code"/>
756 <field name="min_qty"/>
757 <field name="product_uom" groups="product.group_uom"/>
758 <field name="delay"/>
759 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
761 <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>
762 <field groups="product.group_purchase_pricelist" name="pricelist_ids">
763 <tree editable="bottom" string="Pricelist">
764 <field name="min_quantity"/>
765 <field name="price"/>
769 <field name="min_quantity"/>
770 <field name="price"/>
777 <record id="product_supplierinfo_tree_view" model="ir.ui.view">
778 <field name="name">product.supplierinfo.tree.view</field>
779 <field name="model">product.supplierinfo</field>
780 <field name="arch" type="xml">
781 <tree string="Supplier Information">
782 <field name="sequence" widget="handle"/>
784 <field name="delay"/>
785 <field name="min_qty"/>
786 <field name="company_id" groups="base.group_multi_company" widget="selection"/>