From 0b0b3f9c88b9fa4b972232fef2b7109aa7be2a70 Mon Sep 17 00:00:00 2001 From: Sergio Bustamante Date: Fri, 24 May 2024 13:31:56 +0200 Subject: [PATCH] [IMP] account_statement_base: add smart button on view_bank_statement_form linking to journal items [16.0][FIX] account_statement_base: Changes post OCA CR --- .../i18n/account_statement_base.pot | 13 +++ account_statement_base/models/__init__.py | 1 + .../models/account_bank_statement.py | 32 +++++++ account_statement_base/tests/__init__.py | 1 + .../tests/test_account_statement_base.py | 92 +++++++++++++++++++ .../views/account_bank_statement.xml | 10 ++ 6 files changed, 149 insertions(+) create mode 100644 account_statement_base/models/account_bank_statement.py create mode 100644 account_statement_base/tests/__init__.py create mode 100644 account_statement_base/tests/test_account_statement_base.py diff --git a/account_statement_base/i18n/account_statement_base.pot b/account_statement_base/i18n/account_statement_base.pot index 76a84051..07dec388 100644 --- a/account_statement_base/i18n/account_statement_base.pot +++ b/account_statement_base/i18n/account_statement_base.pot @@ -15,6 +15,12 @@ msgstr "" #. module: account_statement_base #: model_terms:ir.ui.view,arch_db:account_statement_base.view_bank_statement_form +msgid "Journal Items" +msgstr "" + +#. module: account_statement_base +#: model:ir.model,name:account_statement_base.model_account_bank_statement +#: model_terms:ir.ui.view,arch_db:account_statement_base.view_bank_statement_form msgid "Bank Statement" msgstr "" @@ -39,6 +45,13 @@ msgstr "" msgid "Journal" msgstr "" +#. module: account_statement_base +#. odoo-python +#: code:addons/account_statement_base/models/account_bank_statement.py:0 +#, python-format +msgid "Journal Items" +msgstr "" + #. module: account_statement_base #: model_terms:ir.ui.view,arch_db:account_statement_base.account_bank_statement_line_search msgid "Label, Ref or Notes" diff --git a/account_statement_base/models/__init__.py b/account_statement_base/models/__init__.py index df2ecf18..4a0bb316 100644 --- a/account_statement_base/models/__init__.py +++ b/account_statement_base/models/__init__.py @@ -1,2 +1,3 @@ from . import account_journal_dashboard from . import account_bank_statement_line +from . import account_bank_statement diff --git a/account_statement_base/models/account_bank_statement.py b/account_statement_base/models/account_bank_statement.py new file mode 100644 index 00000000..df80a0ff --- /dev/null +++ b/account_statement_base/models/account_bank_statement.py @@ -0,0 +1,32 @@ +from odoo import _, models + + +class AccountBankStatement(models.Model): + _inherit = "account.bank.statement" + + def action_open_statement_lines(self): + self.ensure_one() + if not self: + return {} + action = self.env["ir.actions.act_window"]._for_xml_id( + "account_statement_base.account_bank_statement_line_action" + ) + action.update({"domain": [("statement_id", "=", self.id)]}) + return action + + def open_entries(self): + self.ensure_one() + return { + "name": _("Journal Items"), + "view_mode": "tree,form", + "res_model": "account.move.line", + "view_id": False, + "type": "ir.actions.act_window", + "context": {"search_default_group_by_move": 1, "expand": 1}, + "search_view_id": self.env.ref("account.view_account_move_line_filter").id, + "domain": [ + "&", + ("parent_state", "=", "posted"), + ("statement_id", "=", self.id), + ], + } diff --git a/account_statement_base/tests/__init__.py b/account_statement_base/tests/__init__.py new file mode 100644 index 00000000..7543554d --- /dev/null +++ b/account_statement_base/tests/__init__.py @@ -0,0 +1 @@ +from . import test_account_statement_base diff --git a/account_statement_base/tests/test_account_statement_base.py b/account_statement_base/tests/test_account_statement_base.py new file mode 100644 index 00000000..9cc62dc0 --- /dev/null +++ b/account_statement_base/tests/test_account_statement_base.py @@ -0,0 +1,92 @@ +from odoo import Command +from odoo.tests import tagged + +from odoo.addons.account_reconcile_model_oca.tests.common import ( + TestAccountReconciliationCommon, +) + + +@tagged("post_install", "-at_install") +class TestReconciliationWidget(TestAccountReconciliationCommon): + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + cls.acc_bank_stmt_model = cls.env["account.bank.statement"] + cls.account_move_model = cls.env["account.move"] + cls.account_move_line_model = cls.env["account.move.line"] + cls.current_assets_account = cls.env["account.account"].search( + [ + ("account_type", "=", "asset_current"), + ("company_id", "=", cls.company.id), + ], + limit=1, + ) + cls.current_assets_account.reconcile = True + cls.non_current_assets_account = cls.env["account.account"].search( + [ + ("account_type", "=", "asset_non_current"), + ("company_id", "=", cls.company.id), + ], + limit=1, + ) + cls.non_current_assets_account.reconcile = True + + def test_01_test_open_entries(self): + move = self.account_move_model.create( + { + "line_ids": [ + Command.create( + { + "account_id": self.current_assets_account.id, + "name": "DEMO", + "credit": 100, + } + ), + Command.create( + { + "account_id": self.non_current_assets_account.id, + "name": "DEMO", + "debit": 100, + } + ), + ] + } + ) + move.action_post() + statement = self.acc_bank_stmt_model.create( + { + "name": "Test Bank Statement", + "line_ids": [ + Command.create( + { + "date": "2024-01-01", + "amount": 100.0, + "payment_ref": move.name, + "line_ids": [Command.set([move.line_ids[0].id])], + } + ), + Command.create( + { + "date": "2024-01-01", + "amount": 100.0, + "payment_ref": move.name, + "line_ids": [Command.set([move.line_ids[1].id])], + } + ), + ], + } + ) + domain = [ + "&", + ("parent_state", "=", "posted"), + ("statement_id", "=", statement.id), + ] + result = statement.open_entries() + move_lines = self.env[result["res_model"]].search(result["domain"]) + self.assertTrue(result) + self.assertEqual(result.get("res_model"), "account.move.line") + self.assertEqual(result.get("context").get("search_default_group_by_move"), 1) + self.assertEqual(result.get("context").get("expand"), 1) + self.assertEqual(result.get("domain"), domain) + self.assertIn(statement.line_ids.line_ids[0], move_lines) + self.assertIn(statement.line_ids.line_ids[1], move_lines) diff --git a/account_statement_base/views/account_bank_statement.xml b/account_statement_base/views/account_bank_statement.xml index 6c86b867..6e07711f 100644 --- a/account_statement_base/views/account_bank_statement.xml +++ b/account_statement_base/views/account_bank_statement.xml @@ -28,6 +28,16 @@ context="{'search_default_statement_id': id}" string="Transactions" /> +