diff --git a/accounts/search_criteria/purchase_register/purchase_register.py b/accounts/search_criteria/purchase_register/purchase_register.py
index d1d5e05..e955815 100644
--- a/accounts/search_criteria/purchase_register/purchase_register.py
+++ b/accounts/search_criteria/purchase_register/purchase_register.py
@@ -14,14 +14,13 @@
 	coloptions.append('')
 
 # Add tax head columns
-tax_acc = [c[0] for c in sql("select distinct account_head from `tabPurchase Tax Detail` where parenttype='Payable Voucher' and category in ('For Total', 'For Both') and add_deduct_tax = 'Add' and docstatus=1 order by idx asc")]
-
-"""select distinct account_head 
-						   from `tabPurchase Tax Detail` 
-						   where parenttype = 'Payable Voucher' 
-						   and add_deduct_tax = 'Add' 
-						   and category != 'For Valuation' 
-						   order by account_head asc"""
+tax_acc = [c[0] for c in sql("""select distinct account_head 
+							    from `tabPurchase Tax Detail` 
+							    where parenttype = 'Payable Voucher' 
+							    and add_deduct_tax = 'Add' 
+							    and category in ('For Total', 'For Both')
+							    and docstatus=1
+							    order by account_head asc""")]
 						   
 tax_acc.append('Total Tax')
 tax_acc.append('GrandTotal')
@@ -69,12 +68,12 @@
 
 	#Get tax for account heads
 	acc_head_tax = sql("""select account_head, tax_amount 
-							  from `tabPurchase Tax Detail` 
-							  where parent = '%s' 
-							  and parenttype = 'Payable Voucher' 
-							  and add_deduct_tax = 'Add' 
-							  and category in ('For Total', 'For Both')""" %(r[col_idx['ID']],))
-	
+						  from `tabPurchase Tax Detail` 
+						  where parent = '%s' 
+						  and parenttype = 'Payable Voucher' 
+						  and add_deduct_tax = 'Add' 
+						  and category in ('For Total', 'For Both')""" %(r[col_idx['ID']],))
+
 	#Convert the result to dictionary for easy retrieval
 	acc_head_tax_dict = {}
 	for a in acc_head_tax:
diff --git a/accounts/search_criteria/sales_register/sales_register.py b/accounts/search_criteria/sales_register/sales_register.py
index be74df3..2cd1d4b 100644
--- a/accounts/search_criteria/sales_register/sales_register.py
+++ b/accounts/search_criteria/sales_register/sales_register.py
@@ -1,44 +1,86 @@
 # add additional columns
 
-cl = [c[0] for c in sql("select distinct account_head from `tabRV Tax Detail` where parenttype='Receivable Voucher' and docstatus=1 order by idx asc")]
+cl = [c[0] for c in sql("""select distinct account_head 
+						   from `tabRV Tax Detail` 
+						   where parenttype='Receivable Voucher' 
+						   and docstatus=1 
+						   order by account_head asc""")]
 
-income_acc = [c[0] for c in sql("select distinct income_account from `tabRV Detail` where parenttype='Receivable Voucher' and docstatus=1 order by idx asc")]
+income_acc = [c[0] for c in sql("""select distinct income_account 
+								   from `tabRV Detail` 
+								   where parenttype='Receivable Voucher' 
+								   and docstatus=1 
+								   order by income_account asc""")]
 
 income_acc.append('Net Total')
 
 for i in income_acc:
-  colnames.append(i)
-  coltypes.append('Currency')
-  colwidths.append('100px')
-  coloptions.append('')
+	colnames.append(i)
+	coltypes.append('Currency')
+	colwidths.append('100px')
+	coloptions.append('')
 
 cl.append('Total Tax')
 cl.append('Grand Total')
 for c in cl:
-  colnames.append(c)
-  coltypes.append('Currency')
-  colwidths.append('100px')
-  coloptions.append('')
-  
+	colnames.append(c)
+	coltypes.append('Currency')
+	colwidths.append('100px')
+	coloptions.append('')
+	
 income_acc = income_acc[:-1]
 cl = cl[:-2]
 
 
 # add the values
 for r in res:
-  net_total = 0
-  for i in income_acc:
-    val = sql("select sum(amount) from `tabRV Detail` where parent = %s and parenttype='Receivable Voucher' and income_account = %s", (r[col_idx['ID']], i))
-    val = flt(val and val[0][0] or 0)
-    net_total += val
-    r.append(val)
-  r.append(net_total)
-  
-  total_tax = 0
-  for c in cl:
-    val = sql("select tax_amount from `tabRV Tax Detail` where parent = %s and parenttype='Receivable Voucher' and account_head = %s", (r[col_idx['ID']], c))
-    val = flt(val and val[0][0] or 0)
-    total_tax += val
-    r.append(val)
-  r.append(total_tax)
-  r.append(net_total+total_tax)
\ No newline at end of file
+
+	#Get amounts for income account
+	income_acc_list = sql("""select income_account, sum(amount) 
+						     from `tabRV Detail` 
+						     where parent = %s 
+						     and parenttype='Receivable Voucher'
+						     group by income_account""", (r[col_idx['ID']],))
+
+	#convert the result to dictionary for easy retrieval  
+	income_acc_dict = {}
+	for ia in income_acc_list:
+		income_acc_dict[ia[0]] = ia[1] 
+	
+	income_acc_keys = income_acc_dict.keys()
+
+	net_total = 0
+	for i in income_acc:
+		val = 0
+		#check if income account exists in dict
+		if i in income_acc_keys:
+			val = income_acc_dict[i]
+		val = flt(val and val or 0)
+		net_total += val
+		r.append(val)
+	r.append(net_total)
+
+	#Get tax for account heads
+	acc_head_tax = sql("""select account_head, tax_amount 
+						  from `tabRV Tax Detail` 
+						  where parent = '%s' 
+						  and parenttype = 'Receivable Voucher'""" %(r[col_idx['ID']],))
+
+	#Convert the result to dictionary for easy retrieval
+	acc_head_tax_dict = {}
+	for a in acc_head_tax:
+		acc_head_tax_dict[a[0]] = a[1]
+
+	acc_head_keys = acc_head_tax_dict.keys()
+
+	total_tax = 0
+	for c in cl:
+		val = 0
+		#check if account head exists in dict
+		if c in acc_head_keys:
+			val = acc_head_tax_dict[c]
+		val = flt(val and val or 0)
+		total_tax += val
+		r.append(val)
+	r.append(total_tax)
+	r.append(net_total+total_tax)
\ No newline at end of file
