Validation for reserved warhouse
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 6522a34..942a2e6 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -257,8 +257,8 @@
 	def update_reserved_qty_for_subcontract(self):
 		for d in self.supplied_items:
 			if d.rm_item_code:
-				stock_bin = get_bin(d.rm_item_code, d.reserve_warehouse)
-				stock_bin.update_reserved_qty_for_sub_contracting()
+					stock_bin = get_bin(d.rm_item_code, d.reserve_warehouse)
+					stock_bin.update_reserved_qty_for_sub_contracting()
 
 @frappe.whitelist()
 def close_or_unclose_purchase_orders(names, status):
diff --git a/erpnext/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.json b/erpnext/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.json
index 1bcf5e4..5e8754f 100644
--- a/erpnext/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.json
+++ b/erpnext/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.json
@@ -327,7 +327,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "default": "", 
    "fieldname": "reserve_warehouse", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -364,7 +363,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2017-11-29 08:51:08.362463", 
+ "modified": "2017-11-29 21:10:40.431423", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Purchase Order Item Supplied", 
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index e05ccc9..15d9c05 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -812,6 +812,12 @@
 		#Get PO Supplied Items Details
 		po_doc =  frappe.get_doc("Purchase Order",self.purchase_order)
 		po_supplied_items = po_doc.get("supplied_items")
+		#Validate source warehouse is same as reserved warehouse
+		for item in self.get("items"):
+			if item.s_warehouse:
+				for d in po_supplied_items:
+					if item.item_code == d.rm_item_code and item.s_warehouse != d.reserve_warehouse:
+						frappe.throw(_("In case of Sub Contract Stock Entry, Source Warehouse: {0} should match with Reserved Warehouse: {1} on PO").format(item.s_warehouse,d.reserve_warehouse))
 		#Update reserved sub contracted quantity in bin based on Supplied Item Details
 		for d in po_supplied_items:
 			stock_bin = get_bin(d.rm_item_code, d.reserve_warehouse)