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) {
value = default_formatter(value, row, column, data);
if (column.fieldname && column.fieldname.startsWith("variance")) {
if (column.fieldname.includes(__("variance"))) {
if (data[column.fieldname] < 0) {
value = "<span style='color:red'>" + value + "</span>";
} else if (data[column.fieldname] > 0) {

View File

@@ -1,35 +1,40 @@
{
"add_total_row": 0,
"apply_user_permissions": 1,
"creation": "2013-06-18 12:56:36",
"disabled": 0,
"docstatus": 0,
"doctype": "Report",
"idx": 3,
"is_standard": "Yes",
"modified": "2017-02-24 20:19:06.964033",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget Variance Report",
"owner": "Administrator",
"ref_doctype": "Cost Center",
"report_name": "Budget Variance Report",
"report_type": "Script Report",
"add_total_row": 0,
"add_translate_data": 0,
"columns": [],
"creation": "2013-06-18 12:56:36",
"disabled": 0,
"docstatus": 0,
"doctype": "Report",
"filters": [],
"idx": 3,
"is_standard": "Yes",
"letter_head": null,
"modified": "2025-12-30 14:51:02.061226",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget Variance Report",
"owner": "Administrator",
"prepared_report": 0,
"ref_doctype": "Cost Center",
"report_name": "Budget Variance Report",
"report_type": "Script Report",
"roles": [
{
"role": "Accounts Manager"
},
},
{
"role": "Auditor"
},
},
{
"role": "Accounts User"
},
},
{
"role": "Sales 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):
budget_against_field = frappe.scrub(filters["budget_against"])
budget_records = frappe.db.sql(
return frappe.db.sql(
f"""
SELECT
b.name,
b.account,
b.account,
b.{budget_against_field} AS dimension,
b.budget_amount,
b.from_fiscal_year,
@@ -58,12 +59,19 @@ def fetch_budget_accounts(filters):
b.company = %s
AND b.docstatus = 1
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,
)
return budget_records
def build_budget_map(budget_records, filters):