diff --git a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py
index a7da864..2de3daa 100644
--- a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py
+++ b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py
@@ -11,41 +11,42 @@
 
 	warehouse_account = frappe.db.sql("""select name, master_name from tabAccount
 		where ifnull(account_type, '') = 'Warehouse'""")
-	warehouses = [d[1] for d in warehouse_account]
-	accounts = [d[0] for d in warehouse_account]
+	if warehouse_account:
+		warehouses = [d[1] for d in warehouse_account]
+		accounts = [d[0] for d in warehouse_account]
 
-	stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no
-		from `tabStock Ledger Entry` sle
-		where sle.warehouse in (%s)
-		order by sle.posting_date""" %
-		', '.join(['%s']*len(warehouses)), tuple(warehouses))
+		stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no
+			from `tabStock Ledger Entry` sle
+			where sle.warehouse in (%s)
+			order by sle.posting_date""" %
+			', '.join(['%s']*len(warehouses)), tuple(warehouses))
 
-	rejected = []
-	for voucher_type, voucher_no in stock_vouchers:
-		stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry`
-			where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" %
-			('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses))
+		rejected = []
+		for voucher_type, voucher_no in stock_vouchers:
+			stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry`
+				where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" %
+				('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses))
 
-		account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0)
-			from `tabGL Entry`
-			where voucher_type=%s and voucher_no =%s and account in (%s)
-			group by voucher_type, voucher_no""" %
-			('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts))
+			account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0)
+				from `tabGL Entry`
+				where voucher_type=%s and voucher_no =%s and account in (%s)
+				group by voucher_type, voucher_no""" %
+				('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts))
 
-		if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1:
-			try:
-				print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0]
+			if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1:
+				try:
+					print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0]
 
-				frappe.db.sql("""delete from `tabGL Entry`
-					where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no))
+					frappe.db.sql("""delete from `tabGL Entry`
+						where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no))
 
-				voucher = frappe.get_doc(voucher_type, voucher_no)
-				voucher.make_gl_entries(repost_future_gle=False)
-				frappe.db.commit()
-			except Exception, e:
-				print frappe.get_traceback()
-				rejected.append([voucher_type, voucher_no])
-				frappe.db.rollback()
+					voucher = frappe.get_doc(voucher_type, voucher_no)
+					voucher.make_gl_entries(repost_future_gle=False)
+					frappe.db.commit()
+				except Exception, e:
+					print frappe.get_traceback()
+					rejected.append([voucher_type, voucher_no])
+					frappe.db.rollback()
 
-	print "Failed to repost: "
-	print rejected
+		print "Failed to repost: "
+		print rejected
