fix: validate sales order linked work order creation on server side
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 9873efa..59ad678 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -56,6 +56,7 @@
 
 	def validate_sales_order(self):
 		if self.sales_order:
+			self.check_sales_order_on_hold_or_close()
 			so = frappe.db.sql("""
 				select so.name, so_item.delivery_date, so.project
 				from `tabSales Order` so
@@ -91,6 +92,11 @@
 			else:
 				frappe.throw(_("Sales Order {0} is not valid").format(self.sales_order))
 
+	def check_sales_order_on_hold_or_close(self):
+		status = frappe.db.get_value("Sales Order", self.sales_order, "status")
+		if status in ("Closed", "On Hold"):
+			frappe.throw(_("Sales Order {0} is {1}").format(self.sales_order, status))
+
 	def set_default_warehouse(self):
 		if not self.wip_warehouse:
 			self.wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")