[fixes] test case fixes for drop shipping
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 318813c..a866e81 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -465,17 +465,17 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "is_drop_ship", 
+   "fieldname": "delivered_by_supplier", 
    "fieldtype": "Check", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Is Drop Ship", 
+   "label": "Delivered By Supplier", 
    "no_copy": 0, 
    "permlevel": 0, 
    "precision": "", 
-   "print_hide": 1, 
+   "print_hide": 0, 
    "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -2238,7 +2238,7 @@
  "is_submittable": 1, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-10-22 19:03:10.932738", 
+ "modified": "2015-10-26 09:09:06.796558", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Purchase Order", 
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 45444b9..3fe833f 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -224,7 +224,8 @@
 		self.status_updater[0].update({
 			"target_parent_dt": "Sales Order",
 			"target_dt": "Sales Order Item",
-			'target_field': 'ordered_qty'
+			'target_field': 'ordered_qty',
+			"target_parent_field": ''
 		})
 		
 @frappe.whitelist()
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 2951d28..af300f6 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -22,11 +22,12 @@
 			if(doc.status != 'Stopped' && doc.status != 'Closed') {
 				
 				$.each(cur_frm.doc.items, function(i, item){
-					if(item.is_delivered_by_supplier == 1 || item.supplier){
+					if((item.delivered_by_supplier == 1 || item.supplier) && (item.qty > item.ordered_qty)){
 						is_delivered_by_supplier = true;
 					}
 					else{
-						is_delivery_note = true;
+						if(item.qty > item.delivered_qty)
+							is_delivery_note = true;
 					}
 				})
 
@@ -177,11 +178,11 @@
 							filters: {'parent': cur_frm.doc.name}
 						}
 					}, "reqd": 1 },
-				{"fieldtype": "Button", "label": __("Proceed"), "fieldname": "proceed"},
+				{"fieldtype": "Button", "label": __("Make Purchase Order"), "fieldname": "make_purchase_order"},
 			]
 		});
 
-		dialog.fields_dict.proceed.$input.click(function() {
+		dialog.fields_dict.make_purchase_order.$input.click(function() {
 			args = dialog.get_values();
 			if(!args) return;
 			dialog.hide();
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index 667f21b..3ef1a25 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -302,10 +302,14 @@
 		from erpnext.buying.doctype.purchase_order.purchase_order import delivered_by_supplier
 
 		po_item = make_item("_Test Item for Drop Shipping", {"is_stock_item": 1, "is_sales_item": 1,
-			"is_purchase_item": 1, "delivered_by_supplier": 1, 'default_supplier': '_Test Supplier'})
+			"is_purchase_item": 1, "delivered_by_supplier": 1, 'default_supplier': '_Test Supplier', 
+		    "expense_account": "_Test Account Cost for Goods Sold - _TC",
+		    "cost_center": "_Test Cost Center - _TC"
+			})
 
 		dn_item = make_item("_Test Regular Item", {"is_stock_item": 1, "is_sales_item": 1,
-			"is_purchase_item": 1})
+			"is_purchase_item": 1, "expense_account": "_Test Account Cost for Goods Sold - _TC",
+  		  	"cost_center": "_Test Cost Center - _TC"})
 
 		so_items = [
 			{
@@ -326,8 +330,8 @@
 			}
 		]
 		
-		existing_ordered_qty, existing_reserved_qty = frappe.db.get_value("Bin",
-		 {"item_code": po_item.item_code, "warehouse": "_Test Warehouse - _TC"}, ["ordered_qty", "reserved_qty"])
+		bin = frappe.get_all("Bin", filters={"item_code": po_item.item_code, "warehouse": "_Test Warehouse - _TC"}, 
+			fields=["ordered_qty", "reserved_qty"])
 					
 		so = make_sales_order(item_list=so_items, do_not_submit=True)
 		so.submit()
@@ -335,7 +339,7 @@
 		po = make_purchase_order_for_drop_shipment(so.name, '_Test Supplier')
 		po.submit()
 		
-		dn = create_dn_against_so(so, delivered_qty=1)
+		dn = create_dn_against_so(so.name, delivered_qty=1)
 		
 		self.assertEquals(so.customer, po.customer)
 		self.assertEquals(po.items[0].prevdoc_doctype, "Sales Order")
@@ -344,19 +348,29 @@
 		self.assertEquals(dn.items[0].item_code, dn_item.item_code)
 		
 		#test ordered_qty and reserved_qty		
-		ordered_qty, reserved_qty = frappe.db.get_value("Bin",
-		 {"item_code": po_item.item_code, "warehouse": "_Test Warehouse - _TC"}, ["ordered_qty", "reserved_qty"])
+		ordered_qty, reserved_qty = frappe.db.get_value("Bin", 
+			{"item_code": po_item.item_code, "warehouse": "_Test Warehouse - _TC"}, ["ordered_qty", "reserved_qty"])
+		
+		existing_ordered_qty = bin[0].ordered_qty if bin else 0.0
+		existing_reserved_qty = bin[0].reserved_qty if bin else 0.0	
 					
-		self.assertEquals(abs(ordered_qty), (existing_ordered_qty + so_items[0]['qty']))			
-		self.assertEquals(abs(reserved_qty), (existing_reserved_qty + so_items[0]['qty']))	
+		self.assertEquals(abs(ordered_qty), existing_ordered_qty + so_items[0]['qty'])			
+		self.assertEquals(abs(reserved_qty), existing_reserved_qty + so_items[0]['qty'])	
 		
 		#test po_item length
 		self.assertEquals(len(po.items), 1)
 		
-		#test per_ordered status
+		#test per_delivered status
 		delivered_by_supplier(po.name)
-		per_delivered = frappe.db.get_value("Sales Order", so.name, "per_delivered")
-		self.assertEquals(per_delivered, )
+		per_delivered = frappe.db.sql("""select sum(if(qty > ifnull(delivered_qty, 0), delivered_qty, qty))/sum(qty)*100 as per_delivered 
+			from `tabSales Order Item` where parent="{0}" """.format(so.name))
+
+		self.assertEquals(frappe.db.get_value("Sales Order", so.name, "per_delivered"), per_delivered[0][0])
+		
+		dn = create_dn_against_so(so.name, delivered_qty=1)
+		
+		so.db_set('status', "Closed")
+		so.update_reserved_qty()
 		
 	def test_reserved_qty_for_closing_so(self):
 		from erpnext.stock.doctype.item.test_item import make_item
diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py
index b1e8b22..609c986 100644
--- a/erpnext/stock/stock_balance.py
+++ b/erpnext/stock/stock_balance.py
@@ -122,7 +122,7 @@
 		from `tabPurchase Order Item` po_item, `tabPurchase Order` po
 		where po_item.item_code=%s and po_item.warehouse=%s
 		and po_item.qty > ifnull(po_item.received_qty, 0) and po_item.parent=po.name
-		and po.status not in ('Stopped', 'Closed') and po.docstatus=1""", (item_code, warehouse))
+		and po.status not in ('Stopped', 'Closed', 'Delivered') and po.docstatus=1""", (item_code, warehouse))
 
 	return flt(ordered_qty[0][0]) if ordered_qty else 0