From d0aef7fc59c5d151bb9081974414ce3997a32ee2 Mon Sep 17 00:00:00 2001 From: Alejandro Ji Cheung Date: Tue, 29 Aug 2023 15:31:53 +0200 Subject: [PATCH] [IMP] base_transaction_id: propagate transaction_id to account move reversal --- base_transaction_id/__init__.py | 1 + base_transaction_id/__manifest__.py | 1 + .../tests/test_transaction_id.py | 20 +++++++++++++++++++ base_transaction_id/wizard/__init__.py | 1 + .../wizard/account_move_reversal.py | 11 ++++++++++ 5 files changed, 34 insertions(+) create mode 100644 base_transaction_id/wizard/__init__.py create mode 100644 base_transaction_id/wizard/account_move_reversal.py diff --git a/base_transaction_id/__init__.py b/base_transaction_id/__init__.py index 0650744f6b..9b4296142f 100644 --- a/base_transaction_id/__init__.py +++ b/base_transaction_id/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizard diff --git a/base_transaction_id/__manifest__.py b/base_transaction_id/__manifest__.py index 873c8c399c..7c53a0672a 100644 --- a/base_transaction_id/__manifest__.py +++ b/base_transaction_id/__manifest__.py @@ -1,5 +1,6 @@ # Copyright 2019 Camptocamp SA # Copyright 2022 Simone Rubino - Agile Business Group +# © 2023 FactorLibre - Alejandro Ji Cheung # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) { "name": "Base transaction ID for financial institutes", diff --git a/base_transaction_id/tests/test_transaction_id.py b/base_transaction_id/tests/test_transaction_id.py index 3774c100d9..bb01ca72f6 100644 --- a/base_transaction_id/tests/test_transaction_id.py +++ b/base_transaction_id/tests/test_transaction_id.py @@ -50,5 +50,25 @@ def test_transaction_propagation(self): # post-condition: there is an invoice # and has the same transaction of the sale order invoice = first(self.sale_order.invoice_ids) + invoice.action_post() self.assertTrue(invoice) self.assertEqual(invoice.transaction_id, transaction_id) + + # create reversal invoice + account_move_reversal = ( + self.env["account.move.reversal"] + .with_context(active_model="account.move", active_ids=invoice.ids) + .create( + { + "journal_id": invoice.journal_id.id, + "reason": "no reason", + "refund_method": "refund", + } + ) + ) + account_move_reversal.with_context(refund_method="refund").reverse_moves() + self.assertEqual(1, len(invoice.reversal_move_id)) + refund = invoice.reversal_move_id + + # check if the reversal move has the same transaction of the invoice + self.assertEqual(invoice.transaction_id, refund.transaction_id) diff --git a/base_transaction_id/wizard/__init__.py b/base_transaction_id/wizard/__init__.py new file mode 100644 index 0000000000..715d1bd6df --- /dev/null +++ b/base_transaction_id/wizard/__init__.py @@ -0,0 +1 @@ +from . import account_move_reversal diff --git a/base_transaction_id/wizard/account_move_reversal.py b/base_transaction_id/wizard/account_move_reversal.py new file mode 100644 index 0000000000..e4f70380c5 --- /dev/null +++ b/base_transaction_id/wizard/account_move_reversal.py @@ -0,0 +1,11 @@ +from odoo import fields, models, api + + +class AccountMoveReversal(models.TransientModel): + _inherit = 'account.move.reversal' + + def _prepare_default_reversal(self, move): + res = super()._prepare_default_reversal(move) + if move.transaction_id: + res["transaction_id"] = move.transaction_id + return res