From 6f9f6d3b7dc39a0b6b8ee9836895ba1421c9a80c Mon Sep 17 00:00:00 2001 From: Loic Oberle Date: Sat, 23 May 2026 08:26:25 +0200 Subject: [PATCH] refactor(sales_order): Replace SQL with ORM in validate_proj_cust (#55202) --- erpnext/selling/doctype/sales_order/sales_order.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index b290ef1b563..cbad5faa22d 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -438,12 +438,10 @@ class SalesOrder(SellingController): def validate_proj_cust(self): if self.project and self.customer_name: - res = frappe.db.sql( - """select name from `tabProject` where name = %s - and (customer = %s or ifnull(customer,'')='')""", - (self.project, self.customer), + project_has_valid_customer = frappe.db.exists( + "Project", {"name": self.project, "customer": ["in", [self.customer, "", None]]} ) - if not res: + if not project_has_valid_customer: frappe.throw( _("Customer {0} does not belong to project {1}").format(self.customer, self.project) )