feat: Financial Ratio Report (#36130)
* feat: Financial Ratio report added
* fix: Made columns dynamic
* fix: Changed fieldtype of year column
* fix: Added Financial Ratios for all Fiscal Years
* fix: Added Validation of only Parent Having account_type of Direct Income, Indirect Income, Current Asset and Current Liability
* fix: Added 4 more ratios
* fix: added a function for repeated code
* fix: added account_type in accounts utils and cleaned report code
* fix: created function for avg_ratio_values
* fix: cleaning code
* fix: basic ratios completed
* fix: cleaned the code
* chore: code cleanup
* chore: remove comments
* chore: code cleanup
* chore: cleanup account query
* chore: Remove unused variables
---------
Co-authored-by: Ritvik Sardana <ritviksardana@Ritviks-MacBook-Air.local>
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 961f41c..c24442e 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -179,6 +179,7 @@
in_account_currency=True,
cost_center=None,
ignore_account_permission=False,
+ account_type=None,
):
if not account and frappe.form_dict.get("account"):
account = frappe.form_dict.get("account")
@@ -254,6 +255,21 @@
else:
cond.append("""gle.account = %s """ % (frappe.db.escape(account, percent=False),))
+ if account_type:
+ accounts = frappe.db.get_all(
+ "Account",
+ filters={"company": company, "account_type": account_type, "is_group": 0},
+ pluck="name",
+ order_by="lft",
+ )
+
+ cond.append(
+ """
+ gle.account in (%s)
+ """
+ % (", ".join([frappe.db.escape(account) for account in accounts]))
+ )
+
if party_type and party:
cond.append(
"""gle.party_type = %s and gle.party = %s """
@@ -263,7 +279,8 @@
if company:
cond.append("""gle.company = %s """ % (frappe.db.escape(company, percent=False)))
- if account or (party_type and party):
+ if account or (party_type and party) or account_type:
+
if in_account_currency:
select_field = "sum(debit_in_account_currency) - sum(credit_in_account_currency)"
else:
@@ -276,7 +293,6 @@
select_field, " and ".join(cond)
)
)[0][0]
-
# if bal is None, return 0
return flt(bal)