patch
diff --git a/erpnext/patches/v9_2/update_reserved_qty_for_purchase_order.py b/erpnext/patches/v9_2/update_reserved_qty_for_purchase_order.py
new file mode 100644
index 0000000..805c347
--- /dev/null
+++ b/erpnext/patches/v9_2/update_reserved_qty_for_purchase_order.py
@@ -0,0 +1,33 @@
+import frappe
+from frappe import _
+from erpnext.stock.utils import get_bin
+
+def execute():
+	def_warehouse = frappe.db.sql("""select min(name) from `tabWarehouse` where is_group = 0""")[0][0]
+
+	po_item = list(frappe.db.sql(("""select distinct po.name as poname, poitem.rm_item_code as rm_item_code
+					from `tabPurchase Order` po, `tabPurchase Order Item Supplied` poitem
+					where po.name = poitem.parent
+					and po.is_subcontracted = "Yes"
+					and po.docstatus = 1"""),as_dict=1))
+
+	items = list(set([d.rm_item_code for d in po_item]))
+	item_wh = frappe._dict(frappe.db.sql("""select item_code, default_warehouse
+					from `tabItem` where name in ({0})""".format(", ".join(["%s"] * len(items))), items))
+	#Update reserved warehouse
+	for item in po_item:
+		reserve_warehouse = item_wh.get(item.rm_item_code) or def_warehouse
+		update_res_warehouse = frappe.db.sql("""update `tabPurchase Order Item Supplied`
+								set reserve_warehouse = %s
+								where parent = %s and rm_item_code = %s""",(reserve_warehouse
+								,item["poname"],item["rm_item_code"]))
+	#Update bin
+	item_wh_bin = frappe.db.sql(("""select distinct poitemsup.rm_item_code as rm_item_code, 
+					poitemsup.reserve_warehouse as reserve_warehouse
+					from `tabPurchase Order` po, `tabPurchase Order Item Supplied` poitemsup
+					where po.name = poitemsup.parent
+					and po.is_subcontracted = "Yes"
+					and po.docstatus = 1"""),as_dict=1)
+	for d in item_wh_bin:
+		stock_bin = get_bin(d["rm_item_code"], d["reserve_warehouse"])
+		stock_bin.update_reserved_qty_for_sub_contracting()
\ No newline at end of file