diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index 319707b1d78..a94e2761cee 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -1110,7 +1110,8 @@ class AccountInvoiceLine(models.Model): self.name = product.partner_ref account = self.get_invoice_line_account(type, product, fpos, company) - self.account_id = account.id + if account: + self.account_id = account.id self._set_taxes() if type in ('in_invoice', 'in_refund'): diff --git a/addons/purchase/invoice.py b/addons/purchase/invoice.py index eff6aa5d669..852f55467ae 100644 --- a/addons/purchase/invoice.py +++ b/addons/purchase/invoice.py @@ -42,22 +42,25 @@ class AccountInvoice(models.Model): qty = line.qty_received - line.qty_invoiced if float_compare(qty, 0.0, precision_rounding=line.product_uom.rounding) <= 0: qty = 0.0 - 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) taxes = line.taxes_id or line.product_id.supplier_taxes_id invoice_line_tax_ids = self.purchase_id.fiscal_position_id.map_tax(taxes) - result.append({ + 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': account.id, + 'account_id': self.env['account.invoice.line'].with_context({'journal_id': self.journal_id.id, 'type': 'in_invoice'})._default_account(), 'price_unit': line.price_unit, 'quantity': qty, 'discount': 0.0, '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) + if account: + data['account_id'] = account.id + result.append(data) self.invoice_line_ids = result return {}