[IMP] product: rename fields variant_ids into attribute_line_ids on the template and attribute_value_ids on the product.

This commit is contained in:
Christophe Matthieu 2014-05-28 19:42:15 +02:00
parent 152ec5bf50
commit 435b5b9ca3
11 changed files with 40 additions and 40 deletions

View File

@ -306,8 +306,8 @@ class mrp_bom(osv.osv):
if set(map(int,bom_line_id.property_ids or [])) - set(properties or []):
continue
# all bom_line_id variant values must be in the product
if bom_line_id.variant_ids:
if not product or (set(map(int,bom_line_id.variant_ids or [])) - set(map(int,product.variant_ids))):
if bom_line_id.attribute_value_ids:
if not product or (set(map(int,bom_line_id.attribute_value_ids or [])) - set(map(int,product.attribute_value_ids))):
continue
if bom_line_id.product_id.id in all_prod:
@ -393,7 +393,7 @@ class mrp_bom_line(osv.osv):
'property_ids': fields.many2many('mrp.property', string='Properties'),
'bom_id': fields.many2one('mrp.bom', 'Parent BoM', ondelete='cascade', select=True, required=True),
'variant_ids': fields.many2many('product.attribute.value', string='Variants', help="BOM Product Variants needed form apply this line."),
'attribute_value_ids': fields.many2many('product.attribute.value', string='Variants', help="BOM Product Variants needed form apply this line."),
}
def _get_uom_id(self, cr, uid, *args):

View File

@ -620,7 +620,7 @@
<field name="product_uom" ref="product.product_uom_unit"/>
<field name="sequence">1</field>
<field name="type">normal</field>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
<field name="bom_id" ref="mrp_bom_11"/>
</record>
<record id="mrp_bom_line_33" model="mrp.bom.line">
@ -629,7 +629,7 @@
<field name="product_uom" ref="product.product_uom_unit"/>
<field name="sequence">2</field>
<field name="type">normal</field>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
<field name="bom_id" ref="mrp_bom_11"/>
</record>
<record id="mrp_bom_line_34" model="mrp.bom.line">

View File

@ -385,7 +385,7 @@
<field name="date_start"/>
<field name="date_stop"/>
<field name="routing_id"/>
<field name="variant_ids" widget="many2many_tags"/>
<field name="attribute_value_ids" widget="many2many_tags"/>
</tree>
</field>
</page>
@ -493,7 +493,7 @@
<field name="date_start"/>
<field name="date_stop"/>
<field name="routing_id"/>
<field name="variant_ids" widget="many2many_tags"/>
<field name="attribute_value_ids" widget="many2many_tags"/>
<field name="property_ids" widget="many2many_tags"/>
</tree>
</field>

View File

@ -548,7 +548,7 @@ class product_template(osv.osv):
'color': fields.integer('Color Index'),
'is_product_variant': fields.function( _is_product_variant, type='boolean', string='Only one product variant'),
'variant_ids': fields.one2many('product.attribute.line', 'product_tmpl_id', 'Product Variants'),
'attribute_line_ids': fields.one2many('product.attribute.line', 'product_tmpl_id', 'Product Variants'),
'product_variant_ids': fields.one2many('product.product', 'product_tmpl_id', 'Products', required=True),
'product_variant_count': fields.function( _get_product_variant_count, type='integer', string='Product Variant Number'),
@ -623,7 +623,7 @@ class product_template(osv.osv):
# list of values combination
all_variants = [[]]
for variant_id in tmpl_id.variant_ids:
for variant_id in tmpl_id.attribute_line_ids:
if len(variant_id.value_ids) > 1:
temp_variants = []
for value_id in variant_id.value_ids:
@ -636,7 +636,7 @@ class product_template(osv.osv):
variants_active_ids = []
variants_inactive = []
for product_id in tmpl_id.product_variant_ids:
variants = map(int,product_id.variant_ids)
variants = map(int,product_id.attribute_value_ids)
if variants in all_variants:
variants_active_ids.append(product_id.id)
all_variants.pop(all_variants.index(variants))
@ -651,7 +651,7 @@ class product_template(osv.osv):
for variant_ids in all_variants:
values = {
'product_tmpl_id': tmpl_id.id,
'variant_ids': [(6, 0, variant_ids)]
'attribute_value_ids': [(6, 0, variant_ids)]
}
id = product_obj.create(cr, uid, values, context=ctx)
variants_active_ids.append(id)
@ -688,7 +688,7 @@ class product_template(osv.osv):
for prod_template_id in ids:
self._set_standard_price(cr, uid, prod_template_id, vals['standard_price'], context=context)
res = super(product_template, self).write(cr, uid, ids, vals, context=context)
if 'variant_ids' in vals or vals.get('active'):
if 'attribute_line_ids' in vals or vals.get('active'):
self.create_variant_ids(cr, uid, ids, context=context)
if 'active' in vals and not vals.get('active'):
ctx = context and context.copy() or {}
@ -800,7 +800,7 @@ class product_product(osv.osv):
else:
res[product.id] = product.list_price
price_extra = 0.0
for variant_id in product.variant_ids:
for variant_id in product.attribute_value_ids:
price_extra += variant_id.price_extra
res[product.id] = (res[product.id] or 0.0) + price_extra
return res
@ -862,7 +862,7 @@ class product_product(osv.osv):
result = dict.fromkeys(ids, False)
for product in self.browse(cr, uid, ids, context=context):
price_extra = 0.0
for variant_id in product.variant_ids:
for variant_id in product.attribute_value_ids:
for price_id in variant_id.price_ids:
if price_id.product_tmpl_id.id == product.product_tmpl_id.id:
price_extra += price_id.price_extra
@ -884,7 +884,7 @@ class product_product(osv.osv):
'product.template': (_get_name_template_ids, ['name'], 10),
'product.product': (lambda self, cr, uid, ids, c=None: ids, [], 10),
}, select=True),
'variant_ids': fields.many2many('product.attribute.value', id1='prod_id', id2='att_id', string='Variants', readonly=True),
'attribute_value_ids': fields.many2many('product.attribute.value', id1='prod_id', id2='att_id', string='Variants', readonly=True),
# image: all image fields are base64 encoded and PIL-supported
'image_variant': fields.binary("Variant Image",
@ -967,7 +967,7 @@ class product_product(osv.osv):
result = []
for product in self.browse(cr, SUPERUSER_ID, ids, context=context):
variant = ", ".join([v.name for v in product.variant_ids])
variant = ", ".join([v.name for v in product.attribute_value_ids])
name = variant and "%s (%s)" % (product.name, variant) or product.name
sellers = []
if partner_id:

View File

@ -175,22 +175,22 @@ HDD SH-1</field>
Dual-core A5 with quad-core graphics
FaceTime HD Camera, 1.2 MP Photos</field>
<field name="default_code">A2323</field>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_3')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_3')])]"/>
</record>
<record id="product_product_4b" model="product.product">
<field name="default_code">A2324</field>
<field name="product_tmpl_id" ref="product_product_4_product_template"/>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_4')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_4')])]"/>
</record>
<record id="product_product_4c" model="product.product">
<field name="default_code">A2325</field>
<field name="product_tmpl_id" ref="product_product_4_product_template"/>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_3')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_3')])]"/>
</record>
<record id="product_product_4d" model="product.product">
<field name="default_code">A2326</field>
<field name="product_tmpl_id" ref="product_product_4_product_template"/>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_4')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_4')])]"/>
</record>
<record id="product_attribute_line_1" model="product.attribute.line">
@ -210,7 +210,7 @@ FaceTime HD Camera, 1.2 MP Photos</field>
</record>
<record id="product_product_4_product_template" model="product.template">
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_line_1'), ref('product.product_attribute_line_2'), ref('product.product_attribute_line_3')])]"/>
<field name="attribute_line_ids" eval="[(6,0,[ref('product.product_attribute_line_1'), ref('product.product_attribute_line_2'), ref('product.product_attribute_line_3')])]"/>
</record>
<record id="product_attribute_price_1" model="product.attribute.price">
@ -301,12 +301,12 @@ FaceTime HD Camera, 1.2 MP Photos</field>
<field name="uom_id" ref="product_uom_unit"/>
<field name="uom_po_id" ref="product_uom_unit"/>
<field name="default_code">A6678</field>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
</record>
<record id="product_product_11b" model="product.product">
<field name="default_code">A6679</field>
<field name="product_tmpl_id" ref="product_product_11_product_template"/>
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
<field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
</record>
<record id="product_attribute_line_4" model="product.attribute.line">
@ -316,7 +316,7 @@ FaceTime HD Camera, 1.2 MP Photos</field>
</record>
<record id="product_product_11_product_template" model="product.template">
<field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_line_4')])]"/>
<field name="attribute_line_ids" eval="[(6,0,[ref('product.product_attribute_line_4')])]"/>
</record>
<record id="product_attribute_price_2" model="product.attribute.price">

View File

@ -15,7 +15,7 @@
<filter string="Consumable" name="consumable" icon="terp-accessories-archiver" domain="[('type','=','consu')]" help="Consumable products"/>
<separator/>
<filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<field string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.variant_ids.name','ilike',self)]"/>
<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)]"/>
<field name="company_id"/>
<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! -->
<group expand='0' string='Group by...'>
@ -129,7 +129,7 @@
<field name="description_sale" placeholder="note to be displayed on quotations..."/>
</page>
<page name="variants" string="Variants">
<field name="variant_ids" widget="one2many_list">
<field name="attribute_line_ids" widget="one2many_list">
<tree string="Variants" editable="bottom">
<field name="attribute_id"/>
<field name="value_ids" widget="many2many_tags" domain="[('attribute_id', '=', attribute_id)]" context="{'default_attribute_id': attribute_id}"/>
@ -226,7 +226,7 @@
<field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
</field>
<field name="product_variant_ids" position="replace">
<field name="variant_ids"/>
<field name="attribute_value_ids"/>
</field>
<field name="name" position="after">
<field name="product_tmpl_id" string="Product Template"/>
@ -246,7 +246,7 @@
<tree string="Product Variants">
<field name="default_code"/>
<field name="name"/>
<field name="variant_ids" widget="many2many_tags"/>
<field name="attribute_value_ids" widget="many2many_tags"/>
<field name="lst_price"/>
<field name="price" invisible="not context.get('pricelist',False)"/>
<field name="uom_id"/>
@ -273,7 +273,7 @@
<field name="product_tmpl_id" class="oe_inline" readonly="1" attrs="{'invisible': [('id', '=', False)]}"/>
</field>
<xpath expr="//div[@class='oe_title']" position="inside">
<field name="variant_ids" widget="many2many_tags"/>
<field name="attribute_value_ids" widget="many2many_tags"/>
</xpath>
<page name="variants" position="replace">
</page>
@ -287,7 +287,7 @@
<field name="inherit_id" ref="product.product_template_kanban_view"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="variant_ids"/>
<field name="attribute_value_ids"/>
</field>
<xpath expr="//img[@class='oe_kanban_image']" position="replace">
<img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/>
@ -339,7 +339,7 @@
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<field name="variant_ids" position="before">
<field name="attribute_line_ids" position="before">
<div class="oe_right">
<button class="oe_inline oe_stat_button" string="Variant Prices" name="%(product.variants_template_action)d" type="action" icon="fa-strikethrough"/>
<button class="oe_inline oe_stat_button" name="%(product.product_variant_action)d" type="action" icon="fa-sitemap">

View File

@ -3,7 +3,7 @@
<lot-line type="fields" name="id">
<code type="field" name="code"/>
<product type="field" name="name"/>
<variant type="field" name="variant_ids"/>
<variant type="field" name="attribute_value_ids"/>
<price type="field" name="list_price"/>
<ean13 type="field" name="ean13"/>
<currency type="field" name="company_id.currency_id.name"/>

View File

@ -136,11 +136,11 @@ class website_sale(http.Controller):
elif value[0] == attrib:
ids.append(value[1])
else:
domain += [('variant_ids.value_ids', 'in', ids)]
domain += [('attribute_line_ids.value_ids', 'in', ids)]
attrib = value[0]
ids = [value[1]]
if attrib:
domain += [('variant_ids.value_ids', 'in', ids)]
domain += [('attribute_line_ids.value_ids', 'in', ids)]
attrib_set = set([v[1] for v in attrib_values])
keep = QueryURL('/shop', category=category and int(category), search=search, attrib=attrib_set)

View File

@ -115,7 +115,7 @@ class product_template(osv.Model):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
for p in obj.product_variant_ids:
result[obj.id].append([p.id, map(int,p.variant_ids), p.price])
result[obj.id].append([p.id, map(int,p.attribute_value_ids), p.price])
return result
_columns = {

View File

@ -64,7 +64,7 @@ $(document).ready(function () {
});
var $form_var = $('form.js_add_cart_variants');
var variant_ids = $form_var.data("variant_ids");
var variant_ids = $form_var.data("attribute_value_ids");
$form_var.on('change', 'input, select', function (ev) {
var values = [];
$form_var.find("label").removeClass("text-muted css_not_available");

View File

@ -432,10 +432,10 @@
<template id="product_variants" inherit_id="website_sale.product" optional="enabled" name="Product Variants">
<xpath expr="//form[@action='/shop/cart/update']" position="replace">
<form action="/shop/cart/update" class="js_add_cart_variants" method="POST" t-att-data-variant_ids="product.available_variant_ids">
<form action="/shop/cart/update" class="js_add_cart_variants" method="POST" t-att-data-attribute_value_ids="product.available_variant_ids">
<input type="hidden" name="product_id" t-att-value="int(product.product_variant_ids[0]) if len(product.product_variant_ids) == 1 else '0'"/>
<ul class="nav nav-pills nav-stacked">
<t t-foreach="product.variant_ids" t-as="variant_id">
<t t-foreach="product.attribute_line_ids" t-as="variant_id">
<li t-if="len(variant_id.value_ids) > 1">
<strong t-field="variant_id.attribute_id.name"/>
@ -529,9 +529,9 @@
<template id="product_attributes" inherit_id="website_sale.product" optional="enabled" name="Product attributes">
<xpath expr="//p[@t-field='product.description_sale']" position="after">
<hr t-if="product.variant_ids"/>
<hr t-if="product.attribute_line_ids"/>
<p class="text-muted">
<t t-foreach="product.variant_ids" t-as="variant_id">
<t t-foreach="product.attribute_line_ids" t-as="variant_id">
<t t-set="inc" t-value="0"/>
<span t-field="variant_id.attribute_id"/>:
<t t-foreach="variant_id.value_ids" t-as="value_id"><t t-if="inc">,</t> <span t-field="value_id.name"/><t t-set="inc" t-value="inc+1"/></t>