From 976499ac782f9704bf1eb26067b5c4b3a9b22b24 Mon Sep 17 00:00:00 2001 From: Olivier Colson <oco@odoo.com> Date: Wed, 6 Jun 2018 15:24:59 +0200 Subject: [PATCH] [FIX] purchase: anglosaxon valuation: use date instead of date_invoice for currency conversions. --- addons/purchase/models/account_invoice.py | 8 ++++---- .../tests/test_anglo_saxon_valuation_reconciliation.py | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/purchase/models/account_invoice.py b/addons/purchase/models/account_invoice.py index fd01afa29a01..349455a43491 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_invoice).compute(line.price_unit, self.currency_id, round=False), + 'price_unit': line.order_id.currency_id.with_context(date=self.date).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_invoice).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).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_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) + 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) 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_invoice).compute(i_line.purchase_line_id.price_unit, inv.currency_id, round=False) + valuation_price_unit = po_currency.with_context(date=inv.date).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 diff --git a/addons/purchase/tests/test_anglo_saxon_valuation_reconciliation.py b/addons/purchase/tests/test_anglo_saxon_valuation_reconciliation.py index d26d2a43edb2..fea9c9e38d09 100644 --- a/addons/purchase/tests/test_anglo_saxon_valuation_reconciliation.py +++ b/addons/purchase/tests/test_anglo_saxon_valuation_reconciliation.py @@ -53,6 +53,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCase): 'name': 'vendor bill', 'type': 'in_invoice', 'date_invoice': '2017-12-31', + 'date': '2017-12-31', 'account_id': account_receivable.id, }) rslt.purchase_order_change() -- GitLab