diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index bb19107..14a478d 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -106,12 +106,12 @@
 
 	data = frappe.db.sql(query, {"product_group": product_group,"search": search, "today": nowdate()}, as_dict=1)
 
-	data = adjust_for_expired_items(data)
+	data = adjust_qty_for_expired_items(data)
 
 	return [get_item_for_list_in_html(r) for r in data]
 
 
-def adjust_for_expired_items(data):
+def adjust_qty_for_expired_items(data):
 	adjusted_data = []
 
 	for item in data:
diff --git a/erpnext/utilities/product.py b/erpnext/utilities/product.py
index 5a9322b..5901b60 100644
--- a/erpnext/utilities/product.py
+++ b/erpnext/utilities/product.py
@@ -23,7 +23,7 @@
 			item_code=%s and warehouse=%s""", (item_code, warehouse))
 
 	if stock_qty[0][0]:
-		stock_qty = adjust_for_expired_items(item_code, stock_qty, warehouse)
+		stock_qty = adjust_qty_for_expired_items(item_code, stock_qty, warehouse)
 
 	if stock_qty[0][0]:
 		in_stock = stock_qty[0][0] > 0 and 1 or 0
@@ -34,20 +34,20 @@
 	return frappe._dict({"in_stock": in_stock, "stock_qty": stock_qty, "is_stock_item": is_stock_item})
 
 
-def adjust_for_expired_items(item_code, stock_qty, warehouse):
-	batches = frappe.get_list('Batch', filters=[{'item': item_code}], fields=['expiry_date', 'name'])
+def adjust_qty_for_expired_items(item_code, stock_qty, warehouse):
+	batches = frappe.get_all('Batch', filters=[{'item': item_code}], fields=['expiry_date', 'name'])
 	expired_batches = get_expired_batches(batches)
 	stock_qty = [list(item) for item in stock_qty]
 	
-	if expired_batches:
-		for batch in expired_batches:
-			if warehouse:
-				stock_qty[0][0] = max(0, stock_qty[0][0] - get_batch_qty(batch, warehouse))
-			else:
-				stock_qty[0][0] = max(0, stock_qty[0][0] - qty_from_all_warehouses(get_batch_qty(batch)))
+	for batch in expired_batches:
+		if warehouse:
+			stock_qty[0][0] = max(0, stock_qty[0][0] - get_batch_qty(batch, warehouse))
+		else:
+			stock_qty[0][0] = max(0, stock_qty[0][0] - qty_from_all_warehouses(get_batch_qty(batch)))
 
-			if not stock_qty[0][0]:
-				break
+		if not stock_qty[0][0]:
+			break
+
 	return stock_qty
 
 
