From 548e9a26dbb54548346764b0bdd0ff64a73cba07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Oberle?= Date: Thu, 7 May 2026 17:05:45 +0200 Subject: [PATCH] refactor(purchase-order): use ORM syntax for min order quantity query (#54778) * refactor(purchase-order): use ORM syntax for min order quantity query Use frappe.get_all instead of raw SQL with manual string formatting to fetch min_order_qty. This improves code readability and leverages the framework's built-in database abstraction. * chore: fix formatting * chore: fix formatting * chore: fix formatting by adding a space --- erpnext/buying/doctype/purchase_order/purchase_order.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 22d249c222a..5a5f6cd5c70 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -293,15 +293,14 @@ class PurchaseOrder(BuyingController): self.party_account_currency = get_party_account_currency("Supplier", self.supplier, self.company) def validate_minimum_order_qty(self): + """Check if total ordered quantities meet the Item's minimum order requirement.""" if not self.get("items"): return items = list(set(d.item_code for d in self.get("items"))) itemwise_min_order_qty = frappe._dict( - frappe.db.sql( - """select name, min_order_qty - from tabItem where name in ({})""".format(", ".join(["%s"] * len(items))), - items, + frappe.get_all( + "Item", fields=["name", "min_order_qty"], filters={"name": ["in", items]}, as_list=True ) )