[IMP] mrp_bom_attribute_match: added demo data

This commit is contained in:
Ilyas
2023-10-23 12:46:40 +02:00
parent fe864284d7
commit 8efface66a
3 changed files with 203 additions and 1 deletions

View File

@@ -11,4 +11,5 @@
"data": [
"views/mrp_bom_views.xml",
],
"demo": ["demo/product_product_demo.xml"],
}

View File

@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<!-- PRODUCTS -->
<record id="bam_pp_top" model="product.template">
<field name="name">Top Level</field>
<field name="type">product</field>
<field name="sale_ok" eval="True" />
<field name="uom_id" ref="uom.product_uom_unit" />
<field name="uom_po_id" ref="uom.product_uom_unit" />
<field
name="route_ids"
eval="[(6, 0, [ref('mrp.route_warehouse0_manufacture')])]"
/>
</record>
<record id="bam_pp_sub_level" model="product.template">
<field name="name">Sub Level</field>
<field name="type">product</field>
<field name="sale_ok" eval="True" />
<field name="uom_id" ref="uom.product_uom_unit" />
<field name="uom_po_id" ref="uom.product_uom_unit" />
<field
name="route_ids"
eval="[(6, 0, [ref('mrp.route_warehouse0_manufacture')])]"
/>
</record>
<record id="bam_pp_sub_sub" model="product.template">
<field name="name">Sub Sub</field>
<field name="type">product</field>
<field name="sale_ok" eval="True" />
<field name="uom_id" ref="uom.product_uom_unit" />
<field name="uom_po_id" ref="uom.product_uom_unit" />
<field
name="route_ids"
eval="[(6, 0, [ref('mrp.route_warehouse0_manufacture')])]"
/>
</record>
<record id="bam_pp_sub_sub_2" model="product.template">
<field name="name">Sub Sub 2</field>
<field name="type">product</field>
<field name="sale_ok" eval="True" />
<field name="uom_id" ref="uom.product_uom_unit" />
<field name="uom_po_id" ref="uom.product_uom_unit" />
<field
name="route_ids"
eval="[(6, 0, [ref('mrp.route_warehouse0_manufacture')])]"
/>
</record>
<!-- ATTRIBUTES -->
<record id="bam_attr_1" model="product.attribute">
<field name="name">attr1</field>
<field name="sequence">10</field>
</record>
<record id="bam_attr_1_office" model="product.attribute.value">
<field name="name">office</field>
<field name="attribute_id" ref="bam_attr_1" />
<field name="sequence">1</field>
</record>
<record id="bam_attr_1_gaming" model="product.attribute.value">
<field name="name">gaming</field>
<field name="attribute_id" ref="bam_attr_1" />
<field name="sequence">1</field>
</record>
<record id="bam_attr_2" model="product.attribute">
<field name="name">attr2</field>
<field name="sequence">10</field>
</record>
<record id="bam_attr_2_v1" model="product.attribute.value">
<field name="name">v1</field>
<field name="attribute_id" ref="bam_attr_2" />
<field name="sequence">1</field>
</record>
<record id="bam_attr_2_v2" model="product.attribute.value">
<field name="name">v2</field>
<field name="attribute_id" ref="bam_attr_2" />
<field name="sequence">1</field>
</record>
<!-- PTALs -->
<record id="bam_ptal_1_1" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="bam_pp_top" />
<field name="attribute_id" ref="bam_attr_1" />
<field
name="value_ids"
eval="[(6, 0, [ref('mrp_bom_attribute_match.bam_attr_1_office'), ref('mrp_bom_attribute_match.bam_attr_1_gaming')])]"
/>
</record>
<record id="bam_ptal_1_2" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="bam_pp_top" />
<field name="attribute_id" ref="bam_attr_2" />
<field
name="value_ids"
eval="[(6, 0, [ref('mrp_bom_attribute_match.bam_attr_2_v1'), ref('mrp_bom_attribute_match.bam_attr_2_v2')])]"
/>
</record>
<record id="bam_ptal_2_1" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="bam_pp_sub_level" />
<field name="attribute_id" ref="bam_attr_2" />
<field
name="value_ids"
eval="[(6, 0, [ref('mrp_bom_attribute_match.bam_attr_2_v1'), ref('mrp_bom_attribute_match.bam_attr_2_v2')])]"
/>
</record>
<record id="bam_ptal_2_2" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="bam_pp_sub_level" />
<field name="attribute_id" ref="bam_attr_1" />
<field
name="value_ids"
eval="[(6, 0, [ref('mrp_bom_attribute_match.bam_attr_1_gaming'), ref('mrp_bom_attribute_match.bam_attr_1_office')])]"
/>
</record>
<record id="bam_ptal_3" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="bam_pp_sub_sub" />
<field name="attribute_id" ref="bam_attr_1" />
<field
name="value_ids"
eval="[(6, 0, [ref('mrp_bom_attribute_match.bam_attr_1_office'), ref('mrp_bom_attribute_match.bam_attr_1_gaming')])]"
/>
</record>
<record id="bam_ptal_4" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="bam_pp_sub_sub_2" />
<field name="attribute_id" ref="bam_attr_2" />
<field
name="value_ids"
eval="[(6, 0, [ref('mrp_bom_attribute_match.bam_attr_2_v1'), ref('mrp_bom_attribute_match.bam_attr_2_v2')])]"
/>
</record>
<!-- PTAVs -->
<function model="ir.model.data" name="_update_xmlids">
<value
model="base"
eval="[{
'xml_id': 'mrp_bom_attribute_match.bam_pp_top_ptav_1',
'record': obj().env.ref('mrp_bom_attribute_match.bam_ptal_1_1').product_template_value_ids[0],
'noupdate': True,
},{
'xml_id': 'mrp_bom_attribute_match.bam_pp_top_ptav_2',
'record': obj().env.ref('mrp_bom_attribute_match.bam_ptal_1_2').product_template_value_ids[0],
'noupdate': True,
},{
'xml_id': 'mrp_bom_attribute_match.bam_pp_sub_level_ptav_1',
'record': obj().env.ref('mrp_bom_attribute_match.bam_ptal_2_1').product_template_value_ids[0],
'noupdate': True,
},{
'xml_id': 'mrp_bom_attribute_match.bam_pp_sub_level_ptav_2',
'record': obj().env.ref('mrp_bom_attribute_match.bam_ptal_2_2').product_template_value_ids[0],
'noupdate': True,
},{
'xml_id': 'mrp_bom_attribute_match.bam_pp_sub_sub_ptav_1',
'record': obj().env.ref('mrp_bom_attribute_match.bam_ptal_3').product_template_value_ids[0],
'noupdate': True,
},{
'xml_id': 'mrp_bom_attribute_match.bam_pp_sub_sub_2_ptav_1',
'record': obj().env.ref('mrp_bom_attribute_match.bam_ptal_4').product_template_value_ids[0],
'noupdate': True,
}]"
/>
</function>
<!-- BOMs -->
<record id="bam_bom_sub_level" model="mrp.bom">
<field name="product_tmpl_id" ref="bam_pp_sub_level" />
</record>
<record id="bam_bom_sub_level_line_1" model="mrp.bom.line">
<field name="component_template_id" ref="bam_pp_sub_sub" />
<field name="product_qty">1</field>
<field name="product_uom_id" ref="uom.product_uom_unit" />
<field name="bom_id" ref="bam_bom_sub_level" />
</record>
<record id="bam_bom_sub_level_line_2" model="mrp.bom.line">
<field name="component_template_id" ref="bam_pp_sub_sub_2" />
<field name="product_qty">1</field>
<field name="product_uom_id" ref="uom.product_uom_unit" />
<field name="bom_id" ref="bam_bom_sub_level" />
</record>
<record id="bam_bom_top_level" model="mrp.bom">
<field name="product_tmpl_id" ref="bam_pp_top" />
</record>
<record id="bam_bom_top_level_line_1" model="mrp.bom.line">
<field name="component_template_id" ref="bam_pp_sub_level" />
<field name="product_qty">1</field>
<field name="product_uom_id" ref="uom.product_uom_unit" />
<field name="bom_id" ref="bam_bom_top_level" />
</record>
</odoo>

View File

@@ -32,7 +32,9 @@ class ReportBomStructure(models.AbstractModel):
if to_ignore_line_ids:
for to_ignore_line_id in to_ignore_line_ids:
bom.bom_line_ids = [(3, to_ignore_line_id, 0)]
product = bom._get_component_template_product(line, product, line.product_id)
product = bom._get_component_template_product(
line, product, line.product_id
)
components, total = super()._get_bom_lines(
bom, bom_quantity, product, line_id, level
)
@@ -74,6 +76,7 @@ class ReportBomStructure(models.AbstractModel):
else:
prod_qty = line.product_qty * factor / bom.product_qty
company = bom.company_id or self.env.company
# Modification start
if line.component_template_id:
vals = product.product_template_attribute_value_ids.mapped(
"product_attribute_value_id"
@@ -98,6 +101,7 @@ class ReportBomStructure(models.AbstractModel):
price += company.currency_id.round(not_rounded_price)
else:
continue
# Modification end
else:
not_rounded_price = (
line.product_id.uom_id._compute_price(