[patch] mo drop shipment from purchase order to purchase order item
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 05723ca..1bf3e4b 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -233,3 +233,4 @@
 erpnext.patches.v6_6.remove_fiscal_year_from_leave_allocation
 execute:frappe.delete_doc_if_exists("DocType", "Stock UOM Replace Utility")
 erpnext.patches.v6_8.make_webform_standard
+erpnext.patches.v6_8.move_drop_ship_to_po_items
diff --git a/erpnext/patches/v6_8/move_drop_ship_to_po_items.py b/erpnext/patches/v6_8/move_drop_ship_to_po_items.py
new file mode 100644
index 0000000..8163e8f
--- /dev/null
+++ b/erpnext/patches/v6_8/move_drop_ship_to_po_items.py
@@ -0,0 +1,36 @@
+import frappe
+
+def execute():
+	for po in frappe.get_all("Purchase Order", filters={"delivered_by_supplier": 1}, fields=["name"]):
+		purchase_order = frappe.get_doc("Purchase Order", po)
+		
+		for item in purchase_order.items:
+			if item.prevdoc_doctype == "Sales Order":
+				delivered_by_supplier = frappe.get_value("Sales Order Item", {"parent": item.prevdoc_docname, 
+					"item_code": item.item_code}, "delivered_by_supplier")
+				
+				if delivered_by_supplier:
+					frappe.db.set_value("Purchase Order Item", item.name, "delivered_by_supplier", 1)
+					frappe.db.set_value("Purchase Order Item", item.name, "billed_amt", item.amount)
+					frappe.db.set_value("Purchase Order Item", item.name, "received_qty", item.qty)
+					
+		update_per_received(purchase_order)
+		update_per_billed(purchase_order)
+	
+def update_per_received(po):
+	frappe.db.sql(""" update `tabPurchase Order` 
+				set per_received = round((select sum(if(qty > ifnull(received_qty, 0), 
+					ifnull(received_qty, 0), qty)) / sum(qty) *100 
+				from `tabPurchase Order Item` 
+				where parent = "%(name)s"), 2) 
+			where name = "%(name)s" """ % po.as_dict())
+
+def update_per_billed(po):
+	frappe.db.sql(""" update `tabPurchase Order` 
+				set per_billed = round((select sum( if(amount > ifnull(billed_amt, 0), 
+					ifnull(billed_amt, 0), amount)) / sum(amount) *100 
+				from `tabPurchase Order Item` 
+				where parent = "%(name)s"), 2) 
+			where name = "%(name)s" """ % po.as_dict())
+
+				
\ No newline at end of file