From 344c33948400ad51ed769309ed52c7cf1c72e937 Mon Sep 17 00:00:00 2001 From: Anand Baburajan Date: Wed, 3 May 2023 07:11:01 +0530 Subject: [PATCH] fix: handle finance book properly in trial balance and general ledger [v14] (#35136) fix: handle FBs properly in general ledger and trial balance --- .../accounts/report/financial_statements.py | 19 ++++++++++++---- .../report/general_ledger/general_ledger.js | 3 ++- .../report/general_ledger/general_ledger.py | 22 ++++++++++++++----- .../report/trial_balance/trial_balance.py | 21 +++++++++++++----- 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index 36825771f8a..86fdaaa924a 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -492,11 +492,22 @@ def get_additional_conditions(from_date, ignore_closing_entries, filters): additional_conditions.append("cost_center in %(cost_center)s") if filters.get("include_default_book_entries"): - additional_conditions.append( - "(finance_book in (%(finance_book)s, %(company_fb)s, '') OR finance_book IS NULL)" - ) + if filters.get("finance_book"): + if filters.get("company_fb") and cstr(filters.get("finance_book")) != cstr( + filters.get("company_fb") + ): + frappe.throw( + _("To use a different finance book, please uncheck 'Include Default Book Entries'") + ) + else: + additional_conditions.append("(finance_book in (%(finance_book)s) OR finance_book IS NULL)") + else: + additional_conditions.append("(finance_book in (%(company_fb)s) OR finance_book IS NULL)") else: - additional_conditions.append("(finance_book in (%(finance_book)s, '') OR finance_book IS NULL)") + if filters.get("finance_book"): + additional_conditions.append("(finance_book in (%(finance_book)s) OR finance_book IS NULL)") + else: + additional_conditions.append("(finance_book IS NULL)") if accounting_dimensions: for dimension in accounting_dimensions: diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index 2100f26c1ec..57a9091cf9b 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -176,7 +176,8 @@ frappe.query_reports["General Ledger"] = { { "fieldname": "include_default_book_entries", "label": __("Include Default Book Entries"), - "fieldtype": "Check" + "fieldtype": "Check", + "default": 1 }, { "fieldname": "show_cancelled_entries", diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index 745b6dfbdce..6a4f394ebc8 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -244,13 +244,23 @@ def get_conditions(filters): if filters.get("project"): conditions.append("project in %(project)s") - if filters.get("finance_book"): - if filters.get("include_default_book_entries"): - conditions.append( - "(finance_book in (%(finance_book)s, %(company_fb)s, '') OR finance_book IS NULL)" - ) + if filters.get("include_default_book_entries"): + if filters.get("finance_book"): + if filters.get("company_fb") and cstr(filters.get("finance_book")) != cstr( + filters.get("company_fb") + ): + frappe.throw( + _("To use a different finance book, please uncheck 'Include Default Book Entries'") + ) + else: + conditions.append("(finance_book in (%(finance_book)s) OR finance_book IS NULL)") else: - conditions.append("finance_book in (%(finance_book)s)") + conditions.append("(finance_book in (%(company_fb)s) OR finance_book IS NULL)") + else: + if filters.get("finance_book"): + conditions.append("(finance_book in (%(finance_book)s) OR finance_book IS NULL)") + else: + conditions.append("(finance_book IS NULL)") if not filters.get("show_cancelled_entries"): conditions.append("is_cancelled = 0") diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py index 61bc58009a6..d2300cd1238 100644 --- a/erpnext/accounts/report/trial_balance/trial_balance.py +++ b/erpnext/accounts/report/trial_balance/trial_balance.py @@ -157,12 +157,23 @@ def get_rootwise_opening_balances(filters, report_type): if filters.project: additional_conditions += " and project = %(project)s" + company_fb = frappe.db.get_value("Company", filters.company, "default_finance_book") + if filters.get("include_default_book_entries"): - additional_conditions += ( - " AND (finance_book in (%(finance_book)s, %(company_fb)s, '') OR finance_book IS NULL)" - ) + if filters.get("finance_book"): + if company_fb and cstr(filters.get("finance_book")) != cstr(company_fb): + frappe.throw( + _("To use a different finance book, please uncheck 'Include Default Book Entries'") + ) + else: + additional_conditions += " AND (finance_book in (%(finance_book)s) OR finance_book IS NULL)" + else: + additional_conditions += " AND (finance_book in (%(company_fb)s) OR finance_book IS NULL)" else: - additional_conditions += " AND (finance_book in (%(finance_book)s, '') OR finance_book IS NULL)" + if filters.get("finance_book"): + additional_conditions += " AND (finance_book in (%(finance_book)s) OR finance_book IS NULL)" + else: + additional_conditions += " AND (finance_book IS NULL)" accounting_dimensions = get_accounting_dimensions(as_list=False) @@ -174,7 +185,7 @@ def get_rootwise_opening_balances(filters, report_type): "year_start_date": filters.year_start_date, "project": filters.project, "finance_book": filters.finance_book, - "company_fb": frappe.db.get_value("Company", filters.company, "default_finance_book"), + "company_fb": company_fb, } if accounting_dimensions: