[fixes] patch to update delivery status for drop ship item
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index fcf463b..b10b72f 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -159,7 +159,6 @@
 	def on_cancel(self):
 		if self.has_drop_ship_item():
 			self.update_status_updater()
-			self.reset_received_qty_for_drop_ship_items()
 			self.update_delivered_qty_in_sales_order()
 
 		pc_obj = frappe.get_doc('Purchase Common')
@@ -218,7 +217,7 @@
 
 		for so_name in sales_orders_to_update:
 			so = frappe.get_doc("Sales Order", so_name)
-			so.update_delivery_status(self.name)
+			so.update_delivery_status()
 			so.set_status(update=True)
 			so.notify_update()
 
@@ -235,12 +234,7 @@
 		for item in self.items:
 			if item.delivered_by_supplier == 1:
 				item.received_qty = item.qty
-	
-	def reset_received_qty_for_drop_ship_items(self):
-		for item in self.items:
-			if item.delivered_by_supplier == 1:
-				frappe.db.set_value("Purchase Order Item", item.name, "received_qty", 0.0)
-				
+
 @frappe.whitelist()
 def stop_or_unstop_purchase_orders(names, status):
 	if not frappe.has_permission("Purchase Order", "write"):
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index eb8d5e9..73e9d7f 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -76,10 +76,10 @@
 		self.update_qty()
 		self.validate_qty()
 
-	def set_status(self, update=False, status=None):
+	def set_status(self, update=False, status=None, update_modified=True):
 		if self.is_new():
 			return
-
+				
 		if self.doctype in status_map:
 			_status = self.status
 
@@ -102,9 +102,10 @@
 
 			if self.status != _status and self.status not in ("Submitted", "Cancelled"):
 				self.add_comment("Label", _(self.status))
-
+			
 			if update:
-				frappe.db.set_value(self.doctype, self.name, "status", self.status)
+				frappe.db.set_value(self.doctype, self.name, "status", self.status, 
+					update_modified=update_modified)
 
 	def validate_qty(self):
 		"""Validates qty at row level"""
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index cd38e67..302a338 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -237,4 +237,5 @@
 erpnext.patches.v6_10.fix_ordered_received_billed
 erpnext.patches.v6_10.fix_jv_total_amount #2015-11-30
 erpnext.patches.v6_10.email_digest_default_quote
-erpnext.patches.v6_10.fix_billed_amount_in_drop_ship_po
\ No newline at end of file
+erpnext.patches.v6_10.fix_billed_amount_in_drop_ship_po
+erpnext.patches.v6_10.fix_delivery_status_of_drop_ship_item
\ No newline at end of file
diff --git a/erpnext/patches/v6_10/fix_delivery_status_of_drop_ship_item.py b/erpnext/patches/v6_10/fix_delivery_status_of_drop_ship_item.py
new file mode 100644
index 0000000..a54d0ab
--- /dev/null
+++ b/erpnext/patches/v6_10/fix_delivery_status_of_drop_ship_item.py
@@ -0,0 +1,17 @@
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	sales_orders_to_update = []
+
+	for item in frappe.get_all("Purchase Order Item", filters={"delivered_by_supplier": 1}, 
+		fields=["prevdoc_doctype", "prevdoc_docname"]):
+		
+		if item.prevdoc_doctype == "Sales Order":
+			if item.prevdoc_docname not in sales_orders_to_update:
+				sales_orders_to_update.append(item.prevdoc_docname)
+
+	for so_name in sales_orders_to_update:
+		so = frappe.get_doc("Sales Order", so_name)
+		so.update_delivery_status()
+		so.set_status(update=True, update_modified=False)
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 6d396bd..7712f5e 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -265,27 +265,29 @@
 		if exc_list:
 			frappe.throw('\n'.join(exc_list))
 
-	def update_delivery_status(self, po_name):
+	def update_delivery_status(self):
 		"""Update delivery status from Purchase Order for drop shipping"""
 		tot_qty, delivered_qty = 0.0, 0.0
 
 		for item in self.items:
 			if item.delivered_by_supplier:
-				item_delivered_qty  = frappe.db.sql("""select received_qty
+				item_delivered_qty  = frappe.db.sql("""select sum(qty)
 					from `tabPurchase Order Item` poi, `tabPurchase Order` po
 					where poi.prevdoc_detail_docname = %s
 						and poi.prevdoc_doctype = 'Sales Order'
 						and poi.item_code = %s
 						and poi.parent = po.name
+						and po.docstatus = 1
 						and po.status = 'Delivered'""", (item.name, item.item_code))
 
 				item_delivered_qty = item_delivered_qty[0][0] if item_delivered_qty else 0
-				item.db_set("delivered_qty", item_delivered_qty)
+				item.db_set("delivered_qty", flt(item_delivered_qty), update_modified=False)
 
 			delivered_qty += item.delivered_qty
 			tot_qty += item.qty
-
-		frappe.db.set_value("Sales Order", self.name, "per_delivered", flt(delivered_qty/tot_qty) * 100)
+			
+		frappe.db.set_value("Sales Order", self.name, "per_delivered", flt(delivered_qty/tot_qty) * 100, 
+		update_modified=False)
 
 def get_list_context(context=None):
 	from erpnext.controllers.website_list_for_contact import get_list_context