diff --git a/accounts/doctype/payable_voucher/payable_voucher.js b/accounts/doctype/payable_voucher/payable_voucher.js
index e3b986d..06c2947 100644
--- a/accounts/doctype/payable_voucher/payable_voucher.js
+++ b/accounts/doctype/payable_voucher/payable_voucher.js
@@ -169,13 +169,12 @@
 // -----------------
 cur_frm.cscript['Get Items'] = function(doc, dt, dn) {
   var callback = function(r,rt) { 
-	  unhide_field(['supplier_address','contact_person','supplier_name','address_display','contact_display','contact_mobile','contact_email']);			  
-	  refresh_many(['credit_to','supplier','supplier_address','contact_person','supplier_name','address_display','contact_display','contact_mobile','contact_email','entries','purchase_receipt_main','purchase_order_main']);
+	  unhide_field(['supplier_address', 'contact_person', 'supplier_name', 'address_display', 'contact_display', 'contact_mobile','contact_email']);			  
+	  refresh_many(['credit_to','supplier','supplier_address','contact_person','supplier_name', 'address_display', 'contact_display','contact_mobile', 'contact_email','entries', 'purchase_receipt_main', 'purchase_order_main', 'purchase_tax_details']);
   }
-  get_server_fields('pull_details','','',doc, dt, dn,1,callback);
+  $c_obj(make_doclist(dt,dn),'pull_details','',callback);
 }
 
-
 // ========== PV Details Table ============
 
 // Item Code
diff --git a/accounts/doctype/payable_voucher/payable_voucher.py b/accounts/doctype/payable_voucher/payable_voucher.py
index b403d20..7bc0eb6 100644
--- a/accounts/doctype/payable_voucher/payable_voucher.py
+++ b/accounts/doctype/payable_voucher/payable_voucher.py
@@ -72,25 +72,19 @@
 				ret['cost_center'] = cost_center and cost_center[0][0] or ''
 		return ret
 		 
-	
+		
 	# Get Items based on PO or PR
 	# ----------------------------
 	def pull_details(self):
 		if self.doc.purchase_receipt_main:
 			self.validate_duplicate_docname('purchase_receipt')
-			self.doclist = get_obj('DocType Mapper', 'Purchase Receipt-Payable Voucher').dt_map('Purchase Receipt', 'Payable Voucher', self.doc.purchase_receipt_main, self.doc, self.doclist, "[['Purchase Receipt', 'Payable Voucher'],['Purchase Receipt Detail', 'PV Detail']]")
+			self.doclist = get_obj('DocType Mapper', 'Purchase Receipt-Payable Voucher').dt_map('Purchase Receipt', 'Payable Voucher', self.doc.purchase_receipt_main, self.doc, self.doclist, "[['Purchase Receipt', 'Payable Voucher'], ['Purchase Receipt Detail', 'PV Detail'], ['Purchase Tax Detail','Purchase Tax Detail']]")
 
 		elif self.doc.purchase_order_main:
 			self.validate_duplicate_docname('purchase_order')
-			self.doclist = get_obj('DocType Mapper', 'Purchase Order-Payable Voucher').dt_map('Purchase Order', 'Payable Voucher', self.doc.purchase_order_main, self.doc, self.doclist, "[['Purchase Order', 'Payable Voucher'],['PO Detail', 'PV Detail']]")
+			self.doclist = get_obj('DocType Mapper', 'Purchase Order-Payable Voucher').dt_map('Purchase Order', 'Payable Voucher', self.doc.purchase_order_main, self.doc, self.doclist, "[['Purchase Order', 'Payable Voucher'],['PO Detail', 'PV Detail'], ['Purchase Tax Detail','Purchase Tax Detail']]")
 		
 		ret = self.get_credit_to()
-		#self.doc.supplier_name = ret['supplier_name']
-		#self.doc.supplier_address = ret['supplier_address']
-		
-		#self.doc.cst_no =ret['cst_no']
-		#self.doc.bst_no = ret['bst_no']
-		#self.doc.vat_tin_no = ret['vat_tin_no']
 
 		if ret.has_key('credit_to'):
 			self.doc.credit_to = ret['credit_to']
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.js b/stock/doctype/purchase_receipt/purchase_receipt.js
index e060e3c..1e3d440 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -78,17 +78,19 @@
   locals['Contact'][dn].supplier_name = locals[cur_frm.doctype][cur_frm.docname].supplier_name;
 }
 
+
 // Get Purchase Order Button
 // -----------------
 cur_frm.cscript['Pull Purchase Order Details'] = function(doc, dt, dn) {
   var callback = function(r,rt) { 
-	  unhide_field(['supplier_address','contact_person','supplier_name','address_display','contact_display','contact_mobile','contact_email']);			  
-	  refresh_many(['supplier','supplier_address','contact_person','supplier_name','address_display','contact_display','contact_mobile','contact_email','purchase_receipt_details']);
+	  unhide_field(['supplier_address','contact_person','supplier_name','address_display', 'contact_display', 'contact_mobile','contact_email']);			  
+	  refresh_many(['supplier','supplier_address','contact_person', 'supplier_name', 'address_display', 'contact_display','contact_mobile', 'contact_email', 'purchase_receipt_details', 'purchase_tax_details']);
   }
-  get_server_fields('get_po_details','','',doc, dt, dn,1,callback);
+  $c_obj(make_doclist(dt,dn),'get_po_details','',callback);
 }
 
 
+
 //================ create new contact ============================================================================
 cur_frm.cscript.new_contact = function(){
   tn = createLocal('Contact');
