update get_batch_no query to sort batch with expiry date
small fix to avoid error msg if item_code not selected and batch_no is entered
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index d555532..60ba2f6 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -232,7 +232,9 @@
 	from erpnext.controllers.queries import get_match_cond
 
 	if filters.has_key('warehouse'):
-		return frappe.db.sql("""select batch_no from `tabStock Ledger Entry` sle
+		return frappe.db.sql("""select batch_no, round(sum(actual_qty),2), stock_uom, expiry_date from `tabStock Ledger Entry` sle
+			    INNER JOIN `tabBatch`
+				on sle.batch_no = `tabBatch`.batch_id 
 				where item_code = '%(item_code)s'
 					and warehouse = '%(warehouse)s'
 					and batch_no like '%(txt)s'
@@ -242,7 +244,7 @@
 								and docstatus != 2)
 					%(mcond)s
 				group by batch_no having sum(actual_qty) > 0
-				order by batch_no desc
+				order by expiry_date,batch_no desc
 				limit %(start)s, %(page_len)s """ % {'item_code': filters['item_code'],
 					'warehouse': filters['warehouse'], 'posting_date': filters['posting_date'],
 					'txt': "%%%s%%" % txt, 'mcond':get_match_cond(doctype),
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 1c5df6e..fa831ae 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -481,16 +481,18 @@
 	batch_no: function(doc, cdt, cdn) {
 		var me = this;
 		var item = frappe.get_doc(cdt, cdn);
-	    return this.frm.call({
-	        method: "erpnext.stock.get_item_details.get_batch_qty",
-	        child: item,
-	        args: {
-	           "batch_no": item.batch_no,
-	           "warehouse": item.warehouse,
-	           "item_code": item.item_code
-	        },
-	         "fieldname": "actual_batch_qty"
-	    });
+		if(item.item_code) {		
+		    return this.frm.call({
+		        method: "erpnext.stock.get_item_details.get_batch_qty",
+		        child: item,
+		        args: {
+		           "batch_no": item.batch_no,
+		           "warehouse": item.warehouse,
+		           "item_code": item.item_code
+		        },
+		         "fieldname": "actual_batch_qty"
+		    });
+		}
 	},
 
 	set_dynamic_labels: function() {