[IMP] product*: create product and variant by xml file
before this commit:
===================
you can not create xml record for product.template and product.product and link them for same product
if you like to achieve it you need to do it like
```
<record id="product_template_1" model="product.template">
<field name="name">Box</field>
.
.
.
<field name="list_price">8000.0</field>
</record>
<record id="product_template_attribute_line_1" model="product.template.attribute.line">
<field name="product_tmpl_id" ref="product_template_1"/>
<field name="attribute_id" ref="product_attribute_color"/>
<field name="value_ids" eval="[(6, 0, [ref('product.product_attribute_value_1'), ref('product.product_attribute_value_2')])]"/>
</record>
<function model="ir.model.data" name="_update_xmlids">
<value model="base" eval="[{
'xml_id': 'product.product_template_attribute_value_1',
'record': obj().env.ref('product.product_template_attribute_line_1').product_template_value_ids[0],
'noupdate': True,
}, {
'xml_id': 'product.product_template_attribute_value_2',
'record': obj().env.ref('product.product_template_attribute_line_1').product_template_value_ids[1],
'noupdate': True,
},]"/>
</function>
<function model="ir.model.data" name="_update_xmlids">
<value model="base" eval="[{
'xml_id': 'product.product_product_red',
'record': obj().env.ref('product.product_template_1')._get_variant_for_combination( obj().env.ref('product.product_template_attribute_value_1')),
'noupdate': True,
}, {
'xml_id': 'product.product_product_4b',
'record': obj().env.ref('product.product_template_1')._get_variant_for_combination( obj().env.ref('product.product_template_attribute_value_2')),
'noupdate': True,
}]"/>
</function>
```
after this commit:
==================
you can create product.tempalte and product.product from xml file and link it manully by attribute value
like
```
<record id="product_template_1" model="product.template" context="{'create_product_product': False}">
<field name="name">Box</field>
.
.
.
<field name="list_price">8000.0</field>
</record>
<record id="product_template_attribute_line_1" model="product.template.attribute.line" context="{'create_product_product': False}">
<field name="product_tmpl_id" ref="product_template_1"/>
<field name="attribute_id" ref="product_attribute_color"/>
<field name="value_ids" eval="[(6, 0, [ref('product_attribute_value_blue'), ref('product_attribute_value_red')])]"/>
</record>
<record id="product_template_attribute_value_1" model="product.template.attribute.value">
<field name="attribute_line_id" ref="product_template_attribute_line_1"/>
<field name="product_tmpl_id" ref="product_template_1"/>
<field name="attribute_id" ref="product_attribute_color"/>
<field name="product_attribute_value_id" ref="product_attribute_value_blue"/>
</record>
<record id="product_product_blue" model="product.product">
<field name="product_tmpl_id" ref="software_reseller.product_template_1"/>
.
.
.
<field name="product_template_variant_value_ids" eval="[(6, 0, [ref('product_template_attribute_value_1')])]"/>
</record>
<record id="product_template_attribute_value_2" model="product.template.attribute.value">
<field name="attribute_line_id" ref="product_template_attribute_line_1"/>
<field name="product_tmpl_id" ref="product_template_1"/>
<field name="attribute_id" ref="product_attribute_color"/>
<field name="product_attribute_value_id" ref="product_attribute_value_red"/>
</record>
<record id="product_product_red" model="product.product">
<field name="product_tmpl_id" ref="software_reseller.product_template_1"/>
.
.
.
<field name="product_template_variant_value_ids" eval="[(6, 0, [ref('product_template_attribute_value_2')])]"/>
</record>
```
closes odoo/odoo#139669
Signed-off-by: Pierre Masereel (pim) <pim@odoo.com>