[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:
@@ -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()
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user