Validation added in Production Order to prevent PO against Item Template or if Allow PO is No in Item Master
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index 17fbc5e..6d16cd4 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -250,7 +250,8 @@
cur_frm.fields_dict['production_item'].get_query = function(doc) {
return {
filters:[
- ['Item', 'is_pro_applicable', '=', 'Yes']
+ ['Item', 'is_pro_applicable', '=', 'Yes'],
+ ['Item', 'has_variants', '=', 'No']
]
}
}
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 0274b7e..0f805d0 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -30,6 +30,7 @@
validate_status(self.status, ["Draft", "Submitted", "Stopped",
"In Process", "Completed", "Cancelled"])
+ self.validate_production_item()
if self.bom_no:
validate_bom_no(self.production_item, self.bom_no)
@@ -319,6 +320,13 @@
def delete_time_logs(self):
for time_log in frappe.get_all("Time Log", ["name"], {"production_order": self.name}):
frappe.delete_doc("Time Log", time_log.name)
+
+ def validate_production_item(self):
+ if frappe.db.get_value("Item", self.production_item, "is_pro_applicable")=='No':
+ frappe.throw(_("Item is not allowed to have Production Order."))
+
+ if frappe.db.get_value("Item", self.production_item, "has_variants"):
+ frappe.throw(_("Production Order cannot be raised against a Item Template"))
@frappe.whitelist()
def get_item_details(item):