From e233f0e2ffbe2ccb4cfafaed8576d250a06e290c Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Thu, 9 Jul 2015 17:35:51 +0530 Subject: [PATCH] Validation added in Production Order to prevent PO against Item Template or if Allow PO is No in Item Master --- .../doctype/production_order/production_order.js | 3 ++- .../doctype/production_order/production_order.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js index 17fbc5e235..6d16cd4621 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.cscript['Update Finished Goods'] = function() { 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 0274b7ef0b..0f805d0645 100644 --- a/erpnext/manufacturing/doctype/production_order/production_order.py +++ b/erpnext/manufacturing/doctype/production_order/production_order.py @@ -30,6 +30,7 @@ class ProductionOrder(Document): 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 @@ class ProductionOrder(Document): 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):