[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) <flg@odoo.com>
Signed-off-by: Wala Gauthier (gawa) <gawa@odoo.com>
This commit is contained in:
gawa-odoo
2022-10-06 19:58:50 +02:00
parent 49020574f3
commit e0680fc7fd
2 changed files with 12 additions and 10 deletions
+11 -10
View File
@@ -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()
# -------------------------------------------------------------------------
+1
View File
@@ -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,