fix: include budget with for multiple fiscal years

This commit is contained in:
khushi8112
2025-12-30 15:11:02 +05:30
parent 8108fe4ca5
commit e3fb7f4c47
3 changed files with 41 additions and 28 deletions

View File

@@ -6,7 +6,7 @@ frappe.query_reports["Budget Variance Report"] = {
formatter: function (value, row, column, data, default_formatter) { formatter: function (value, row, column, data, default_formatter) {
value = default_formatter(value, row, column, data); value = default_formatter(value, row, column, data);
if (column.fieldname && column.fieldname.startsWith("variance")) { if (column.fieldname.includes(__("variance"))) {
if (data[column.fieldname] < 0) { if (data[column.fieldname] < 0) {
value = "<span style='color:red'>" + value + "</span>"; value = "<span style='color:red'>" + value + "</span>";
} else if (data[column.fieldname] > 0) { } else if (data[column.fieldname] > 0) {

View File

@@ -1,35 +1,40 @@
{ {
"add_total_row": 0, "add_total_row": 0,
"apply_user_permissions": 1, "add_translate_data": 0,
"creation": "2013-06-18 12:56:36", "columns": [],
"disabled": 0, "creation": "2013-06-18 12:56:36",
"docstatus": 0, "disabled": 0,
"doctype": "Report", "docstatus": 0,
"idx": 3, "doctype": "Report",
"is_standard": "Yes", "filters": [],
"modified": "2017-02-24 20:19:06.964033", "idx": 3,
"modified_by": "Administrator", "is_standard": "Yes",
"module": "Accounts", "letter_head": null,
"name": "Budget Variance Report", "modified": "2025-12-30 14:51:02.061226",
"owner": "Administrator", "modified_by": "Administrator",
"ref_doctype": "Cost Center", "module": "Accounts",
"report_name": "Budget Variance Report", "name": "Budget Variance Report",
"report_type": "Script Report", "owner": "Administrator",
"prepared_report": 0,
"ref_doctype": "Cost Center",
"report_name": "Budget Variance Report",
"report_type": "Script Report",
"roles": [ "roles": [
{ {
"role": "Accounts Manager" "role": "Accounts Manager"
}, },
{ {
"role": "Auditor" "role": "Auditor"
}, },
{ {
"role": "Accounts User" "role": "Accounts User"
}, },
{ {
"role": "Sales User" "role": "Sales User"
}, },
{ {
"role": "Purchase User" "role": "Purchase User"
} }
] ],
} "timeout": 0
}

View File

@@ -41,11 +41,12 @@ def get_month_list(start_date, end_date):
def fetch_budget_accounts(filters): def fetch_budget_accounts(filters):
budget_against_field = frappe.scrub(filters["budget_against"]) budget_against_field = frappe.scrub(filters["budget_against"])
budget_records = frappe.db.sql(
return frappe.db.sql(
f""" f"""
SELECT SELECT
b.name, b.name,
b.account, b.account,
b.{budget_against_field} AS dimension, b.{budget_against_field} AS dimension,
b.budget_amount, b.budget_amount,
b.from_fiscal_year, b.from_fiscal_year,
@@ -58,12 +59,19 @@ def fetch_budget_accounts(filters):
b.company = %s b.company = %s
AND b.docstatus = 1 AND b.docstatus = 1
AND b.budget_against = %s AND b.budget_against = %s
AND (%s BETWEEN b.from_fiscal_year AND b.to_fiscal_year OR %s BETWEEN b.from_fiscal_year AND b.to_fiscal_year) AND (
b.from_fiscal_year <= %s
AND b.to_fiscal_year >= %s
)
""", """,
(filters.company, filters.budget_against, filters.from_fiscal_year, filters.to_fiscal_year), (
filters.company,
filters.budget_against,
filters.to_fiscal_year,
filters.from_fiscal_year,
),
as_dict=True, as_dict=True,
) )
return budget_records
def build_budget_map(budget_records, filters): def build_budget_map(budget_records, filters):