2
0

[15.0][FIX] account_chart_update: do not browse rep_line in _update_taxes_pending_for_accounts

This commit is contained in:
manu 2022-06-01 11:15:20 +02:00 committed by Luis J. Salvatierra
parent 45ad886f0b
commit b39b008b11
2 changed files with 56 additions and 6 deletions

View File

@ -57,6 +57,42 @@ class TestAccountChartUpdate(common.HttpCase):
self._create_xml_id(record)
return record
def _create_tax_template_with_account(self, name, chart_template, account):
record = self.env["account.tax.template"].create(
{
"name": name,
"amount": 0,
"chart_template_id": chart_template.id,
"tax_group_id": self.env.ref("account.tax_group_taxes").id,
"refund_repartition_line_ids": [
(0, 0, {"repartition_type": "base", "factor_percent": 100.0}),
(
0,
0,
{
"repartition_type": "tax",
"factor_percent": 100.0,
"account_id": account.id,
},
),
],
"invoice_repartition_line_ids": [
(0, 0, {"repartition_type": "base", "factor_percent": 100.0}),
(
0,
0,
{
"repartition_type": "tax",
"factor_percent": 100.0,
"account_id": account.id,
},
),
],
}
)
self._create_xml_id(record)
return record
def _create_fp_tmpl(self, name, chart_template):
record = self.env["account.fiscal.position.template"].create(
{"name": name, "chart_template_id": chart_template.id}
@ -217,6 +253,10 @@ class TestAccountChartUpdate(common.HttpCase):
}
)
self._create_xml_id(fp_template_account)
# Tax with account in repartition lines
tax_template_with_account = self._create_tax_template_with_account(
"Test tax with account", self.chart_template, new_account_tmpl
)
# Check that no action is performed if the option is not selected
wizard_vals = self.wizard_vals.copy()
wizard_vals.update(
@ -238,17 +278,19 @@ class TestAccountChartUpdate(common.HttpCase):
wizard = self.wizard_obj.create(self.wizard_vals)
wizard.action_find_records()
self.assertTrue(wizard.tax_ids)
self.assertEqual(wizard.tax_ids.tax_id, new_tax_tmpl)
self.assertEqual(wizard.tax_ids.type, "new")
self.assertEqual(
wizard.tax_ids.tax_id, new_tax_tmpl + tax_template_with_account
)
for tax in wizard.tax_ids:
self.assertEqual(tax.type, "new")
self.assertTrue(wizard.account_ids)
self.assertEqual(wizard.account_ids.account_id, new_account_tmpl)
self.assertEqual(wizard.tax_ids.type, "new")
self.assertTrue(wizard.fiscal_position_ids)
self.assertEqual(wizard.fiscal_position_ids.fiscal_position_id, new_fp)
self.assertEqual(wizard.fiscal_position_ids.type, "new")
wizard.action_update_records()
self.assertEqual(wizard.state, "done")
self.assertEqual(wizard.new_taxes, 1)
self.assertEqual(wizard.new_taxes, 2)
self.assertEqual(wizard.new_accounts, 1)
self.assertEqual(wizard.new_fps, 1)
self.assertTrue(wizard.log)
@ -256,6 +298,13 @@ class TestAccountChartUpdate(common.HttpCase):
[("name", "=", new_tax_tmpl.name), ("company_id", "=", self.company.id)]
)
self.assertTrue(new_tax)
tax_with_account = self.env["account.tax"].search(
[
("name", "=", "Test tax with account"),
("company_id", "=", self.company.id),
]
)
self.assertTrue(tax_with_account)
new_account = self.env["account.account"].search(
[("code", "=", new_account_tmpl.code), ("company_id", "=", self.company.id)]
)

View File

@ -1071,9 +1071,10 @@ class WizardUpdateChartsAccounts(models.TransientModel):
tax.write(vals)
done |= tax
for k, v in todo_dict["account_dict"]["account.tax.repartition.line"].items():
for rep_line, v in todo_dict["account_dict"][
"account.tax.repartition.line"
].items():
if v["account_id"]:
rep_line = self.env["account.tax.repartition.line"].browse(k)
acc_id = self.find_account_by_templates(
self.env["account.account.template"].browse(v["account_id"].id)
)