diff --git a/__manifest__.py b/__manifest__.py index 1e91f274add105ac503f23cb9216f6110f3e53a1..b6b1c998c8b0d647bbe070ae2092fa85e7bf0999 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -38,6 +38,7 @@ "views/dvh_configurator.xml", "views/glass_production_order_view.xml", "views/production_order_view.xml", + "views/product_attribute_views.xml", "data/data.xml", "data/ir_sequence_data.xml", "security/ir.model.access.csv", diff --git a/data/data.xml b/data/data.xml index d624f0d6f42d9d4283c79256f657898c312d5bb1..5b4d4226ff808fdf74dc25e54a6c1c8b164cbd67 100644 --- a/data/data.xml +++ b/data/data.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - <data noupdate="0"> + <data noupdate="1"> <record id="base.group_user" model="res.groups"> <field name="implied_ids" eval="[(4, ref('product.group_product_variant'))]"/> </record> @@ -48,8 +48,6 @@ <field name="create_variant">no_variant</field> <field name="glass_type">camera</field> </record> - </data> - <data noupdate="1"> <record id="product_product_dvh" model="product.product"> <field name="name">DVH</field> <field name="type">consu</field> diff --git a/data/demo.xml b/data/demo.xml index dd17dae7c854c0894216ac4e40468e5b00a99de1..880e8caac546256ff9ffad34f3106ee1aa0a5658 100644 --- a/data/demo.xml +++ b/data/demo.xml @@ -7,12 +7,14 @@ <field name="attribute_id" ref="product_attribute_color"/> <field name="sequence">1</field> <field name="code">01</field> + <field name="alias">Rd</field> </record> <record id="product_attribute_color_blue" model="product.attribute.value"> <field name="name">Blue</field> <field name="attribute_id" ref="product_attribute_color"/> <field name="sequence">1</field> <field name="code">02</field> + <field name="alias">Bl</field> </record> <!-- Thickness values --> @@ -20,13 +22,15 @@ <field name="name">1 mm</field> <field name="attribute_id" ref="product_attribute_thickness"/> <field name="sequence">1</field> - <field name="code">01</field> + <field name="code">001</field> + <field name="alias">1</field> </record> <record id="product_attribute_thickness_10mm" model="product.attribute.value"> <field name="name">10 mm</field> <field name="attribute_id" ref="product_attribute_thickness"/> <field name="sequence">1</field> - <field name="code">10</field> + <field name="code">010</field> + <field name="alias">10</field> </record> <!-- Glass Type values --> @@ -35,12 +39,14 @@ <field name="attribute_id" ref="product_attribute_glass_type"/> <field name="sequence">1</field> <field name="code">01</field> + <field name="alias">F</field> </record> <record id="product_attribute_glass_type_laminated" model="product.attribute.value"> <field name="name">Laminated</field> <field name="attribute_id" ref="product_attribute_glass_type"/> <field name="sequence">1</field> <field name="code">02</field> + <field name="alias">L</field> </record> <!-- Width values --> diff --git a/models/product.py b/models/product.py index bbb780802acd59522441b2ce2025cdc5fad44494..99e281c4dceafa3ec32d82128ef835f017597d95 100644 --- a/models/product.py +++ b/models/product.py @@ -30,6 +30,7 @@ class ProductAttributeValue(models.Model): _inherit = 'product.attribute.value' code = fields.Char(string='Internal Code') + alias = fields.Char(string='Alias') class ProductTemplate(models.Model): @@ -40,6 +41,15 @@ class ProductTemplate(models.Model): glass_thickness = fields.Many2one('product.attribute.value', string='Thickness') glass_type = fields.Many2one('product.attribute.value', string='Type') + @api.multi + def get_alias(self): + self.ensure_one() + gc = self.glass_color + gth = self.glass_thickness + gty = self.glass_type + alias = gc.alias + ' ' + gth.alias + ' ' + gty.alias + return alias + @api.constrains('glass_color', 'glass_thickness', 'glass_type') def _check_attribute_combination(self): for pte in self: diff --git a/views/product_attribute_views.xml b/views/product_attribute_views.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc02751e554d516533fe5e4d1427f1b45d168c9d --- /dev/null +++ b/views/product_attribute_views.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<odoo> + <data> + <record id="variants_tree_view" model="ir.ui.view"> + <field name="model">product.attribute.value</field> + <field name="inherit_id" ref="product.variants_tree_view"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='name']" position="after"> + <field name="alias" required="True"/> + <field name="code"/> + </xpath> + </field> + </record> + </data> +</odoo> diff --git a/views/sale_view.xml b/views/sale_view.xml index 122b21af54528c33afba209a078b9288867ce7dd..243b93f734ab23480c222a5ef274d09395248db1 100644 --- a/views/sale_view.xml +++ b/views/sale_view.xml @@ -6,29 +6,27 @@ <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_form"/> <field name="arch" type="xml"> - <data> - <xpath expr="//field[@name='payment_term_id']" position="after"> - <field name="internal_type" required="True"/> - </xpath> - <xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="attributes"> - <attribute name="attrs">{'column_invisible': [('parent.internal_type', '=', 'dvh')]}</attribute> - </xpath> - <xpath expr="//field[@name='order_line']/tree" position="inside"> - <field name="component_ids" - widget="many2many_tags" - readonly="1" - force_save="1" - attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> - <field name="camera" - required="True" - attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> - <field name="product_modifier_id"/> - <field name="note" - attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> - <button name="edit_dvh" type="object" string="Edit DVH" attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> - <button name="edit_glass" type="object" string="Edit glass" attrs="{'column_invisible': [('parent.internal_type', '=', 'dvh')]}"/> - </xpath> - </data> + <xpath expr="//field[@name='payment_term_id']" position="after"> + <field name="internal_type" required="True"/> + </xpath> + <xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="attributes"> + <attribute name="attrs">{'column_invisible': [('parent.internal_type', '=', 'dvh')]}</attribute> + </xpath> + <xpath expr="//field[@name='order_line']/tree" position="inside"> + <field name="component_ids" + widget="many2many_tags" + readonly="1" + force_save="1" + attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> + <field name="camera" + required="True" + attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> + <field name="product_modifier_id"/> + <field name="note" + attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> + <button name="edit_dvh" type="object" string="Edit DVH" attrs="{'column_invisible': [('parent.internal_type', '=', 'standard')]}"/> + <button name="edit_glass" type="object" string="Edit glass" attrs="{'column_invisible': [('parent.internal_type', '=', 'dvh')]}"/> + </xpath> </field> </record> <record model="ir.actions.server" id="sale_order_add_glass"> diff --git a/wizard/dvh_configurator.py b/wizard/dvh_configurator.py index a9961b4d087c981ba9214f8d71736b278296c621..7835f437493994a337a6f0a1b6c9592fd5b09163 100644 --- a/wizard/dvh_configurator.py +++ b/wizard/dvh_configurator.py @@ -68,15 +68,11 @@ class DvhConfigurator(models.TransientModel): glass_component_ids.append(second_gc.id) else: first_gc.qty = 2 - # Build the product_code to use in the sale order line - # description - product_code = '[' + first_pp.product_tmpl_id.default_code - if second_pp: - product_code += '-' + second_pp.product_tmpl_id.default_code + ']' - else: - product_code += ']' + first_alias = first_pp.product_tmpl_id.get_alias() + second_alias = second_pp.product_tmpl_id.get_alias() if second_pp else False measures = self.line_ids[0].height.name + ' X ' + self.line_ids[0].width.name - name = 'DVH ' + product_code + ' - ' + measures + name = (first_alias + ' ' + second_alias) if second_alias else first_alias + name += ' - ' + measures pm = line.product_modifier_id if self.edit: sol.write({