From 4d07e20b05289c297ae49d0221f3840afe4986ec Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Sun, 9 Jul 2023 20:16:12 +0530 Subject: [PATCH] fix: Opening balance in presentation currency in Trial Balance report (#36036) --- .../consolidated_financial_statement.py | 2 +- erpnext/accounts/report/financial_statements.py | 2 +- .../report/general_ledger/general_ledger.py | 2 +- .../report/trial_balance/trial_balance.py | 15 +++++++++++---- erpnext/accounts/report/utils.py | 3 +-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py index a6447549e6..6e39ee9944 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py @@ -650,7 +650,7 @@ def set_gl_entries_by_account( if filters and filters.get("presentation_currency") != d.default_currency: currency_info["company"] = d.name currency_info["company_currency"] = d.default_currency - convert_to_presentation_currency(gl_entries, currency_info, filters.get("company")) + convert_to_presentation_currency(gl_entries, currency_info) for entry in gl_entries: if entry.account_number: diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index 8a47e1c011..f3a892ba43 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -462,7 +462,7 @@ def set_gl_entries_by_account( ) if filters and filters.get("presentation_currency"): - convert_to_presentation_currency(gl_entries, get_currency(filters), filters.get("company")) + convert_to_presentation_currency(gl_entries, get_currency(filters)) for entry in gl_entries: gl_entries_by_account.setdefault(entry.account, []).append(entry) diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index d47e3da313..d7af167e38 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -204,7 +204,7 @@ def get_gl_entries(filters, accounting_dimensions): ) if filters.get("presentation_currency"): - return convert_to_presentation_currency(gl_entries, currency_map, filters.get("company")) + return convert_to_presentation_currency(gl_entries, currency_map) else: return gl_entries diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py index 22bebb7d19..d51c4c4acb 100644 --- a/erpnext/accounts/report/trial_balance/trial_balance.py +++ b/erpnext/accounts/report/trial_balance/trial_balance.py @@ -17,6 +17,7 @@ from erpnext.accounts.report.financial_statements import ( filter_out_zero_value_rows, set_gl_entries_by_account, ) +from erpnext.accounts.report.utils import convert_to_presentation_currency, get_currency value_fields = ( "opening_debit", @@ -178,8 +179,8 @@ def get_rootwise_opening_balances(filters, report_type): "opening_credit": 0.0, }, ) - opening[d.account]["opening_debit"] += flt(d.opening_debit) - opening[d.account]["opening_credit"] += flt(d.opening_credit) + opening[d.account]["opening_debit"] += flt(d.debit) + opening[d.account]["opening_credit"] += flt(d.credit) return opening @@ -194,8 +195,11 @@ def get_opening_balance( frappe.qb.from_(closing_balance) .select( closing_balance.account, - Sum(closing_balance.debit).as_("opening_debit"), - Sum(closing_balance.credit).as_("opening_credit"), + closing_balance.account_currency, + Sum(closing_balance.debit).as_("debit"), + Sum(closing_balance.credit).as_("credit"), + Sum(closing_balance.debit_in_account_currency).as_("debit_in_account_currency"), + Sum(closing_balance.credit_in_account_currency).as_("credit_in_account_currency"), ) .where( (closing_balance.company == filters.company) @@ -282,6 +286,9 @@ def get_opening_balance( gle = opening_balance.run(as_dict=1) + if filters and filters.get("presentation_currency"): + convert_to_presentation_currency(gle, get_currency(filters)) + return gle diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py index 781481bd0d..7ea1fac105 100644 --- a/erpnext/accounts/report/utils.py +++ b/erpnext/accounts/report/utils.py @@ -78,7 +78,7 @@ def get_rate_as_at(date, from_currency, to_currency): return rate -def convert_to_presentation_currency(gl_entries, currency_info, company): +def convert_to_presentation_currency(gl_entries, currency_info): """ Take a list of GL Entries and change the 'debit' and 'credit' values to currencies in `currency_info`. @@ -93,7 +93,6 @@ def convert_to_presentation_currency(gl_entries, currency_info, company): account_currencies = list(set(entry["account_currency"] for entry in gl_entries)) for entry in gl_entries: - account = entry["account"] debit = flt(entry["debit"]) credit = flt(entry["credit"]) debit_in_account_currency = flt(entry["debit_in_account_currency"])