[FIX] Inheritance of purchase_order_change by preparing data dictionary
Data dictionary filled inside the function purchase_order_change had no possibility of inheritance. opw:690733
This commit is contained in:
committed by
Goffin Simon
parent
a2f0dda366
commit
d0bfcfd41d
+29
-24
@@ -30,6 +30,34 @@ class AccountInvoice(models.Model):
|
||||
]}
|
||||
return result
|
||||
|
||||
def _prepare_invoice_line_from_po_line(self, line):
|
||||
if line.product_id.purchase_method == 'purchase':
|
||||
qty = line.product_qty - line.qty_invoiced
|
||||
else:
|
||||
qty = line.qty_received - line.qty_invoiced
|
||||
if float_compare(qty, 0.0, precision_rounding=line.product_uom.rounding) <= 0:
|
||||
qty = 0.0
|
||||
taxes = line.taxes_id
|
||||
invoice_line_tax_ids = self.purchase_id.fiscal_position_id.map_tax(taxes)
|
||||
invoice_line = self.env['account.invoice.line']
|
||||
data = {
|
||||
'purchase_line_id': line.id,
|
||||
'name': line.name,
|
||||
'origin': self.purchase_id.origin,
|
||||
'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.compute(line.price_unit, self.currency_id, round=False),
|
||||
'quantity': qty,
|
||||
'discount': 0.0,
|
||||
'account_analytic_id': line.account_analytic_id.id,
|
||||
'invoice_line_tax_ids': invoice_line_tax_ids.ids
|
||||
}
|
||||
account = invoice_line.get_invoice_line_account('in_invoice', line.product_id, self.purchase_id.fiscal_position_id, self.env.user.company_id)
|
||||
if account:
|
||||
data['account_id'] = account.id
|
||||
return data
|
||||
|
||||
# Load all unsold PO lines
|
||||
@api.onchange('purchase_id')
|
||||
def purchase_order_change(self):
|
||||
@@ -43,30 +71,7 @@ class AccountInvoice(models.Model):
|
||||
# Load a PO line only once
|
||||
if line in self.invoice_line_ids.mapped('purchase_line_id'):
|
||||
continue
|
||||
if line.product_id.purchase_method == 'purchase':
|
||||
qty = line.product_qty - line.qty_invoiced
|
||||
else:
|
||||
qty = line.qty_received - line.qty_invoiced
|
||||
if float_compare(qty, 0.0, precision_rounding=line.product_uom.rounding) <= 0:
|
||||
qty = 0.0
|
||||
taxes = line.taxes_id
|
||||
invoice_line_tax_ids = self.purchase_id.fiscal_position_id.map_tax(taxes)
|
||||
data = {
|
||||
'purchase_line_id': line.id,
|
||||
'name': line.name,
|
||||
'origin': self.purchase_id.origin,
|
||||
'uom_id': line.product_uom.id,
|
||||
'product_id': line.product_id.id,
|
||||
'account_id': self.env['account.invoice.line'].with_context({'journal_id': self.journal_id.id, 'type': 'in_invoice'})._default_account(),
|
||||
'price_unit': line.order_id.currency_id.compute(line.price_unit, self.currency_id, round=False),
|
||||
'quantity': qty,
|
||||
'discount': 0.0,
|
||||
'account_analytic_id': line.account_analytic_id.id,
|
||||
'invoice_line_tax_ids': invoice_line_tax_ids.ids
|
||||
}
|
||||
account = new_lines.get_invoice_line_account('in_invoice', line.product_id, self.purchase_id.fiscal_position_id, self.env.user.company_id)
|
||||
if account:
|
||||
data['account_id'] = account.id
|
||||
data = self._prepare_invoice_line_from_po_line(line)
|
||||
new_line = new_lines.new(data)
|
||||
new_line._set_additional_fields(self)
|
||||
new_lines += new_line
|
||||
|
||||
Reference in New Issue
Block a user