diff --git a/addons/product/product.py b/addons/product/product.py index 3020568a30c..25a5a4332b3 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -587,6 +587,9 @@ class product_product(osv.osv): if field_value > 0.0: product = self.browse(cr, uid, product_id, context=context) price_extra = (field_value - product.list_price) + if product.price_margin: + price = (product.list_price + (product.list_price * (product.price_margin / 100))) + price_extra = (field_value - price) return self.write(cr, uid, [product_id], {'price_extra': price_extra}, context=context) def _get_partner_code_name(self, cr, uid, ids, product, partner_id, context=None): diff --git a/addons/product/test/compute_price_margin.yml b/addons/product/test/compute_price_margin.yml index 5443b37f103..a8e5c2c558a 100644 --- a/addons/product/test/compute_price_margin.yml +++ b/addons/product/test/compute_price_margin.yml @@ -21,11 +21,11 @@ product = self.pool.get('product.product').browse(cr,uid,variant_id.id,context=context) assert product.lst_price == (20 + ((20 * 10) / 100)) + 30, "Sell price is not correspond." - - In order to check the Price Extra after setting 'public sale price(lst_price)' of a product. + In order to check the Price Extra after setting 'public sale price(lst_price)' of a product. price extra is equal to 32 - (20 + ((20 * 10) / 100)). - !python {model: product.template}: | template = self.browse(cr, uid, ref("product_template_test1")) for variant_id in template.product_variant_ids: - self.pool.get('product.product').write(cr,uid,variant_id.id,{'lst_price':30},context=context) + self.pool.get('product.product').write(cr,uid,variant_id.id,{'lst_price':32},context=context) product = product = self.pool.get('product.product').browse(cr,uid,variant_id.id,context=context) assert product.price_extra == 10, "Price Extra should be 10."