diff --git a/erpnext/controllers/budget_controller.py b/erpnext/controllers/budget_controller.py index eee9eca7f11..6c437c00248 100644 --- a/erpnext/controllers/budget_controller.py +++ b/erpnext/controllers/budget_controller.py @@ -3,7 +3,7 @@ from collections import OrderedDict import frappe from frappe import _, qb from frappe.query_builder import Criterion -from frappe.query_builder.functions import IfNull, Max, Sum +from frappe.query_builder.functions import IfNull, Sum from frappe.utils import fmt_money from erpnext.accounts.doctype.budget.budget import BudgetError, get_accumulated_monthly_budget @@ -260,10 +260,10 @@ class BudgetValidation: qb.from_(mr) .inner_join(mri) .on(mr.name == mri.parent) - # rate is outside the Sum (no GROUP BY -> implicit aggregate); Max() keeps it valid on - # postgres and matches MySQL's arbitrary single-rate choice for this aggregate. .select( - (Sum(IfNull(mri.stock_qty, 0) - IfNull(mri.ordered_qty, 0)) * Max(mri.rate)).as_("amount") + Sum((IfNull(mri.stock_qty, 0) - IfNull(mri.ordered_qty, 0)) * IfNull(mri.rate, 0)).as_( + "amount" + ) ) .where(Criterion.all(conditions)) .run(as_dict=True)