From aba08e3e637fe766535c3f143197e809a67a17e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 27 Nov 2024 14:06:27 +0100 Subject: [PATCH] [IMP] account_reconcile_analytic_tag: Add analytic tags to reconciliation model lines TT51885 --- .../__manifest__.py | 1 + .../models/__init__.py | 1 + .../models/account_reconcile_model.py | 47 +++++++++++++++++++ .../static/description/index.html | 11 ++--- .../views/account_reconcile_model_views.xml | 22 +++++++++ 5 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 account_reconcile_analytic_tag/models/account_reconcile_model.py create mode 100644 account_reconcile_analytic_tag/views/account_reconcile_model_views.xml diff --git a/account_reconcile_analytic_tag/__manifest__.py b/account_reconcile_analytic_tag/__manifest__.py index e6a35bc1d..866630369 100644 --- a/account_reconcile_analytic_tag/__manifest__.py +++ b/account_reconcile_analytic_tag/__manifest__.py @@ -12,5 +12,6 @@ "maintainers": ["victoralmau"], "data": [ "views/account_bank_statement_line_views.xml", + "views/account_reconcile_model_views.xml", ], } diff --git a/account_reconcile_analytic_tag/models/__init__.py b/account_reconcile_analytic_tag/models/__init__.py index 50480c58e..5f0cb8d4b 100644 --- a/account_reconcile_analytic_tag/models/__init__.py +++ b/account_reconcile_analytic_tag/models/__init__.py @@ -1,3 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import account_reconcile_abstract from . import account_bank_statement_line +from . import account_reconcile_model diff --git a/account_reconcile_analytic_tag/models/account_reconcile_model.py b/account_reconcile_analytic_tag/models/account_reconcile_model.py new file mode 100644 index 000000000..7c086d9b8 --- /dev/null +++ b/account_reconcile_analytic_tag/models/account_reconcile_model.py @@ -0,0 +1,47 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import fields, models + + +class AccountReconcileModel(models.Model): + _inherit = "account.reconcile.model" + + # TODO: Remove if merging https://github.com/odoo/odoo/pull/188808 + def _get_write_off_move_lines_dict(self, residual_balance, partner_id): + res = super()._get_write_off_move_lines_dict( + residual_balance=residual_balance, partner_id=partner_id + ) + if len(res) == 0: + return res + currency = self.company_id.currency_id + for index, line in enumerate(self.line_ids): + if line.amount_type == "percentage": + balance = currency.round(residual_balance * (line.amount / 100.0)) + elif line.amount_type == "fixed": + balance = currency.round( + line.amount * (1 if residual_balance > 0.0 else -1) + ) + else: + balance = 0.0 + + if currency.is_zero(balance): + continue + + res[index]["manual_analytic_tag_ids"] = [(6, 0, line.analytic_tag_ids.ids)] + return res + + +class AccountReconcileModelLine(models.Model): + _inherit = "account.reconcile.model.line" + + analytic_tag_ids = fields.Many2many( + comodel_name="account.analytic.tag", + string="Analytic Tags", + domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]", + ) + + # TODO: Use if merging https://github.com/odoo/odoo/pull/188808 + # def _get_write_off_move_line_dict(self, balance): + # vals = super()._get_write_off_move_line_dict(balance) + # vals["manual_analytic_tag_ids"] = [(6, 0, self.analytic_tag_ids.ids)] + # return vals diff --git a/account_reconcile_analytic_tag/static/description/index.html b/account_reconcile_analytic_tag/static/description/index.html index 64e025aab..80079933f 100644 --- a/account_reconcile_analytic_tag/static/description/index.html +++ b/account_reconcile_analytic_tag/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. -Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +274,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +300,7 @@ span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -410,9 +409,7 @@

Contributors

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

diff --git a/account_reconcile_analytic_tag/views/account_reconcile_model_views.xml b/account_reconcile_analytic_tag/views/account_reconcile_model_views.xml new file mode 100644 index 000000000..5247767f6 --- /dev/null +++ b/account_reconcile_analytic_tag/views/account_reconcile_model_views.xml @@ -0,0 +1,22 @@ + + + + account.reconcile.model.form + account.reconcile.model + + + + + + + +