From 68cb70a81dfce26c5316168a4dbcd079bb86c63c Mon Sep 17 00:00:00 2001 From: Olivier Colson Date: Fri, 8 Jun 2018 10:06:09 +0200 Subject: [PATCH] [FIX] purchase: anglosaxon valuation: Use invoice_date when date is not set on invoices --- addons/purchase/models/account_invoice.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/purchase/models/account_invoice.py b/addons/purchase/models/account_invoice.py index 349455a4349..f9ad010b155 100644 --- a/addons/purchase/models/account_invoice.py +++ b/addons/purchase/models/account_invoice.py @@ -52,7 +52,7 @@ class AccountInvoice(models.Model): 'uom_id': line.product_uom.id, 'product_id': line.product_id.id, 'account_id': invoice_line.with_context({'journal_id': self.journal_id.id, 'type': 'in_invoice'})._default_account(), - 'price_unit': line.order_id.currency_id.with_context(date=self.date).compute(line.price_unit, self.currency_id, round=False), + 'price_unit': line.order_id.currency_id.with_context(date=self.date or self.date_invoice).compute(line.price_unit, self.currency_id, round=False), 'quantity': qty, 'discount': 0.0, 'account_analytic_id': line.account_analytic_id.id, @@ -99,7 +99,7 @@ class AccountInvoice(models.Model): def _onchange_currency_id(self): if self.currency_id: for line in self.invoice_line_ids.filtered(lambda r: r.purchase_line_id): - line.price_unit = line.purchase_id.currency_id.with_context(date=self.date).compute(line.purchase_line_id.price_unit, self.currency_id, round=False) + line.price_unit = line.purchase_id.currency_id.with_context(date=self.date or self.date_invoice).compute(line.purchase_line_id.price_unit, self.currency_id, round=False) @api.onchange('invoice_line_ids') def _onchange_origin(self): @@ -170,7 +170,7 @@ class AccountInvoice(models.Model): if i_line.product_id.cost_method != 'standard' and i_line.purchase_line_id: po_currency = i_line.purchase_id.currency_id #for average/fifo/lifo costing method, fetch real cost price from incomming moves - valuation_price_unit = po_currency.with_context(date=inv.date).compute(i_line.purchase_line_id.product_uom._compute_price(i_line.purchase_line_id.price_unit, i_line.uom_id), inv.currency_id, round=False) + valuation_price_unit = po_currency.with_context(date=inv.date or inv.date_invoice).compute(i_line.purchase_line_id.product_uom._compute_price(i_line.purchase_line_id.price_unit, i_line.uom_id), inv.currency_id, round=False) stock_move_obj = self.env['stock.move'] valuation_stock_move = stock_move_obj.search([ ('purchase_line_id', '=', i_line.purchase_line_id.id), @@ -196,7 +196,7 @@ class AccountInvoice(models.Model): elif i_line.product_id.cost_method == 'fifo': # In this condition, we have a real price-valuated product which has not yet been received - valuation_price_unit = po_currency.with_context(date=inv.date).compute(i_line.purchase_line_id.price_unit, inv.currency_id, round=False) + valuation_price_unit = po_currency.with_context(date=inv.date or inv.date_invoice).compute(i_line.purchase_line_id.price_unit, inv.currency_id, round=False) interim_account_price = valuation_price_unit * line_quantity invoice_cur_prec = inv.currency_id.decimal_places