diff --git a/addons/account/models/account_partial_reconcile.py b/addons/account/models/account_partial_reconcile.py index 8a871028f04..68579db3338 100644 --- a/addons/account/models/account_partial_reconcile.py +++ b/addons/account/models/account_partial_reconcile.py @@ -252,7 +252,7 @@ class AccountPartialReconcile(models.Model): account.move.line. ''' account = base_line.company_id.account_cash_basis_base_account_id or base_line.account_id - tax_ids = base_line.tax_ids.filtered(lambda x: x.tax_exigibility == 'on_payment') + tax_ids = base_line.tax_ids.flatten_taxes_hierarchy().filtered(lambda x: x.tax_exigibility == 'on_payment') is_refund = base_line.is_refund tax_tags = tax_ids.get_tax_tags(is_refund, 'base') product_tags = base_line.tax_tag_ids.filtered(lambda x: x.applicability == 'products') @@ -365,7 +365,7 @@ class AccountPartialReconcile(models.Model): base_line.currency_id.id, base_line.partner_id.id, (account or base_line.account_id).id, - tuple(base_line.tax_ids.filtered(lambda x: x.tax_exigibility == 'on_payment').ids), + tuple(base_line.tax_ids.flatten_taxes_hierarchy().filtered(lambda x: x.tax_exigibility == 'on_payment').ids), ) @api.model diff --git a/addons/account/tests/test_account_move_reconcile.py b/addons/account/tests/test_account_move_reconcile.py index 6ba971ca8f7..b69b18e1474 100644 --- a/addons/account/tests/test_account_move_reconcile.py +++ b/addons/account/tests/test_account_move_reconcile.py @@ -4329,14 +4329,20 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon): caba_move = self.env['account.move'].search([('tax_cash_basis_origin_move_id', '=', invoice.id)]) self.assertEqual(len(caba_move.line_ids), 6, "All lines should be there") + tax_group_base_tags = (tax_a | tax_b).invoice_repartition_line_ids.filtered(lambda l: l.repartition_type == 'base').tag_ids.ids + tax_a_tax_tag = tax_a.invoice_repartition_line_ids.filtered(lambda l: l.repartition_type == 'tax').tag_ids.ids + tax_b_tax_tag = tax_b.invoice_repartition_line_ids.filtered(lambda l: l.repartition_type == 'tax').tag_ids.ids self.assertRecordValues(caba_move.line_ids, [ - {'balance': 3000.0, 'tax_line_id': False}, - {'balance': -3000.0, 'tax_line_id': False}, - {'balance': 1000.0, 'tax_line_id': False}, - {'balance': -1000.0, 'tax_line_id': tax_a.id}, - {'balance': 1.0, 'tax_line_id': False}, - {'balance': -1.0, 'tax_line_id': tax_b.id}, + {'balance': 3000.0, 'tax_line_id': False, 'tax_tag_ids': [], 'tax_ids': []}, + {'balance': -3000.0, 'tax_line_id': False, 'tax_tag_ids': tax_group_base_tags, 'tax_ids': (tax_a | tax_b).ids}, + {'balance': 1000.0, 'tax_line_id': False, 'tax_tag_ids': [], 'tax_ids': []}, + {'balance': -1000.0, 'tax_line_id': tax_a.id, 'tax_tag_ids': tax_a_tax_tag, 'tax_ids': []}, + {'balance': 1.0, 'tax_line_id': False, 'tax_tag_ids': [], 'tax_ids': []}, + {'balance': -1.0, 'tax_line_id': tax_b.id, 'tax_tag_ids': tax_b_tax_tag, 'tax_ids': []}, ]) + # No exchange journal entry created for CABA. + exchange_difference_move = invoice.line_ids.filtered(lambda line: line.account_id.account_type == 'receivable').full_reconcile_id.exchange_move_id + self.assertFalse(exchange_difference_move) def test_caba_rounding_adjustment_monocurrency(self): self.env.company.tax_exigibility = True