From c2c49576861a490f165fe3a2463737ddd9452b18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Thu, 25 Aug 2022 17:29:10 +0200 Subject: [PATCH] account_usability: improve partial reconcile matching_number --- account_usability/__init__.py | 1 + account_usability/__manifest__.py | 3 +- account_usability/hooks.py | 9 ++++++ account_usability/i18n/account_usability.pot | 5 --- .../migrations/14.0.1.1.0/post-migrate.py | 9 ++++++ account_usability/models/account_move.py | 31 +++++++++++-------- account_usability/views/account_move.xml | 5 ++- 7 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 account_usability/hooks.py create mode 100644 account_usability/migrations/14.0.1.1.0/post-migrate.py diff --git a/account_usability/__init__.py b/account_usability/__init__.py index 9b42961..700d6ab 100644 --- a/account_usability/__init__.py +++ b/account_usability/__init__.py @@ -1,2 +1,3 @@ from . import models from . import wizard +from .hooks import post_init_hook diff --git a/account_usability/__manifest__.py b/account_usability/__manifest__.py index 3635867..e844d3f 100644 --- a/account_usability/__manifest__.py +++ b/account_usability/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Account Usability', - 'version': '14.0.1.0.0', + 'version': '14.0.1.1.0', 'category': 'Accounting & Finance', 'license': 'AGPL-3', 'summary': 'Small usability enhancements in account module', @@ -41,4 +41,5 @@ ], 'qweb': ['static/src/xml/account_payment.xml'], 'installable': True, + "post_init_hook": "post_init_hook", } diff --git a/account_usability/hooks.py b/account_usability/hooks.py new file mode 100644 index 0000000..a112ec6 --- /dev/null +++ b/account_usability/hooks.py @@ -0,0 +1,9 @@ +# Copyright 2022 Akretion (https://www.akretion.com). +# @author Sébastien BEAU +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import SUPERUSER_ID, api + +def post_init_hook(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + env["account.move.line"].update_matching_number() diff --git a/account_usability/i18n/account_usability.pot b/account_usability/i18n/account_usability.pot index ec611de..94784f5 100644 --- a/account_usability/i18n/account_usability.pot +++ b/account_usability/i18n/account_usability.pot @@ -524,11 +524,6 @@ msgstr "" msgid "Recipient Bank" msgstr "" -#. module: account_usability -#: model:ir.model.fields,field_description:account_usability.field_account_move_line__reconcile_string -msgid "Reconcile" -msgstr "" - #. module: account_usability #: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__ref #: model:ir.model.fields,field_description:account_usability.field_account_move__ref diff --git a/account_usability/migrations/14.0.1.1.0/post-migrate.py b/account_usability/migrations/14.0.1.1.0/post-migrate.py new file mode 100644 index 0000000..8db745a --- /dev/null +++ b/account_usability/migrations/14.0.1.1.0/post-migrate.py @@ -0,0 +1,9 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import SUPERUSER_ID, api + + +def migrate(cr, version): + env = api.Environment(cr, SUPERUSER_ID, {}) + env["account.move.line"].update_matching_number() diff --git a/account_usability/models/account_move.py b/account_usability/models/account_move.py index 6cc4ee0..e32f18c 100644 --- a/account_usability/models/account_move.py +++ b/account_usability/models/account_move.py @@ -2,6 +2,7 @@ # @author Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging from odoo import api, fields, models, _ from odoo.tools import float_is_zero from odoo.tools.misc import format_date @@ -9,6 +10,8 @@ from odoo.osv import expression from datetime import timedelta from odoo.exceptions import UserError +_logger = logging.getLogger(__name__) + class AccountMove(models.Model): _inherit = 'account.move' @@ -238,8 +241,6 @@ class AccountMoveLine(models.Model): full_reconcile_id = fields.Many2one(string='Full Reconcile') matched_debit_ids = fields.One2many(string='Partial Reconcile Debit') matched_credit_ids = fields.One2many(string='Partial Reconcile Credit') - reconcile_string = fields.Char( - compute='_compute_reconcile_string', string='Reconcile', store=True) # for optional display in tree view product_barcode = fields.Char(related='product_id.barcode', string="Product Barcode") @@ -255,17 +256,21 @@ class AccountMoveLine(models.Model): }) return action - @api.depends( - 'full_reconcile_id', 'matched_debit_ids', 'matched_credit_ids') - def _compute_reconcile_string(self): - for line in self: - rec_str = False - if line.full_reconcile_id: - rec_str = line.full_reconcile_id.name - else: - rec_str = ', '.join([ - 'a%d' % pr.id for pr in line.matched_debit_ids + line.matched_credit_ids]) - line.reconcile_string = rec_str + def update_matching_number(self): + records = self.search([("matching_number", "=", "P")]) + _logger.info(f"Update partial reconcile number for {len(records)} lines") + records._compute_matching_number() + + def _compute_matching_number(self): + # TODO maybe it will be better to have the same maching_number for + # all partial so it will be easier to group by + super()._compute_matching_number() + for record in self: + if record.matching_number == "P": + record.matching_number = ", ".join([ + "a%d" % pr.id + for pr in record.matched_debit_ids + record.matched_credit_ids + ]) def _get_computed_name(self): # This is useful when you want to have the product code in a dedicated diff --git a/account_usability/views/account_move.xml b/account_usability/views/account_move.xml index f4eba31..b2455da 100644 --- a/account_usability/views/account_move.xml +++ b/account_usability/views/account_move.xml @@ -42,8 +42,7 @@ show - - + @@ -106,7 +105,7 @@ - +