[FIX] product: remove empty variant on first attribute add

Adding the attributes leave all the old variants available.

While not completely intuitive, this behaviour is not inherently
wrong. However, on the first attribute addition, it leaves a variant
with 0 attributes that can cause problems in the ecommerce. This commit
make it so that this empty variant is archived.
This commit is contained in:
Laurent Smet
2016-09-23 14:50:47 +02:00
committed by Damien Bouvy
parent 5f1c771b53
commit 20e19fdf85
@@ -375,6 +375,12 @@ class ProductTemplate(models.Model):
variant_matrix = itertools.product(*(line.value_ids for line in tmpl_id.attribute_line_ids if line.value_ids and line.value_ids[0].attribute_id.create_variant))
variant_matrix = map(lambda record_list: reduce(lambda x, y: x+y, record_list, self.env['product.attribute.value']), variant_matrix)
to_create_variants = filter(lambda rec_set: set(rec_set.ids) not in existing_variants, variant_matrix)
# archive dummy variant
if len(existing_variants) > 0:
for variant in tmpl_id.product_variant_ids:
if len(variant.attribute_value_ids.ids) == 0:
variant.write({'active': False})
# adding an attribute with only one value should not recreate product
# write this attribute on every product to make sure we don't lose them