diff --git a/addons/product/product.py b/addons/product/product.py index e771fb58982..8fdf56e5c94 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -378,6 +378,25 @@ class product_product(osv.osv): if 'uom' in context: result2[res['id']] = self.pool.get('product.uom')._compute_price(cr, uid, context['uom'], result2[res['id']]) return result2 + + def copy(self, cr, uid, id, default=None, context=None): + if not context: + context={} + + if ('variant' in context) and context['variant']: + fields = ['product_tmpl_id', 'active', 'variants', 'default_code', + 'price_margin', 'price_extra'] + data = self.read(cr, uid, id, fields=fields, context=context) + for f in fields: + if f in default: + data[f] = default[f] + data['product_tmpl_id'] = data.get('product_tmpl_id', False) \ + and data['product_tmpl_id'][0] + del data['id'] + return self.create(cr, uid, data) + else: + return super(product_product, self).copy(cr, uid, id, default=default, + context=context) product_product() class product_packaging(osv.osv): diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index 4acc2ef1517..9cdfd049e4d 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -138,6 +138,7 @@ ir.actions.act_window product.product form + {'variant': True}