[IMP] purchase: add invoice line

Use method new() instead of caching the current values.
This commit is contained in:
Nicolas Martinelli
2016-01-21 15:51:20 +01:00
parent dc02f773ce
commit be0ff1946d
+5 -21
View File
@@ -33,28 +33,12 @@ class AccountInvoice(models.Model):
# Load all unsold PO lines
@api.onchange('purchase_id')
def purchase_order_change(self):
result = []
if not self.purchase_id:
return {}
if not self.partner_id:
self.partner_id = self.purchase_id.partner_id.id
# Keep existing lines. We want to be able to add several PO on the same invoice.
for line in self.invoice_line_ids:
result.append({
'purchase_line_id': line.purchase_line_id.id,
'name': line.name,
'origin': line.origin,
'uom_id': line.uom_id.id,
'product_id': line.product_id.id,
'account_id': line.account_id.id,
'price_unit': line.price_unit,
'quantity': line.quantity,
'discount': line.discount,
'account_analytic_id': line.account_analytic_id.id,
'invoice_line_tax_ids': line.invoice_line_tax_ids.ids,
})
new_lines = self.env['account.invoice.line']
for line in self.purchase_id.order_line:
# Load a PO line only once
if line in self.invoice_line_ids.mapped('purchase_line_id'):
@@ -80,13 +64,13 @@ class AccountInvoice(models.Model):
'account_analytic_id': line.account_analytic_id.id,
'invoice_line_tax_ids': invoice_line_tax_ids.ids
}
account = self.env['account.invoice.line'].get_invoice_line_account('in_invoice', line.product_id, self.purchase_id.fiscal_position_id, self.env.user.company_id)
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
result.append(data)
new_line = new_lines.new(data)
new_lines += new_line
self.invoice_line_ids = False # To avoid duplicates
self.invoice_line_ids = result
self.invoice_line_ids += new_lines
self.purchase_id = False
return {}