diff --git a/accounts/doctype/sales_invoice/test_sales_invoice.py b/accounts/doctype/sales_invoice/test_sales_invoice.py
index d6bad45..ef8220d 100644
--- a/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -5,6 +5,7 @@
 import unittest, json
 from webnotes.utils import flt, cint
 from webnotes.model.bean import DocstatusTransitionError, TimestampMismatchError
+from accounts.utils import get_stock_and_account_difference
 
 class TestSalesInvoice(unittest.TestCase):
 	def make(self):
@@ -392,7 +393,9 @@
 			order by account asc, name asc""", si.doc.name)
 		
 		self.assertEquals(gl_count[0][0], 16)
-			
+		
+		self.assertFalse(get_stock_and_account_difference([si.doclist[1].warehouse]))
+		
 		webnotes.defaults.set_global_default("perpetual_accounting", 0)
 		webnotes.conn.set_default("company", old_default_company)
 		
diff --git a/stock/doctype/delivery_note/test_delivery_note.py b/stock/doctype/delivery_note/test_delivery_note.py
index f1237fe..a947a78 100644
--- a/stock/doctype/delivery_note/test_delivery_note.py
+++ b/stock/doctype/delivery_note/test_delivery_note.py
@@ -7,6 +7,7 @@
 import webnotes
 import webnotes.defaults
 from webnotes.utils import cint
+from accounts.utils import get_stock_and_account_difference
 
 class TestDeliveryNote(unittest.TestCase):
 	def _insert_purchase_receipt(self):
@@ -89,11 +90,13 @@
 			self.assertEquals(expected_values[i][0], gle.account)
 			self.assertEquals(expected_values[i][1], gle.debit)
 			self.assertEquals(expected_values[i][2], gle.credit)
-		
+					
 		# check stock in hand balance
 		bal = get_balance_on(stock_in_hand_account, dn.doc.posting_date)
 		self.assertEquals(bal, prev_bal - 375.0)
 		
+		self.assertFalse(get_stock_and_account_difference([dn.doclist[1].warehouse]))
+		
 		webnotes.defaults.set_global_default("perpetual_accounting", 0)
 
 test_records = [
diff --git a/stock/doctype/purchase_receipt/test_purchase_receipt.py b/stock/doctype/purchase_receipt/test_purchase_receipt.py
index f5320c1..e887800 100644
--- a/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -7,6 +7,8 @@
 import webnotes
 import webnotes.defaults
 from webnotes.utils import cint
+from accounts.utils import get_stock_and_account_difference
+
 
 class TestPurchaseReceipt(unittest.TestCase):
 	def test_make_purchase_invoice(self):
@@ -74,6 +76,9 @@
 			self.assertEquals(expected_values[gle.account][0], gle.debit)
 			self.assertEquals(expected_values[gle.account][1], gle.credit)
 			
+		self.assertFalse(get_stock_and_account_difference([pr.doclist[1].warehouse, 
+			pr.doclist[2].warehouse]))
+			
 		webnotes.defaults.set_global_default("perpetual_accounting", 0)
 		
 	def _clear_stock_account_balance(self):
diff --git a/stock/doctype/serial_no/test_serial_no.py b/stock/doctype/serial_no/test_serial_no.py
index 4657ff2..115c32c 100644
--- a/stock/doctype/serial_no/test_serial_no.py
+++ b/stock/doctype/serial_no/test_serial_no.py
@@ -6,6 +6,7 @@
 
 from __future__ import unicode_literals
 import webnotes, unittest
+from accounts.utils import get_stock_and_account_difference
 
 class TestSerialNo(unittest.TestCase):
 	def test_aii_gl_entries_for_serial_no_in_store(self):
@@ -14,8 +15,8 @@
 		sr.doc.serial_no = "_Test Serial No 1"
 		sr.insert()
 		
-		stock_in_hand_account = webnotes.conn.get_value("Company", "_Test Company", 
-			"stock_in_hand_account")
+		stock_in_hand_account = webnotes.conn.get_value("Warehouse", sr.doc.warehouse, 
+			"account")
 		against_stock_account = webnotes.conn.get_value("Company", "_Test Company", 
 			"stock_adjustment_account")
 		
@@ -29,18 +30,19 @@
 		# check gl entries
 		gl_entries = webnotes.conn.sql("""select account, debit, credit
 			from `tabGL Entry` where voucher_type='Serial No' and voucher_no=%s
-			order by account desc""", sr.doc.name, as_dict=1)
+			order by account desc""", sr.doc.name, as_list=1)
 		self.assertTrue(gl_entries)
-		
+		gl_entries.sort(key=lambda x: x[0])
 		expected_values = [
 			[stock_in_hand_account, 1000.0, 0.0],
 			[against_stock_account, 0.0, 1000.0]
 		]
+		expected_values.sort(key=lambda x: x[0])
 		
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+			self.assertEquals(expected_values[i][0], gle[0])
+			self.assertEquals(expected_values[i][1], gle[1])
+			self.assertEquals(expected_values[i][2], gle[2])
 		
 		sr.load_from_db()
 		self.assertEquals(sr.doc.sle_exists, 1)
@@ -49,13 +51,16 @@
 		sr.save()
 		gl_entries = webnotes.conn.sql("""select account, debit, credit
 			from `tabGL Entry` where voucher_type='Serial No' and voucher_no=%s
-			order by account desc""", sr.doc.name, as_dict=1)
+			order by account desc""", sr.doc.name, as_list=1)
+		gl_entries.sort(key=lambda x: x[0])
 		
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
-			
+			self.assertEquals(expected_values[i][0], gle[0])
+			self.assertEquals(expected_values[i][1], gle[1])
+			self.assertEquals(expected_values[i][2], gle[2])
+		
+		self.assertFalse(get_stock_and_account_difference([sr.doc.warehouse]))
+		
 		# trash/cancel
 		sr.submit()
 		sr.cancel()
