From d6d2804e49595ddb9f62b8a3ef44feabcc78aaef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 27 Apr 2023 09:07:26 +0200 Subject: [PATCH] [FIX] account_financial_report: Prevent error related to currency from General ledger Use case: Generate report (showing foreign currency) with accounts with defined currency. Traceback: File "/odoo/odoo-server/odoo/addons/base/models/ir_qweb_fields.py", line 448, in value_to_html fmt = "%.{0}f".format(display_currency.decimal_places) AttributeError: 'int' object has no attribute 'decimal_places' The above exception was the direct cause of the following exception: Error to render compiling AST AttributeError: 'int' object has no attribute 'decimal_places' Template: account_financial_report.report_general_ledger_lines Path: /t/div/div[2]/t[6]/t[1]/div[1]/t[1]/span/t Node: TT42804 [FIX] account_financial_report: Prevent error related to currency from General ledger Use case: Generate xlsx report (showing foreign currency) with accounts with defined currency. Traceback: File "/opt/odoo/auto/addons/account_financial_report/report/abstract_report_xlsx.py", line 535, in _get_currency_amt_format field_name = "{}_{}".format(field_prefix, currency.name) AttributeError: 'int' object has no attribute 'name' --- .../report/abstract_report_xlsx.py | 5 +++- .../report/general_ledger_xlsx.py | 16 +++++++++---- .../report/templates/general_ledger.xml | 24 ++++++++++++------- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/account_financial_report/report/abstract_report_xlsx.py b/account_financial_report/report/abstract_report_xlsx.py index fedecb9c..4c0cbe70 100644 --- a/account_financial_report/report/abstract_report_xlsx.py +++ b/account_financial_report/report/abstract_report_xlsx.py @@ -531,7 +531,10 @@ class AbstractReportXslx(models.AbstractModel): format_amt = report_data["formats"]["format_amount"] field_prefix = "format_amount" if "currency_id" in line_object and line_object.get("currency_id", False): - currency = line_object["currency_id"] + if isinstance(line_object["currency_id"], int): + currency = self.env["res.currency"].browse(line_object["currency_id"]) + else: + currency = line_object["currency_id"] field_name = "{}_{}".format(field_prefix, currency.name) if hasattr(self, field_name): format_amt = getattr(self, field_name) diff --git a/account_financial_report/report/general_ledger_xlsx.py b/account_financial_report/report/general_ledger_xlsx.py index f3f73972..e16b806d 100644 --- a/account_financial_report/report/general_ledger_xlsx.py +++ b/account_financial_report/report/general_ledger_xlsx.py @@ -237,6 +237,15 @@ class GeneralLedgerXslx(models.AbstractModel): # Display array header for move lines self.write_array_header(report_data) + account.update( + { + "currency_id": accounts_data[account["id"]]["currency_id"], + "currency_name": accounts_data[account["id"]][ + "currency_name" + ], + } + ) + # Display initial balance line for partner group_item.update( { @@ -248,6 +257,9 @@ class GeneralLedgerXslx(models.AbstractModel): if "grouped_by" in account else "", "currency_id": accounts_data[account["id"]]["currency_id"], + "currency_name": accounts_data[account["id"]][ + "currency_name" + ], } ) if foreign_currency: @@ -315,8 +327,6 @@ class GeneralLedgerXslx(models.AbstractModel): group_item.update( { "final_bal_curr": group_item["fin_bal"]["bal_curr"], - "currency_name": group_item["currency_id"].name, - "currency_id": group_item["currency_id"].id, } ) self.write_ending_balance_from_dict(group_item, report_data) @@ -336,8 +346,6 @@ class GeneralLedgerXslx(models.AbstractModel): account.update( { "final_bal_curr": account["fin_bal"]["bal_curr"], - "currency_name": account["currency_id"].name, - "currency_id": account["currency_id"].id, } ) self.write_ending_balance_from_dict(account, report_data) diff --git a/account_financial_report/report/templates/general_ledger.xml b/account_financial_report/report/templates/general_ledger.xml index 7aa6a2ea..22feb9a7 100644 --- a/account_financial_report/report/templates/general_ledger.xml +++ b/account_financial_report/report/templates/general_ledger.xml @@ -307,6 +307,10 @@ +
@@ -326,7 +330,7 @@ > @@ -339,7 +343,7 @@ > @@ -350,7 +354,7 @@ > @@ -699,6 +703,10 @@ +
@@ -710,7 +718,7 @@ > @@ -725,7 +733,7 @@ > @@ -742,7 +750,7 @@ > @@ -757,7 +765,7 @@ >