From d1d448018710c6f06b9687980e573aa0f4adbfcc Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 15 May 2026 10:26:20 +0530 Subject: [PATCH] refactor: flag to disable opening balance calculation (cherry picked from commit 28a2230d0221088ea424b71e2a783c622fbfc405) --- .../report/general_ledger/general_ledger.js | 6 ++++++ .../report/general_ledger/general_ledger.py | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index cebdad3744f..c8470bc4c3f 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -176,10 +176,16 @@ frappe.query_reports["General Ledger"] = { fieldtype: "Check", default: 1, }, + { + fieldname: "disable_opening_balance_calculation", + label: __("Disable Opening Balance Calculation"), + fieldtype: "Check", + }, { fieldname: "show_opening_entries", label: __("Show Opening Entries"), fieldtype: "Check", + depends_on: "eval: !doc.disable_opening_balance_calculation", }, { fieldname: "include_default_book_entries", diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index d28311d8876..3756fb8fc9f 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -279,7 +279,15 @@ def get_conditions(filters): if filters.get("party"): conditions.append("party in %(party)s") - if not ( + if filters.get("disable_opening_balance_calculation"): + if not ignore_is_opening: + conditions.append("(posting_date >=%(from_date)s or is_opening = 'Yes')") + else: + conditions.append("posting_date >=%(from_date)s") + + # opening balance calculation is done only if filtered on account/party + # so from_date filter is not applied + elif not ( filters.get("account") or filters.get("party") or filters.get("categorize_by") in ["Categorize by Account", "Categorize by Party"] @@ -528,7 +536,11 @@ def get_accountwise_gle(filters, accounting_dimensions, gl_entries, gle_map, tot group_by_value = gle.get(group_by) gle.voucher_type = gle.voucher_type - if gle.posting_date < from_date or (cstr(gle.is_opening) == "Yes" and not show_opening_entries): + if gle.posting_date < from_date or ( + cstr(gle.is_opening) == "Yes" + and not show_opening_entries + and not filters.disable_opening_balance_calculation + ): if not group_by_voucher_consolidated: update_value_in_dict(gle_map[group_by_value].totals, "opening", gle, True) update_value_in_dict(gle_map[group_by_value].totals, "closing", gle, True)