Disallowed End of Life Items from getting selected in Production Orders and Stock Reconciliation
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index 17fa202..50f46ca 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -262,7 +262,8 @@
 	return {
 		filters:[
 			['Item', 'is_pro_applicable', '=', 'Yes'],
-			['Item', 'has_variants', '=', 'No']
+			['Item', 'has_variants', '=', 'No'],
+			['Item', 'end_of_life', '>', frappe.datetime.now_datetime()]
 		]
 	}
 }
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 93ce5e1..7a0921d 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -9,6 +9,7 @@
 from frappe.model.document import Document
 from erpnext.manufacturing.doctype.bom.bom import validate_bom_no
 from dateutil.relativedelta import relativedelta
+from erpnext.stock.doctype.item.item import validate_end_of_life
 
 class OverProductionError(frappe.ValidationError): pass
 class StockOverProductionError(frappe.ValidationError): pass
@@ -329,6 +330,8 @@
 		
 		if frappe.db.get_value("Item", self.production_item, "has_variants"):
 			frappe.throw(_("Production Order cannot be raised against a Item Template"))
+		
+		validate_end_of_life(self.production_item)
 
 @frappe.whitelist()
 def get_item_details(item):
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index 34d584a..f9aa031 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -135,6 +135,12 @@
 		prod_order.set_production_order_operations()
 		self.assertEqual(prod_order.planned_operating_cost, cost*2)
 		
+	def test_production_item(self):
+		item = frappe.get_doc("Item", "_Test FG Item")
+		item.end_of_life = 
+		
+		prod_order = make_prod_order_test_record(item="_Test FG Item", qty=1, do_not_save=True)
+		
 def make_prod_order_test_record(**args):
 	args = frappe._dict(args)
 
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
index c0ae213..b394b71 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
@@ -98,3 +98,11 @@
 cur_frm.cscript.posting_date = function(doc, cdt, cdn){
 	erpnext.get_fiscal_year(doc.company, doc.posting_date);
 }
+
+cur_frm.fields_dict.items.grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
+	return {
+		filters:[
+			['Item', 'end_of_life', '>', frappe.datetime.now_datetime()]
+		]
+	}
+}
\ No newline at end of file