[merge fixes]
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 904b762..d0b454e 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -151,6 +151,52 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "customer", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer", 
+   "no_copy": 0, 
+   "options": "Customer", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "depends_on": "eval:doc.order_type==\"Drop Shipment\"", 
+   "fieldname": "customer_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Name", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "address_display", 
    "fieldtype": "Small Text", 
    "hidden": 1, 
@@ -172,6 +218,28 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "customer_address_display", 
+   "fieldtype": "Small Text", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Address", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "contact_display", 
    "fieldtype": "Small Text", 
    "hidden": 1, 
@@ -193,6 +261,28 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "customer_contact_display", 
+   "fieldtype": "Small Text", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Contact", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "contact_mobile", 
    "fieldtype": "Small Text", 
    "hidden": 1, 
@@ -214,6 +304,28 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "customer_contact_mobile", 
+   "fieldtype": "Small Text", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Mobile No", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "contact_email", 
    "fieldtype": "Small Text", 
    "hidden": 1, 
@@ -235,6 +347,28 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "customer_contact_email", 
+   "fieldtype": "Small Text", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Contact Email", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "column_break1", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -329,6 +463,28 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "drop_ship", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Drop Ship", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
    "collapsible": 1, 
    "fieldname": "currency_and_price_list", 
    "fieldtype": "Section Break", 
@@ -1404,6 +1560,30 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "depends_on": "eval:doc.drop_ship==1", 
+   "fieldname": "customer_address", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Address", 
+   "no_copy": 0, 
+   "options": "Address", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "cb_contact", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -1445,6 +1625,30 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
+   "collapsible": 0, 
+   "depends_on": "eval:doc.drop_ship==1", 
+   "fieldname": "customer_contact_person", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Customer Contact Person", 
+   "no_copy": 0, 
+   "options": "Contact", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
    "collapsible": 1, 
    "fieldname": "more_info", 
    "fieldtype": "Section Break", 
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 0affd78..234c643 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -162,6 +162,14 @@
 		clear_doctype_notifications(self)
 
 	def on_submit(self):
+		if self.drop_ship == 1:
+			self.status_updater[0].update({
+				"target_parent_dt": "Sales Order",
+				"target_parent_field": "per_ordered",
+				"target_dt": "Sales Order Item",
+				'target_field': 'ordered_qty'
+			})
+		
 		super(PurchaseOrder, self).on_submit()
 
 		purchase_controller = frappe.get_doc("Purchase Common")
@@ -176,6 +184,14 @@
 		purchase_controller.update_last_purchase_rate(self, is_submit = 1)
 
 	def on_cancel(self):
+		if self.drop_ship == 1:
+			self.status_updater[0].update({
+				"target_parent_dt": "Sales Order",
+				"target_parent_field": "per_ordered",
+				"target_dt": "Sales Order Item",
+				'target_field': 'ordered_qty'
+			})
+		
 		pc_obj = frappe.get_doc('Purchase Common')
 		self.check_for_stopped_status(pc_obj)
 
diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
index ecc41d2..70e08e5 100755
--- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
+++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
@@ -848,7 +848,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "fieldname": "prevdoc_doctype", 
-   "fieldtype": "Data", 
+   "fieldtype": "Link", 
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
@@ -857,6 +857,7 @@
    "no_copy": 1, 
    "oldfieldname": "prevdoc_doctype", 
    "oldfieldtype": "Data", 
+   "options": "DocType", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 1, 
@@ -871,16 +872,16 @@
    "bold": 0, 
    "collapsible": 0, 
    "fieldname": "prevdoc_docname", 
-   "fieldtype": "Link", 
+   "fieldtype": "Dynamic Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
-   "label": "Material Request No", 
+   "label": "Reference Name", 
    "no_copy": 1, 
    "oldfieldname": "prevdoc_docname", 
    "oldfieldtype": "Link", 
-   "options": "Material Request", 
+   "options": "prevdoc_doctype", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_width": "120px", 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index b087b8a..d7f287b 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -143,7 +143,7 @@
 			throw(_("Total allocated percentage for sales team should be 100"))
 
 	def validate_order_type(self):
-		valid_types = ["Sales", "Maintenance", "Shopping Cart"]
+		valid_types = ["Sales", "Maintenance", "Shopping Cart", "Drop Shipment"]
 		if not self.order_type:
 			self.order_type = "Sales"
 		elif self.order_type not in valid_types:
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 427cd89..510938a 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -7,7 +7,7 @@
 		method = "erpnext.accounts.party.get_party_details";
 	}
 	if(!args) {
-		if(frm.doc.customer) {
+		if(frm.doctype != "Purchase Order" && frm.doc.customer) {
 			args = {
 				party: frm.doc.customer,
 				party_type: "Customer",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 4a047e4..f46c16a 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -25,7 +25,7 @@
 				// 	doc.per_billed);
 
 				// indent
-				if(!doc.order_type || ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1)
+				if(!doc.order_type || ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1 && doc.drop_ship!=1)
 					cur_frm.add_custom_button(__('Material Request'), this.make_material_request);
 
 				if(flt(doc.per_billed)==0) {
@@ -37,19 +37,22 @@
 					cur_frm.add_custom_button(__('Stop'), cur_frm.cscript['Stop Sales Order'])
 
 					// maintenance
-					if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
+					if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1 && doc.drop_ship!=1) {
 						cur_frm.add_custom_button(__('Maint. Visit'), this.make_maintenance_visit);
 						cur_frm.add_custom_button(__('Maint. Schedule'), this.make_maintenance_schedule);
 					}
 
 					// delivery note
-					if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1)
+					if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1 && doc.drop_ship!=1)
 						cur_frm.add_custom_button(__('Delivery'), this.make_delivery_note).addClass("btn-primary");
 
 					// sales invoice
 					if(flt(doc.per_billed, 2) < 100) {
 						cur_frm.add_custom_button(__('Invoice'), this.make_sales_invoice).addClass("btn-primary");
 					}
+					
+					if(doc.drop_ship==1 && flt(doc.per_ordered, 2) < 100)
+						cur_frm.add_custom_button(__('Make Shipment'), cur_frm.cscript.make_drop_shipment);
 
 			} else {
 				// un-stop
@@ -145,6 +148,12 @@
 				frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
 			}
 		});
+	},
+	make_drop_shipment: function(){
+		frappe.model.open_mapped_doc({
+			method: "erpnext.selling.doctype.sales_order.sales_order.make_drop_shipment",
+			frm: cur_frm
+		})
 	}
 
 });
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index 5bc8ef4..97f5d36 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -86,7 +86,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Series",  
+   "label": "Series", 
    "no_copy": 1, 
    "oldfieldname": "naming_series", 
    "oldfieldtype": "Select", 
@@ -234,13 +234,14 @@
    "bold": 0, 
    "collapsible": 0, 
    "default": "Sales", 
+   "depends_on": "eval:doc.drop_ship!=1", 
    "fieldname": "order_type", 
    "fieldtype": "Select", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Order Type",  
+   "label": "Order Type", 
    "no_copy": 0, 
    "oldfieldname": "order_type", 
    "oldfieldtype": "Select", 
@@ -258,6 +259,28 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "drop_ship", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Drop Ship", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "column_break1", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -381,6 +404,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "depends_on": "eval:doc.drop_ship!=1", 
    "description": "", 
    "fieldname": "po_no", 
    "fieldtype": "Data", 
@@ -1134,7 +1158,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Apply Additional Discount On",  
+   "label": "Apply Additional Discount On", 
    "no_copy": 0, 
    "options": "\nGrand Total\nNet Total", 
    "permlevel": 0, 
@@ -1808,7 +1832,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Source",  
+   "label": "Source", 
    "no_copy": 0, 
    "oldfieldname": "source", 
    "oldfieldtype": "Select", 
@@ -1973,7 +1997,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 1, 
    "in_list_view": 1, 
-   "label": "Status",  
+   "label": "Status", 
    "no_copy": 1, 
    "oldfieldname": "status", 
    "oldfieldtype": "Select", 
@@ -1998,7 +2022,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Delivery Status",  
+   "label": "Delivery Status", 
    "no_copy": 1, 
    "options": "Not Delivered\nFully Delivered\nPartly Delivered\nClosed\nNot Applicable", 
    "permlevel": 0, 
@@ -2040,6 +2064,29 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "per_ordered", 
+   "fieldtype": "Percent", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 1, 
+   "in_list_view": 1, 
+   "label": "%  Ordered", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
+   "width": "100px"
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "column_break_81", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -2092,7 +2139,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Billing Status",  
+   "label": "Billing Status", 
    "no_copy": 1, 
    "options": "Not Billed\nFully Billed\nPartly Billed\nClosed", 
    "permlevel": 0, 
@@ -2326,7 +2373,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Recurring Type",  
+   "label": "Recurring Type", 
    "no_copy": 1, 
    "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", 
    "permlevel": 0, 
@@ -2553,7 +2600,7 @@
  "is_submittable": 1, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-10-03 07:39:10.525609", 
+ "modified": "2015-10-15 15:27:34.592276", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Sales Order", 
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 6cc12c5..25c8182 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -488,3 +488,57 @@
 			"end": end
 		}, as_dict=True, update={"allDay": 0})
 	return data
+
+@frappe.whitelist()
+def make_drop_shipment(source_name, target_doc=None):
+	def postprocess(source, target):
+		set_missing_values(source, target)
+		
+	def set_missing_values(source, target):
+		target.address_display = ""
+		target.contact_display = ""
+		target.contact_mobile = ""
+		target.contact_email = ""
+		target.ignore_pricing_rule = 1
+		target.run_method("set_missing_values")
+		target.run_method("calculate_taxes_and_totals")
+
+	def update_item(source, target, source_parent):
+		target.base_amount = (flt(source.qty) - flt(source.ordered_qty)) * flt(source.base_rate)
+		target.amount = (flt(source.qty) - flt(source.ordered_qty)) * flt(source.rate)
+		target.qty = flt(source.qty) - flt(source.ordered_qty)
+
+	doclist = get_mapped_doc("Sales Order", source_name, {
+		"Sales Order": {
+			"doctype": "Purchase Order",
+			"field_map": {
+				"address_display": "customer_address_display",
+				"contact_display": "customer_contact_display",
+				"contact_mobile": "customer_contact_mobile",
+				"contact_email": "customer_contact_email",
+				"contact_person": "customer_contact_person"
+			},
+			"validation": {
+				"docstatus": ["=", 1]
+			}
+		},
+		"Sales Order Item": {
+			"doctype": "Purchase Order Item",
+			"field_map":  [
+				["name", "prevdoc_detail_docname"],
+				["parent", "prevdoc_docname"],
+				["parenttype", "prevdoc_doctype"],
+				["uom", "stock_uom"]
+			],
+			"postprocess": update_item,
+			"condition": lambda doc: doc.delivered_qty < doc.qty
+		},
+		"Sales Taxes and Charges": {
+			"doctype": "Purchase Taxes and Charges",
+			"add_if_empty": True
+		}
+	}, target_doc, postprocess)
+	
+	
+
+	return doclist
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/erpnext/selling/doctype/sales_order/sales_order_list.js
index aab168e..312f878 100644
--- a/erpnext/selling/doctype/sales_order/sales_order_list.js
+++ b/erpnext/selling/doctype/sales_order/sales_order_list.js
@@ -1,16 +1,16 @@
 frappe.listview_settings['Sales Order'] = {
 	add_fields: ["base_grand_total", "customer_name", "currency", "delivery_date", "per_delivered", "per_billed",
-		"status", "order_type"],
+		"status", "order_type", "per_ordered", "drop_ship"],
 	get_indicator: function(doc) {
         if(doc.status==="Stopped") {
 			return [__("Stopped"), "darkgrey", "status,=,Stopped"];
 
-        } else if (doc.order_type !== "Maintenance"
+        } else if (doc.order_type !== "Maintenance" && doc.drop_ship !=1 
 			&& flt(doc.per_delivered, 2) < 100 && frappe.datetime.get_diff(doc.delivery_date) < 0) {
 			// to bill & overdue
 			return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Stopped"];
 
-		} else if (doc.order_type !== "Maintenance"
+		} else if (doc.order_type !== "Maintenance" && doc.drop_ship !=1 
 			&& flt(doc.per_delivered, 2) < 100 && doc.status!=="Stopped") {
 			// not delivered
 
@@ -20,22 +20,43 @@
 				return [__("To Deliver and Bill"), "orange",
 					"per_delivered,<,100|per_billed,<,100|status,!=,Stopped"];
 			} else {
-				// not billed
+				// not delivered
 
 				return [__("To Deliver"), "orange",
 					"per_delivered,<,100|per_billed,=,100|status,!=,Stopped"];
 			}
 
-		} else if ((doc.order_type === "Maintenance" || flt(doc.per_delivered, 2) == 100)
-			&& flt(doc.per_billed, 2) < 100 && doc.status!=="Stopped") {
+		} else if ((doc.order_type === "Maintenance" || flt(doc.per_delivered, 2) == 100 || 
+			(doc.drop_ship == 1 && flt(doc.per_ordered, 2) == 100  ) ) && flt(doc.per_billed, 2) < 100 
+			&& doc.status!=="Stopped") {
 
 			// to bill
-			return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Stopped"];
+			return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Stopped|per_ordered,<,100"];
 
 		} else if((doc.order_type === "Maintenance" || flt(doc.per_delivered, 2) == 100)
 			&& flt(doc.per_billed, 2) == 100 && doc.status!=="Stopped") {
 
 			return [__("Completed"), "green", "per_delivered,=,100|per_billed,=,100|status,!=,Stopped"];
+		} else if ( doc.drop_ship == 1 && flt(doc.per_delivered, 2) < 100 
+			&& frappe.datetime.get_diff(doc.delivery_date) < 0) {
+			// to bill & overdue
+			return [__("Overdue"), "red", "per_ordered,<,100|delivery_date,<,Today|status,!=,Stopped"];
+
+		} else if ( doc.drop_ship == 1 && flt(doc.per_ordered, 2) < 100 && doc.status!=="Stopped") {
+			// not ordered
+			
+			if(flt(doc.per_billed, 2) < 100) {
+				// not delivered & not billed
+
+				return [__("To Order and Bill"), "orange",
+					"per_ordered,<,100|per_billed,<,100|status,!=,Stopped"];
+			} else {
+				// not ordered
+
+				return [__("To Deliver"), "orange",
+					"per_ordered,<,100|per_billed,=,100|status,!=,Stopped"];
+			}
+
 		}
 	},
 	onload: function(listview) {
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index c7e9e2f..4192100 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -921,6 +921,28 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "ordered_qty", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Ordered Qty", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "delivered_qty", 
    "fieldtype": "Float", 
    "hidden": 0,