diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 9566d195c33..84f033b0483 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1109,6 +1109,7 @@ exports.Orderline = Backbone.Model.extend({ orderline.quantity = this.quantity; orderline.quantityStr = this.quantityStr; orderline.discount = this.discount; + orderline.price = this.price; orderline.type = this.type; orderline.selected = false; return orderline; diff --git a/addons/sale_margin/models/sale_order.py b/addons/sale_margin/models/sale_order.py index 90f866ecfec..fe788d24bba 100644 --- a/addons/sale_margin/models/sale_order.py +++ b/addons/sale_margin/models/sale_order.py @@ -59,7 +59,12 @@ class SaleOrderLine(models.Model): def _product_margin(self): for line in self: currency = line.order_id.pricelist_id.currency_id - line.margin = currency.round(line.price_subtotal - ((line.purchase_price or line.product_id.standard_price) * line.product_uom_qty)) + price = line.purchase_price + if not price: + from_cur = line.env.user.company_id.currency_id.with_context(date=line.order_id.date_order) + price = from_cur.compute(line.product_id.standard_price, currency, round=False) + + line.margin = currency.round(line.price_subtotal - (price * line.product_uom_qty)) class SaleOrder(models.Model):