refactor: improve trial balance performance

(cherry picked from commit cee3813ced)
This commit is contained in:
ruthra kumar
2025-09-25 12:46:54 +05:30
committed by Mergify
parent b18afa8bdd
commit 0c8004530a

View File

@@ -216,7 +216,7 @@ def get_opening_balance(
ignore_is_opening=0, ignore_is_opening=0,
): ):
closing_balance = frappe.qb.DocType(doctype) closing_balance = frappe.qb.DocType(doctype)
account = frappe.qb.DocType("Account") accounts = frappe.db.get_all("Account", filters={"report_type": report_type}, pluck="name")
opening_balance = ( opening_balance = (
frappe.qb.from_(closing_balance) frappe.qb.from_(closing_balance)
@@ -228,14 +228,7 @@ def get_opening_balance(
Sum(closing_balance.debit_in_account_currency).as_("debit_in_account_currency"), Sum(closing_balance.debit_in_account_currency).as_("debit_in_account_currency"),
Sum(closing_balance.credit_in_account_currency).as_("credit_in_account_currency"), Sum(closing_balance.credit_in_account_currency).as_("credit_in_account_currency"),
) )
.where( .where((closing_balance.company == filters.company) & (closing_balance.account.isin(accounts)))
(closing_balance.company == filters.company)
& (
closing_balance.account.isin(
frappe.qb.from_(account).select("name").where(account.report_type == report_type)
)
)
)
.groupby(closing_balance.account) .groupby(closing_balance.account)
) )
@@ -290,21 +283,24 @@ def get_opening_balance(
if filters.project: if filters.project:
opening_balance = opening_balance.where(closing_balance.project == filters.project) opening_balance = opening_balance.where(closing_balance.project == filters.project)
if filters.get("include_default_book_entries"): if frappe.db.count("Finance Book"):
company_fb = frappe.get_cached_value("Company", filters.company, "default_finance_book") if filters.get("include_default_book_entries"):
company_fb = frappe.get_cached_value("Company", filters.company, "default_finance_book")
if filters.finance_book and company_fb and cstr(filters.finance_book) != cstr(company_fb): if filters.finance_book and company_fb and cstr(filters.finance_book) != cstr(company_fb):
frappe.throw(_("To use a different finance book, please uncheck 'Include Default FB Entries'")) frappe.throw(
_("To use a different finance book, please uncheck 'Include Default FB Entries'")
)
opening_balance = opening_balance.where( opening_balance = opening_balance.where(
(closing_balance.finance_book.isin([cstr(filters.finance_book), cstr(company_fb), ""])) (closing_balance.finance_book.isin([cstr(filters.finance_book), cstr(company_fb), ""]))
| (closing_balance.finance_book.isnull()) | (closing_balance.finance_book.isnull())
) )
else: else:
opening_balance = opening_balance.where( opening_balance = opening_balance.where(
(closing_balance.finance_book.isin([cstr(filters.finance_book), ""])) (closing_balance.finance_book.isin([cstr(filters.finance_book), ""]))
| (closing_balance.finance_book.isnull()) | (closing_balance.finance_book.isnull())
) )
if accounting_dimensions: if accounting_dimensions:
for dimension in accounting_dimensions: for dimension in accounting_dimensions: