mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-13 11:55:11 +00:00
fix(budget-variance-report): validate 'budget_against' filter
(cherry picked from commit 79d0708ea7)
This commit is contained in:
@@ -5,6 +5,7 @@ import frappe
|
|||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import add_months, flt, formatdate
|
from frappe.utils import add_months, flt, formatdate
|
||||||
|
|
||||||
|
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions
|
||||||
from erpnext.accounts.utils import get_fiscal_year
|
from erpnext.accounts.utils import get_fiscal_year
|
||||||
from erpnext.controllers.trends import get_period_date_ranges
|
from erpnext.controllers.trends import get_period_date_ranges
|
||||||
|
|
||||||
@@ -13,6 +14,8 @@ def execute(filters=None):
|
|||||||
if not filters:
|
if not filters:
|
||||||
filters = {}
|
filters = {}
|
||||||
|
|
||||||
|
validate_filters(filters)
|
||||||
|
|
||||||
columns = get_columns(filters)
|
columns = get_columns(filters)
|
||||||
if filters.get("budget_against_filter"):
|
if filters.get("budget_against_filter"):
|
||||||
dimensions = filters.get("budget_against_filter")
|
dimensions = filters.get("budget_against_filter")
|
||||||
@@ -31,6 +34,10 @@ def execute(filters=None):
|
|||||||
return columns, data, None, chart_data
|
return columns, data, None, chart_data
|
||||||
|
|
||||||
|
|
||||||
|
def validate_filters(filters):
|
||||||
|
validate_budget_dimensions(filters)
|
||||||
|
|
||||||
|
|
||||||
def get_budget_records(filters, dimensions):
|
def get_budget_records(filters, dimensions):
|
||||||
budget_against_field = frappe.scrub(filters["budget_against"])
|
budget_against_field = frappe.scrub(filters["budget_against"])
|
||||||
|
|
||||||
@@ -51,7 +58,7 @@ def get_budget_records(filters, dimensions):
|
|||||||
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 b.{budget_against_field} IN ({', '.join(['%s'] * len(dimensions))})
|
AND b.{budget_against_field} IN ({", ".join(["%s"] * len(dimensions))})
|
||||||
AND (
|
AND (
|
||||||
b.from_fiscal_year <= %s
|
b.from_fiscal_year <= %s
|
||||||
AND b.to_fiscal_year >= %s
|
AND b.to_fiscal_year >= %s
|
||||||
@@ -404,6 +411,17 @@ def get_budget_dimensions(filters):
|
|||||||
) # nosec
|
) # nosec
|
||||||
|
|
||||||
|
|
||||||
|
def validate_budget_dimensions(filters):
|
||||||
|
dimensions = [d.get("document_type") for d in get_dimensions(with_cost_center_and_project=True)[0]]
|
||||||
|
if filters.get("budget_against") and filters.get("budget_against") not in dimensions:
|
||||||
|
frappe.throw(
|
||||||
|
title=_("Invalid Accounting Dimension"),
|
||||||
|
msg=_("{0} is not a valid Accounting Dimension.").format(
|
||||||
|
frappe.bold(filters.get("budget_against"))
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def build_comparison_chart_data(filters, columns, data):
|
def build_comparison_chart_data(filters, columns, data):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user