From f545c1e4a0f802739abc0b30ebd7982a140e560f Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Thu, 14 Dec 2023 21:51:08 +0100 Subject: [PATCH] [IMP] account_reconcile_oca: Add Reconcile action --- account_reconcile_oca/models/__init__.py | 1 + .../models/account_account_reconcile.py | 7 ++++ .../models/account_move_line.py | 34 +++++++++++++++++++ .../views/account_move_line.xml | 9 +++++ 4 files changed, 51 insertions(+) create mode 100644 account_reconcile_oca/models/account_move_line.py diff --git a/account_reconcile_oca/models/__init__.py b/account_reconcile_oca/models/__init__.py index 8102733a..5be31a27 100644 --- a/account_reconcile_oca/models/__init__.py +++ b/account_reconcile_oca/models/__init__.py @@ -2,3 +2,4 @@ from . import account_reconcile_abstract from . import account_journal from . import account_bank_statement_line from . import account_account_reconcile +from . import account_move_line diff --git a/account_reconcile_oca/models/account_account_reconcile.py b/account_reconcile_oca/models/account_account_reconcile.py index 8ce31301..d25a7b95 100644 --- a/account_reconcile_oca/models/account_account_reconcile.py +++ b/account_reconcile_oca/models/account_account_reconcile.py @@ -84,6 +84,13 @@ class AccountAccountReconcile(models.Model): def _compute_reconcile_data_info(self): data_obj = self.env["account.account.reconcile.data"] for record in self: + if self.env.context.get("default_account_move_lines"): + data = { + "data": [], + "counterparts": self.env.context.get("default_account_move_lines"), + } + record.reconcile_data_info = self._recompute_data(data) + continue data_record = data_obj.search( [("user_id", "=", self.env.user.id), ("reconcile_id", "=", record.id)] ) diff --git a/account_reconcile_oca/models/account_move_line.py b/account_reconcile_oca/models/account_move_line.py new file mode 100644 index 00000000..2244b7d0 --- /dev/null +++ b/account_reconcile_oca/models/account_move_line.py @@ -0,0 +1,34 @@ +# Copyright 2023 Dixmit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, models +from odoo.exceptions import ValidationError + + +class AccountMoveLine(models.Model): + + _inherit = "account.move.line" + + def action_reconcile_manually(self): + if not self: + return {} + self.mapped("account_id").ensure_one() + partner = self.mapped("partner_id") + if partner: + partner.ensure_one() + if self.filtered(lambda r: r.partner_id != partner): + raise ValidationError( + _("You must reconcile information on the same partner") + ) + action = self.env["ir.actions.act_window"]._for_xml_id( + "account_reconcile_oca.account_account_reconcile_act_window" + ) + action["domain"] = [ + ("account_id", "=", self.mapped("account_id").id), + ("partner_id", "=", partner.id), + ] + action["context"] = self.env.context.copy() + action["context"]["default_account_move_lines"] = self.filtered( + lambda r: not r.reconciled + ).ids + return action diff --git a/account_reconcile_oca/views/account_move_line.xml b/account_reconcile_oca/views/account_move_line.xml index 1909b10f..4af3d9cd 100644 --- a/account_reconcile_oca/views/account_move_line.xml +++ b/account_reconcile_oca/views/account_move_line.xml @@ -101,4 +101,13 @@ + + + Reconcile + + + list + code + action = records.action_reconcile_manually() +