diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 859ed9dd146..2ae187ea4ff 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1101,6 +1101,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 d546882e143..0a852647637 100644 --- a/addons/sale_margin/models/sale_order.py +++ b/addons/sale_margin/models/sale_order.py @@ -57,7 +57,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):