From e0680fc7fd955b0584d962063acaa700c6925ef4 Mon Sep 17 00:00:00 2001 From: gawa-odoo Date: Tue, 27 Sep 2022 13:15:07 +0000 Subject: [PATCH] [FIX] account: prevent analytic distribution on all lines of invoice Before the fix, the payable/receivable line would also receive the distribution. The compute function will only add it to the lines of display_type 'product' (as before 7e34030). We now also add it to taxes that don't have `use_in_closing`. closes odoo/odoo#102486 X-original-commit: 5551f336b61a6d441f3ec5416f987d8a98c221ca Signed-off-by: Florian Gilbert (flg) Signed-off-by: Wala Gauthier (gawa) --- addons/account/models/account_move_line.py | 21 +++++++++++---------- addons/account/models/account_tax.py | 1 + 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/addons/account/models/account_move_line.py b/addons/account/models/account_move_line.py index e25088a0b14..4510ca95cc8 100644 --- a/addons/account/models/account_move_line.py +++ b/addons/account/models/account_move_line.py @@ -947,7 +947,7 @@ class AccountMoveLine(models.Model): 'group_tax_id': tax['group'] and tax['group'].id or False, 'account_id': tax['account_id'] or line.account_id.id, 'currency_id': line.currency_id.id, - 'analytic_distribution': tax['analytic'] and line.analytic_distribution, + 'analytic_distribution': (tax['analytic'] or not tax['use_in_tax_closing']) and line.analytic_distribution, 'tax_ids': [(6, 0, tax['tax_ids'])], 'tax_tag_ids': [(6, 0, tax['tag_ids'])], 'partner_id': line.move_id.partner_id.id or line.partner_id.id, @@ -1073,15 +1073,16 @@ class AccountMoveLine(models.Model): @api.depends('account_id', 'partner_id', 'product_id') def _compute_analytic_distribution_stored_char(self): for line in self: - distribution = self.env['account.analytic.distribution.model']._get_distributionjson({ - "product_id": line.product_id.id, - "product_categ_id": line.product_id.categ_id.id, - "partner_id": line.partner_id.id, - "partner_category_id": line.partner_id.category_id.ids, - "account_prefix": line.account_id.code, - "company_id": line.company_id.id, - }) - line.analytic_distribution_stored_char = distribution or line.analytic_distribution_stored_char + if line.display_type == 'product' or not line.move_id.is_invoice(include_receipts=True): + distribution = self.env['account.analytic.distribution.model']._get_distributionjson({ + "product_id": line.product_id.id, + "product_categ_id": line.product_id.categ_id.id, + "partner_id": line.partner_id.id, + "partner_category_id": line.partner_id.category_id.ids, + "account_prefix": line.account_id.code, + "company_id": line.company_id.id, + }) + line.analytic_distribution_stored_char = distribution or line.analytic_distribution_stored_char line._compute_analytic_distribution() # ------------------------------------------------------------------------- diff --git a/addons/account/models/account_tax.py b/addons/account/models/account_tax.py index 7dcbb3b84c6..2fbeb99bb84 100644 --- a/addons/account/models/account_tax.py +++ b/addons/account/models/account_tax.py @@ -681,6 +681,7 @@ class AccountTax(models.Model): 'sequence': tax.sequence, 'account_id': repartition_line._get_aml_target_tax_account().id, 'analytic': tax.analytic, + 'use_in_tax_closing': repartition_line.use_in_tax_closing, 'price_include': price_include, 'tax_exigibility': tax.tax_exigibility, 'tax_repartition_line_id': repartition_line.id,