fix(accounts): added permission checks on get_account_balances_coa (backport #57107) (#57122)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
This commit is contained in:
mergify[bot]
2026-07-14 13:07:12 +05:30
committed by GitHub
parent 8d7fe755e3
commit e8a532587d

View File

@@ -1408,13 +1408,11 @@ def get_account_balances(accounts, company, finance_book=None, include_default_f
def get_account_balances_coa(company: str, include_default_fb_balances: bool = False): def get_account_balances_coa(company: str, include_default_fb_balances: bool = False):
company_currency = frappe.get_cached_value("Company", company, "default_currency") company_currency = frappe.get_cached_value("Company", company, "default_currency")
Account = DocType("Account") account_list = frappe.get_list(
account_list = ( "Account",
frappe.qb.from_(Account) fields=["name", "parent_account", "account_currency"],
.select(Account.name, Account.parent_account, Account.account_currency) filters={"company": company},
.where(Account.company == company) order_by="lft",
.orderby(Account.lft)
.run(as_dict=True)
) )
account_balances_cc = {account.get("name"): 0 for account in account_list} account_balances_cc = {account.get("name"): 0 for account in account_list}
@@ -1424,9 +1422,8 @@ def get_account_balances_coa(company: str, include_default_fb_balances: bool = F
GLEntry = DocType("GL Entry") GLEntry = DocType("GL Entry")
precision = get_currency_precision() precision = get_currency_precision()
get_ledger_balances_query = ( get_ledger_balances_query = (
frappe.qb.from_(GLEntry) frappe.get_query(GLEntry, fields=[GLEntry.account], ignore_permissions=False)
.select( .select(
GLEntry.account,
(Sum(Round(GLEntry.debit, precision)) - Sum(Round(GLEntry.credit, precision))).as_("balance"), (Sum(Round(GLEntry.debit, precision)) - Sum(Round(GLEntry.credit, precision))).as_("balance"),
( (
Sum(Round(GLEntry.debit_in_account_currency, precision)) Sum(Round(GLEntry.debit_in_account_currency, precision))
@@ -1436,7 +1433,7 @@ def get_account_balances_coa(company: str, include_default_fb_balances: bool = F
.groupby(GLEntry.account) .groupby(GLEntry.account)
) )
condition_list = [GLEntry.company == company, GLEntry.is_cancelled == 0] conditions = [GLEntry.company == company, GLEntry.is_cancelled == 0]
default_finance_book = None default_finance_book = None
@@ -1444,12 +1441,9 @@ def get_account_balances_coa(company: str, include_default_fb_balances: bool = F
default_finance_book = frappe.get_cached_value("Company", company, "default_finance_book") default_finance_book = frappe.get_cached_value("Company", company, "default_finance_book")
if default_finance_book: if default_finance_book:
condition_list.append( conditions.append((GLEntry.finance_book == default_finance_book) | (GLEntry.finance_book.isnull()))
(GLEntry.finance_book == default_finance_book) | (GLEntry.finance_book.isnull())
)
for condition in condition_list: get_ledger_balances_query = get_ledger_balances_query.where(Criterion.all(conditions))
get_ledger_balances_query = get_ledger_balances_query.where(condition)
ledger_balances = get_ledger_balances_query.run(as_dict=True) ledger_balances = get_ledger_balances_query.run(as_dict=True)