diff --git a/addons/account/models/account.py b/addons/account/models/account.py index e186b96299de75c55a90c34fc0b104f3b49f3960..36b0077a7019564bf064852c36e1fb05f505048f 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -653,25 +653,24 @@ class AccountTax(models.Model): else: tax_amount = currency.round(tax_amount) - if tax_amount: - if tax.price_include: - total_excluded -= tax_amount - base -= tax_amount - else: - total_included += tax_amount - - if tax.include_base_amount: - base += tax_amount - - taxes.append({ - 'id': tax.id, - 'name': tax.name, - 'amount': tax_amount, - 'sequence': tax.sequence, - 'account_id': tax.account_id.id, - 'refund_account_id': tax.refund_account_id.id, - 'analytic': tax.analytic, - }) + if tax.price_include: + total_excluded -= tax_amount + base -= tax_amount + else: + total_included += tax_amount + + if tax.include_base_amount: + base += tax_amount + + taxes.append({ + 'id': tax.id, + 'name': tax.name, + 'amount': tax_amount, + 'sequence': tax.sequence, + 'account_id': tax.account_id.id, + 'refund_account_id': tax.refund_account_id.id, + 'analytic': tax.analytic, + }) return { 'taxes': sorted(taxes, key=lambda k: k['sequence']), diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index 447d26b3c6df2727f320682b9e0d9609ea63bf0b..8b62b5db3982766347eee15eb659b9a7cdae0643 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -623,16 +623,17 @@ class AccountInvoice(models.Model): def tax_line_move_line_get(self): res = [] for tax_line in self.tax_line_ids: - res.append({ - 'tax_line_id': tax_line.tax_id.id, - 'type': 'tax', - 'name': tax_line.name, - 'price_unit': tax_line.amount, - 'quantity': 1, - 'price': tax_line.amount, - 'account_id': tax_line.account_id.id, - 'account_analytic_id': tax_line.account_analytic_id.id, - }) + if tax_line.amount: + res.append({ + 'tax_line_id': tax_line.tax_id.id, + 'type': 'tax', + 'name': tax_line.name, + 'price_unit': tax_line.amount, + 'quantity': 1, + 'price': tax_line.amount, + 'account_id': tax_line.account_id.id, + 'account_analytic_id': tax_line.account_analytic_id.id, + }) return res def inv_line_characteristic_hashcode(self, invoice_line): diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 41d6c0a020b8260bd5ce8c8875553f2444bbe665..c6f8dd3165ff1a9e843dc6d979ebc80211a0d101 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -976,20 +976,21 @@ class AccountMoveLine(models.Model): vals['amount_currency'] = self.env['res.currency'].browse(vals['currency_id']).round(vals['amount_currency'] * (amount / res['total_excluded'])) # Create tax lines for tax_vals in res['taxes']: - account_id = (amount > 0 and tax_vals['account_id'] or tax_vals['refund_account_id']) - if not account_id: account_id = vals['account_id'] - tax_lines_vals.append({ - 'account_id': account_id, - 'name': vals['name'] + ' ' + tax_vals['name'], - 'tax_line_id': tax_vals['id'], - 'move_id': vals['move_id'], - 'date': vals['date'], - 'partner_id': vals.get('partner_id'), - 'ref': vals.get('ref'), - 'statement_id': vals.get('statement_id'), - 'debit': tax_vals['amount'] > 0 and tax_vals['amount'] or 0.0, - 'credit': tax_vals['amount'] < 0 and -tax_vals['amount'] or 0.0, - }) + if tax_vals['amount']: + account_id = (amount > 0 and tax_vals['account_id'] or tax_vals['refund_account_id']) + if not account_id: account_id = vals['account_id'] + tax_lines_vals.append({ + 'account_id': account_id, + 'name': vals['name'] + ' ' + tax_vals['name'], + 'tax_line_id': tax_vals['id'], + 'move_id': vals['move_id'], + 'date': vals['date'], + 'partner_id': vals.get('partner_id'), + 'ref': vals.get('ref'), + 'statement_id': vals.get('statement_id'), + 'debit': tax_vals['amount'] > 0 and tax_vals['amount'] or 0.0, + 'credit': tax_vals['amount'] < 0 and -tax_vals['amount'] or 0.0, + }) new_line = super(AccountMoveLine, self).create(vals) for tax_line_vals in tax_lines_vals: