diff --git a/erpnext/controllers/budget_controller.py b/erpnext/controllers/budget_controller.py index 70c9c73e181..89a6d009fb4 100644 --- a/erpnext/controllers/budget_controller.py +++ b/erpnext/controllers/budget_controller.py @@ -174,9 +174,6 @@ class BudgetValidation: def get_ordered_amount(self, key: tuple | None = None): if key: - items = set([x.item_code for x in self.doc.items]) - exp_accounts = set([x.expense_account for x in self.doc.items]) - po = qb.DocType("Purchase Order") poi = qb.DocType("Purchase Order Item") @@ -186,8 +183,11 @@ class BudgetValidation: conditions.append(po.status.ne("Closed")) conditions.append(po.transaction_date[self.fy_start_date : self.fy_end_date]) conditions.append(poi.amount.gt(poi.billed_amt)) - conditions.append(poi.expense_account.isin(exp_accounts)) - conditions.append(poi.item_code.isin(items)) + conditions.append(poi.expense_account.eq(key[2])) + + if self.document_type in ["Purchase Order", "Material Request"]: + if items := set([x.item_code for x in self.doc.items]): + conditions.append(poi.item_code.isin(items)) # key structure - (dimension_type, dimension, GL account) conditions.append(poi[key[0]].eq(key[1])) @@ -206,9 +206,6 @@ class BudgetValidation: def get_requested_amount(self, key: tuple | None = None): if key: - items = set([x.item_code for x in self.doc.items]) - exp_accounts = set([x.expense_account for x in self.doc.items]) - mr = qb.DocType("Material Request") mri = qb.DocType("Material Request Item") @@ -218,8 +215,11 @@ class BudgetValidation: conditions.append(mr.material_request_type.eq("Purchase")) conditions.append(mr.status.ne("Stopped")) conditions.append(mr.transaction_date[self.fy_start_date : self.fy_end_date]) - conditions.append(mri.expense_account.isin(exp_accounts)) - conditions.append(mri.item_code.isin(items)) + conditions.append(mri.expense_account.eq(key[2])) + + if self.document_type in ["Purchase Order", "Material Request"]: + if items := set([x.item_code for x in self.doc.items]): + conditions.append(mri.item_code.isin(items)) # key structure - (dimension_type, dimension, GL account) conditions.append(mri[key[0]].eq(key[1]))