fix: Better budget exceeding validation messages (#33713)
* fix: Better budget exceeding validation messages * chore: remove unwanted changes
This commit is contained in:
parent
f6f64083d2
commit
2f03dcb5b6
@ -184,6 +184,11 @@ def validate_budget_records(args, budget_records, expense_amount):
|
|||||||
amount = expense_amount or get_amount(args, budget)
|
amount = expense_amount or get_amount(args, budget)
|
||||||
yearly_action, monthly_action = get_actions(args, budget)
|
yearly_action, monthly_action = get_actions(args, budget)
|
||||||
|
|
||||||
|
if yearly_action in ("Stop", "Warn"):
|
||||||
|
compare_expense_with_budget(
|
||||||
|
args, flt(budget.budget_amount), _("Annual"), yearly_action, budget.budget_against, amount
|
||||||
|
)
|
||||||
|
|
||||||
if monthly_action in ["Stop", "Warn"]:
|
if monthly_action in ["Stop", "Warn"]:
|
||||||
budget_amount = get_accumulated_monthly_budget(
|
budget_amount = get_accumulated_monthly_budget(
|
||||||
budget.monthly_distribution, args.posting_date, args.fiscal_year, budget.budget_amount
|
budget.monthly_distribution, args.posting_date, args.fiscal_year, budget.budget_amount
|
||||||
@ -195,28 +200,28 @@ def validate_budget_records(args, budget_records, expense_amount):
|
|||||||
args, budget_amount, _("Accumulated Monthly"), monthly_action, budget.budget_against, amount
|
args, budget_amount, _("Accumulated Monthly"), monthly_action, budget.budget_against, amount
|
||||||
)
|
)
|
||||||
|
|
||||||
if (
|
|
||||||
yearly_action in ("Stop", "Warn")
|
|
||||||
and monthly_action != "Stop"
|
|
||||||
and yearly_action != monthly_action
|
|
||||||
):
|
|
||||||
compare_expense_with_budget(
|
|
||||||
args, flt(budget.budget_amount), _("Annual"), yearly_action, budget.budget_against, amount
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def compare_expense_with_budget(args, budget_amount, action_for, action, budget_against, amount=0):
|
def compare_expense_with_budget(args, budget_amount, action_for, action, budget_against, amount=0):
|
||||||
actual_expense = amount or get_actual_expense(args)
|
actual_expense = get_actual_expense(args)
|
||||||
if actual_expense > budget_amount:
|
total_expense = actual_expense + amount
|
||||||
diff = actual_expense - budget_amount
|
|
||||||
|
if total_expense > budget_amount:
|
||||||
|
if actual_expense > budget_amount:
|
||||||
|
error_tense = _("is already")
|
||||||
|
diff = actual_expense - budget_amount
|
||||||
|
else:
|
||||||
|
error_tense = _("will be")
|
||||||
|
diff = total_expense - budget_amount
|
||||||
|
|
||||||
currency = frappe.get_cached_value("Company", args.company, "default_currency")
|
currency = frappe.get_cached_value("Company", args.company, "default_currency")
|
||||||
|
|
||||||
msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It will exceed by {5}").format(
|
msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6}").format(
|
||||||
_(action_for),
|
_(action_for),
|
||||||
frappe.bold(args.account),
|
frappe.bold(args.account),
|
||||||
args.budget_against_field,
|
frappe.unscrub(args.budget_against_field),
|
||||||
frappe.bold(budget_against),
|
frappe.bold(budget_against),
|
||||||
frappe.bold(fmt_money(budget_amount, currency=currency)),
|
frappe.bold(fmt_money(budget_amount, currency=currency)),
|
||||||
|
error_tense,
|
||||||
frappe.bold(fmt_money(diff, currency=currency)),
|
frappe.bold(fmt_money(diff, currency=currency)),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -227,9 +232,9 @@ def compare_expense_with_budget(args, budget_amount, action_for, action, budget_
|
|||||||
action = "Warn"
|
action = "Warn"
|
||||||
|
|
||||||
if action == "Stop":
|
if action == "Stop":
|
||||||
frappe.throw(msg, BudgetError)
|
frappe.throw(msg, BudgetError, title=_("Budget Exceeded"))
|
||||||
else:
|
else:
|
||||||
frappe.msgprint(msg, indicator="orange")
|
frappe.msgprint(msg, indicator="orange", title=_("Budget Exceeded"))
|
||||||
|
|
||||||
|
|
||||||
def get_actions(args, budget):
|
def get_actions(args, budget):
|
||||||
@ -351,7 +356,9 @@ def get_actual_expense(args):
|
|||||||
"""
|
"""
|
||||||
select sum(gle.debit) - sum(gle.credit)
|
select sum(gle.debit) - sum(gle.credit)
|
||||||
from `tabGL Entry` gle
|
from `tabGL Entry` gle
|
||||||
where gle.account=%(account)s
|
where
|
||||||
|
is_cancelled = 0
|
||||||
|
and gle.account=%(account)s
|
||||||
{condition1}
|
{condition1}
|
||||||
and gle.fiscal_year=%(fiscal_year)s
|
and gle.fiscal_year=%(fiscal_year)s
|
||||||
and gle.company=%(company)s
|
and gle.company=%(company)s
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user