From 354faaec38ad18faa551c2e50dd3427ddc8e0499 Mon Sep 17 00:00:00 2001 From: Karnav Sojitra Date: Mon, 12 Jun 2023 12:49:52 +0000 Subject: [PATCH] [FIX] l10n_fr_pos_cert: add usererror for non-unalterable accounting The error will occur when a user try to print POS inalterability check report for pos orders when accounting is not unalterable for that company. steps to produce: 1. install l10n_fr_pos_cert the module 2. switch to company other than FR company 3. pos > reporting > POS inalterability check . when the company's country is not in unalterable country : https://github.com/odoo/odoo/blob/3b88958f5a07edf86d2fc9c8080ee46d16b872ef/addons/l10n_fr/models/res_company.py#L14-L24 1. so,`_check_pos_hash_integrity()` gets Nonetype which will lead to above traceback, when trying to update the data dictionary. 2. Also, `_check_hash_pos_integrity()` is not defined in our standard code so , this commit optimize the `_get_report_values` method. see : https://github.com/odoo/odoo/blob/3b88958f5a07edf86d2fc9c8080ee46d16b872ef/addons/l10n_fr_pos_cert/report/pos_hash_integrity.py#LL11C1-L22 sentry-4243853702 closes odoo/odoo#127145 X-original-commit: 9d00424cada540f9a2f913280a23b9268f930168 Signed-off-by: Achraf Ben Azzouz (abz) --- addons/l10n_fr_pos_cert/i18n/l10n_fr_pos_cert.pot | 9 +++++++++ addons/l10n_fr_pos_cert/models/res_company.py | 2 ++ addons/l10n_fr_pos_cert/report/pos_hash_integrity.py | 6 ++---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/addons/l10n_fr_pos_cert/i18n/l10n_fr_pos_cert.pot b/addons/l10n_fr_pos_cert/i18n/l10n_fr_pos_cert.pot index 71428cdaf83..aa4c2e87e60 100644 --- a/addons/l10n_fr_pos_cert/i18n/l10n_fr_pos_cert.pot +++ b/addons/l10n_fr_pos_cert/i18n/l10n_fr_pos_cert.pot @@ -68,6 +68,15 @@ msgstr "" msgid "Account Closing" msgstr "" +#. module: l10n_fr_pos_cert +#. odoo-python +#: code:addons/l10n_fr_pos_cert/models/res_company.py:0 +#, python-format +msgid "" +"Accounting is not unalterable for the company %s. This mechanism is designed" +" for companies where accounting is unalterable." +msgstr "" + #. module: l10n_fr_pos_cert #. odoo-python #: code:addons/l10n_fr_pos_cert/models/pos.py:0 diff --git a/addons/l10n_fr_pos_cert/models/res_company.py b/addons/l10n_fr_pos_cert/models/res_company.py index 65f7098d4f5..a6cd8c793c6 100644 --- a/addons/l10n_fr_pos_cert/models/res_company.py +++ b/addons/l10n_fr_pos_cert/models/res_company.py @@ -95,3 +95,5 @@ class ResCompany(models.Model): 'printing_date': format_date(self.env, Date.to_string( Date.today())), 'corrupted_orders': corrupted_orders or 'None' } + else: + raise UserError(_('Accounting is not unalterable for the company %s. This mechanism is designed for companies where accounting is unalterable.') % self.env.company.name) diff --git a/addons/l10n_fr_pos_cert/report/pos_hash_integrity.py b/addons/l10n_fr_pos_cert/report/pos_hash_integrity.py index d7c36038022..348cbac473a 100644 --- a/addons/l10n_fr_pos_cert/report/pos_hash_integrity.py +++ b/addons/l10n_fr_pos_cert/report/pos_hash_integrity.py @@ -10,10 +10,8 @@ class ReportPosHashIntegrity(models.AbstractModel): @api.model def _get_report_values(self, docids, data=None): - if data: - data.update(self.env.company._check_pos_hash_integrity()) - else: - data = self.env.company._check_hash_pos_integrity() + data = data or {} + data.update(self.env.company._check_pos_hash_integrity() or {}) return { 'doc_ids' : docids, 'doc_model' : self.env['res.company'],