after adjusting stock_qty for expired, set in_stock flag
diff --git a/erpnext/utilities/product.py b/erpnext/utilities/product.py
index f088e32..5a9322b 100644
--- a/erpnext/utilities/product.py
+++ b/erpnext/utilities/product.py
@@ -21,8 +21,6 @@
 	if warehouse:
 		stock_qty = frappe.db.sql("""select GREATEST(actual_qty - reserved_qty, 0) from tabBin where
 			item_code=%s and warehouse=%s""", (item_code, warehouse))
-		if stock_qty:
-			in_stock = stock_qty[0][0] > 0 and 1 or 0
 
 	if stock_qty[0][0]:
 		stock_qty = adjust_for_expired_items(item_code, stock_qty, warehouse)
@@ -30,6 +28,9 @@
 	if stock_qty[0][0]:
 		in_stock = stock_qty[0][0] > 0 and 1 or 0
 
+	if stock_qty:
+			in_stock = stock_qty[0][0] > 0 and 1 or 0
+
 	return frappe._dict({"in_stock": in_stock, "stock_qty": stock_qty, "is_stock_item": is_stock_item})