From 29a54a92d233848f5e14b1a9ebdbd36d3ba1cb7a Mon Sep 17 00:00:00 2001 From: Sergio Bustamante Date: Tue, 31 Dec 2024 12:26:49 +0100 Subject: [PATCH] [FIX] account_financial_report: Remove buggy empty selection value Selecting no value in the "Grouped by" general ledger wizard, but filtering any account, results in an empty display, due to the weird trick of having an empty selection value. This, joined with the fact of not being able to predefine that empty value with standard tools, makes the switch necessary. - Set grouped_by as required with non grouped item description. - Switched selection value from "" (empty) to "none". - Adapt general_ledger group_by conditionals. Co-Authored-By: aritzolea --- .../report/general_ledger.py | 61 +++++++------------ .../wizard/general_ledger_wizard.py | 3 +- 2 files changed, 24 insertions(+), 40 deletions(-) diff --git a/account_financial_report/report/general_ledger.py b/account_financial_report/report/general_ledger.py index d2d6876c..c4f39375 100644 --- a/account_financial_report/report/general_ledger.py +++ b/account_financial_report/report/general_ledger.py @@ -191,8 +191,7 @@ class GeneralLedgerReport(models.AbstractModel): acc_id = gl["account_id"][0] data[acc_id] = self._prepare_gen_ld_data_item(gl) data[acc_id]["id"] = acc_id - if grouped_by: - data[acc_id][grouped_by] = False + data[acc_id][grouped_by] = False method = f"_prepare_gen_ld_data_group_{grouped_by}" if not hasattr(self, method): return data @@ -503,15 +502,13 @@ class GeneralLedgerReport(models.AbstractModel): gen_ld_data[acc_id] = self._initialize_data(foreign_currency) gen_ld_data[acc_id]["id"] = acc_id gen_ld_data[acc_id]["mame"] = move_line["account_id"][1] - if grouped_by: - gen_ld_data[acc_id][grouped_by] = False + gen_ld_data[acc_id][grouped_by] = False if acc_id in acc_prt_account_ids: item_ids = self._prepare_ml_items(move_line, grouped_by) for item in item_ids: item_id = item["id"] if item_id not in gen_ld_data[acc_id]: - if grouped_by: - gen_ld_data[acc_id][grouped_by] = True + gen_ld_data[acc_id][grouped_by] = True gen_ld_data[acc_id][item_id] = self._initialize_data( foreign_currency ) @@ -662,7 +659,7 @@ class GeneralLedgerReport(models.AbstractModel): "grouped_by": grouped_by, } ) - if grouped_by and not gen_led_data[acc_id][grouped_by]: + if not gen_led_data[acc_id][grouped_by]: account = self._create_account( account, acc_id, gen_led_data, rec_after_date_to_ids ) @@ -676,37 +673,23 @@ class GeneralLedgerReport(models.AbstractModel): ): continue else: - if grouped_by: - account, list_grouped = self._get_list_grouped_item( - gen_led_data[acc_id], - account, - rec_after_date_to_ids, - hide_account_at_0, - rounding, + account, list_grouped = self._get_list_grouped_item( + gen_led_data[acc_id], + account, + rec_after_date_to_ids, + hide_account_at_0, + rounding, + ) + account.update({"list_grouped": list_grouped}) + if ( + hide_account_at_0 + and float_is_zero( + gen_led_data[acc_id]["init_bal"]["balance"], + precision_rounding=rounding, ) - account.update({"list_grouped": list_grouped}) - if ( - hide_account_at_0 - and float_is_zero( - gen_led_data[acc_id]["init_bal"]["balance"], - precision_rounding=rounding, - ) - and account["list_grouped"] == [] - ): - continue - else: - account = self._create_account_not_show_item( - account, acc_id, gen_led_data, rec_after_date_to_ids, grouped_by - ) - if ( - hide_account_at_0 - and float_is_zero( - gen_led_data[acc_id]["init_bal"]["balance"], - precision_rounding=rounding, - ) - and account["move_lines"] == [] - ): - continue + and account["list_grouped"] == [] + ): + continue general_ledger += [account] return general_ledger @@ -755,7 +738,7 @@ class GeneralLedgerReport(models.AbstractModel): centralized_ml = {} if isinstance(date_to, str): date_to = datetime.datetime.strptime(date_to, "%Y-%m-%d").date() - if grouped_by and account[grouped_by]: + if account[grouped_by]: for item in account["list_grouped"]: for move_line in item["move_lines"]: centralized_ml = self._calculate_centralization( @@ -846,7 +829,7 @@ class GeneralLedgerReport(models.AbstractModel): gen_ld_data[account["id"]]["init_bal"]["balance"], rec_after_date_to_ids, ) - if grouped_by and account[grouped_by]: + if account[grouped_by]: account[grouped_by] = False del account["list_grouped"] general_ledger = sorted(general_ledger, key=lambda k: k["code"]) diff --git a/account_financial_report/wizard/general_ledger_wizard.py b/account_financial_report/wizard/general_ledger_wizard.py index edce54c7..a07b87ba 100644 --- a/account_financial_report/wizard/general_ledger_wizard.py +++ b/account_financial_report/wizard/general_ledger_wizard.py @@ -76,8 +76,9 @@ class GeneralLedgerReportWizard(models.TransientModel): help="Ending account in a range", ) grouped_by = fields.Selection( - selection=[("", "None"), ("partners", "Partners"), ("taxes", "Taxes")], + selection=[("none", "None"), ("partners", "Partners"), ("taxes", "Taxes")], default="partners", + required=True, ) show_cost_center = fields.Boolean( string="Show Analytic Account",