summaryrefslogtreecommitdiff
path: root/addons/product/views/product_template_views.xml
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/product/views/product_template_views.xml
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/product/views/product_template_views.xml')
-rw-r--r--addons/product/views/product_template_views.xml166
1 files changed, 166 insertions, 0 deletions
diff --git a/addons/product/views/product_template_views.xml b/addons/product/views/product_template_views.xml
new file mode 100644
index 00000000..4850d2bb
--- /dev/null
+++ b/addons/product/views/product_template_views.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="product_template_tree_view" model="ir.ui.view">
+ <field name="name">product.template.product.tree</field>
+ <field name="model">product.template</field>
+ <field name="arch" type="xml">
+ <tree string="Product" multi_edit="1" sample="1">
+ <field name="product_variant_count" invisible="1"/>
+ <field name="sale_ok" invisible="1"/>
+ <field name="currency_id" invisible="1"/>
+ <field name="cost_currency_id" invisible="1"/>
+
+ <field name="sequence" widget="handle" readonly="1"/>
+ <field name="name" string="Product Name"/>
+ <field name="default_code" optional="show"/>
+ <field name="barcode" optional="hide" attrs="{'readonly': [('product_variant_count', '>', 1)]}"/>
+ <field name="company_id" options="{'no_create_edit': True}"
+ groups="base.group_multi_company" optional="hide"/>
+ <field name="list_price" string="Sales Price" widget='monetary' options="{'currency_field': 'currency_id'}" optional="show" decoration-muted="not sale_ok"/>
+ <field name="standard_price" widget='monetary' options="{'currency_field': 'cost_currency_id'}" optional="show" readonly="1"/>
+ <field name="categ_id" optional="hide"/>
+ <field name="type" optional="hide" readonly="1"/>
+ <field name="uom_id" readonly="1" optional="show" groups="uom.group_uom"/>
+ <field name="active" invisible="1"/>
+ <field name="activity_exception_decoration" widget="activity_exception"/>
+ </tree>
+ </field>
+ </record>
+
+ <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="categ_id" position="after">
+ <field name="default_code" attrs="{'invisible': [('product_variant_count', '>', 1)]}"/>
+ <field name="barcode" attrs="{'invisible': [('product_variant_count', '>', 1)]}"/>
+ </field>
+
+ <div name="button_box" position="inside">
+ <button name="%(product.product_variant_action)d" type="action"
+ icon="fa-sitemap" class="oe_stat_button"
+ attrs="{'invisible': [('product_variant_count', '&lt;=', 1)]}"
+ groups="product.group_product_variant">
+ <field string="Variants" name="product_variant_count" widget="statinfo" />
+ </button>
+ </div>
+
+ <xpath expr="//page[@name='general_information']" position="after">
+ <page name="variants" string="Variants" groups="product.group_product_variant">
+ <field name="attribute_line_ids" widget="one2many" context="{'show_attribute': False}">
+ <tree string="Variants" editable="bottom">
+ <field name="attribute_id" attrs="{'readonly': [('id', '!=', False)]}"/>
+ <field name="value_ids" widget="many2many_tags" options="{'no_create_edit': True}" context="{'default_attribute_id': attribute_id, 'show_attribute': False}"/>
+ </tree>
+ </field>
+ <p class="oe_grey oe_edit_only">
+ <strong>Warning</strong>: adding or deleting attributes
+ will delete and recreate existing variants and lead
+ to the loss of their possible customizations.
+ </p>
+ </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 sample="1">
+ <field name="id"/>
+ <field name="product_variant_count"/>
+ <field name="currency_id"/>
+ <field name="activity_state"/>
+ <progressbar field="activity_state" colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
+ <templates>
+ <t t-name="kanban-box">
+ <div class="oe_kanban_global_click">
+ <div class="o_kanban_image">
+ <img t-att-src="kanban_image('product.template', 'image_128', record.id.raw_value)" alt="Product" class="o_image_64_contain"/>
+ </div>
+ <div class="oe_kanban_details">
+ <strong class="o_kanban_record_title">
+ <field name="name"/>
+ </strong>
+ <t t-if="record.default_code.value">[<field name="default_code"/>]</t>
+ <div t-if="record.product_variant_count.value &gt; 1" groups="product.group_product_variant">
+ <strong>
+ <t t-esc="record.product_variant_count.value"/> Variants
+ </strong>
+ </div>
+ <div name="product_lst_price" class="mt-1">
+ Price: <field name="lst_price" widget="monetary" options="{'currency_field': 'currency_id', 'field_digits': True}"></field>
+ </div>
+ </div>
+ </div>
+ </t>
+ </templates>
+ </kanban>
+ </field>
+ </record>
+
+ <record id="product_template_view_activity" model="ir.ui.view">
+ <field name="name">product.template.activity</field>
+ <field name="model">product.template</field>
+ <field name="arch" type="xml">
+ <activity string="Products">
+ <field name="id"/>
+ <templates>
+ <div t-name="activity-box">
+ <img t-att-src="activity_image('product.template', 'image_128', record.id.raw_value)" role="img" t-att-title="record.id.value" t-att-alt="record.id.value"/>
+ <div>
+ <field name="name" display="full"/>
+ <div t-if="record.default_code.value" class="text-muted">
+ [<field name="default_code"/>]
+ </div>
+ </div>
+ </div>
+ </templates>
+ </activity>
+ </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_id" ref="product_template_kanban_view"/>
+ <field name="search_view_id" ref="product.product_template_search_view"/>
+ <field name="context">{"search_default_filter_to_sell":1}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product
+ </p><p>
+ You must define a product for everything you sell or purchase,
+ whether it's a storable product, a consumable or a service.
+ </p>
+ </field>
+ </record>
+
+ <record id="action_product_template_price_list_report" model="ir.actions.server">
+ <field name="name">Generate Pricelist</field>
+ <field name="groups_id" eval="[(4, ref('product.group_product_pricelist'))]"/>
+ <field name="model_id" ref="product.model_product_template"/>
+ <field name="binding_model_id" ref="product.model_product_template"/>
+ <field name="state">code</field>
+ <field name="code">
+ctx = env.context
+ctx.update({'default_pricelist': env['product.pricelist'].search([], limit=1).id})
+action = {
+ 'name': 'Pricelist Report',
+ 'type': 'ir.actions.client',
+ 'tag': 'generate_pricelist',
+ 'context': ctx,
+}
+ </field>
+ </record>
+
+</odoo>