[FIX] purchase: anglosaxon valuation: Use invoice_date when date is not set on invoices

This commit is contained in:
Olivier Colson
2018-06-08 10:06:09 +02:00
parent 2a2a15e60f
commit 68cb70a81d
+4 -4
View File
@@ -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