diff --git a/accounts/doctype/form_16a/form_16a.py b/accounts/doctype/form_16a/form_16a.py
index 7d569b7..28d38c9 100644
--- a/accounts/doctype/form_16a/form_16a.py
+++ b/accounts/doctype/form_16a/form_16a.py
@@ -18,85 +18,93 @@
 from utilities.transaction_base import TransactionBase
 
 class DocType(TransactionBase):
-  def __init__(self,d,dl):
-    self.doc, self.doclist = d, dl
-  
-  def autoname(self):   
-    self.doc.name = make_autoname('Form 16A' + '/.#####') 
+	def __init__(self,d,dl):
+		self.doc, self.doclist = d, dl
+	
+	def autoname(self):
+		self.doc.name = make_autoname('Form 16A' + '/.#####') 
 
-  # Get pan no and tan no from company
-  #-------------------------------------
-  def get_registration_details(self):
-    comp_det=sql("Select address,registration_details from `tabCompany` where name = '%s'"%(self.doc.company))
-    if not comp_det:
-      msgprint("Registration Details is not mentioned in comapny")
-      ret = {
-      'company_address':'',
-      'registration_details':  ''
-    }
-    else:
-      ret = {
-        'company_address': cstr(comp_det[0][0]),
-        'registration_details': cstr(comp_det[0][1])
-      }   
-    return cstr(ret)
+	# Get pan no and tan no from company
+	#-------------------------------------
+	def get_registration_details(self):
+		comp_det=sql("Select address,registration_details from `tabCompany` where name = '%s'"%(self.doc.company))
+		if not comp_det:
+			msgprint("Registration Details is not mentioned in comapny")
+			ret = {
+			'company_address':'',
+			'registration_details':	''
+		}
+		else:
+			ret = {
+				'company_address': cstr(comp_det[0][0]),
+				'registration_details': cstr(comp_det[0][1])
+			}	 
+		return cstr(ret)
 
-  # Get party details
-  #------------------
-  def get_party_det(self):
-    party_det=sql("Select pan_number, address from `tabAccount` where name = '%s'" % self.doc.party_name)
-    ret = {
-      'pan_number': cstr(party_det[0][0]) ,
-      'party_address': cstr(party_det[0][1])
-    }    
-    return cstr(ret)
+	# Get party details
+	#------------------
+	def get_party_det(self):		
+		party_det=sql("select master_type, master_name, pan_number from `tabAccount` where name='%s'" % self.doc.party_name)
+		if party_det and party_det[0][0]=='Supplier':			
+			try:
+				rec = sql("select name, address_line1, address_line2, city, country, pincode, state from `tabAddress` where supplier = '%s' and docstatus != 2 order by is_primary_address desc limit 1" %(party_det[0][1]), as_dict = 1)
+				address_display = cstr((rec[0]['address_line1'] and rec[0]['address_line1'] or '')) + cstr((rec[0]['address_line2'] and '\n' + rec[0]['address_line2'] or '')) + cstr((rec[0]['city'] and '\n'+rec[0]['city'] or '')) + cstr((rec[0]['pincode'] and '\n' + rec[0]['pincode'] or '')) + cstr((rec[0]['state'] and '\n'+rec[0]['state'] or '')) + cstr((rec[0]['country'] and '\n'+rec[0]['country'] or ''))
+			except:
+				address_display = ''
+				
+		ret = {
+			'pan_number': cstr(party_det[0][2]) ,
+			'party_address': cstr(address_display)
+		}
+          	
+		return cstr(ret)
+	
+	# Get TDS Return acknowledgement
+	#-------------------------------
+	def get_return_ack_details(self):
+		self.doc.clear_table(self.doclist, 'form_16A_ack_details')
+		if not (self.doc.from_date and self.doc.to_date):
+			msgprint("Please enter From Date, To Date")
+		else:
+			ack = sql("select quarter, acknowledgement_no from `tabTDS Return Acknowledgement` where date_of_receipt>='%s' and date_of_receipt<='%s' and tds_category = '%s' order by date_of_receipt ASC" % (self.doc.from_date, self.doc.to_date, self.doc.tds_category))
+			for d in ack:
+				ch = addchild(self.doc, 'form_16A_ack_details', 'Form 16A Ack Detail', 1, self.doclist)
+				ch.quarter = d[0]
+				ch.ack_no = d[1]
 
-  # Get TDS Return acknowledgement
-  #-------------------------------
-  def get_return_ack_details(self):
-    self.doc.clear_table(self.doclist, 'form_16A_ack_details')
-    if not (self.doc.from_date and self.doc.to_date):
-      msgprint("Please enter From Date, To Date")
-    else:
-      ack = sql("select quarter, acknowledgement_no from `tabTDS Return Acknowledgement` where date_of_receipt>='%s' and date_of_receipt<='%s' and tds_category = '%s' order by date_of_receipt ASC" % (self.doc.from_date, self.doc.to_date, self.doc.tds_category))
-      for d in ack:
-        ch = addchild(self.doc, 'form_16A_ack_details', 'Form 16A Ack Detail', 1, self.doclist)
-        ch.quarter = d[0]
-        ch.ack_no = d[1]
-
-  # Get tds payment details
-  #-------------------------------
-  def get_tds(self):
-    self.doc.clear_table(self.doclist,'form_16A_tax_details')
-    import datetime
-    if self.doc.from_date and self.doc.to_date and self.doc.tds_category:      
-      tot=0.0
-      party_tds_list=sql("select t2.amount_paid,t2.date_of_payment,t2.tds_amount,t2.cess_on_tds, t2.total_tax_amount, t1.cheque_no, t1.bsr_code, t1.date_of_receipt, t1.challan_id from `tabTDS Payment` t1, `tabTDS Payment Detail` t2 where t1.tds_category='%s' and t2.party_name='%s' and t1.from_date >= '%s' and t1.to_date <= '%s' and t2.total_tax_amount>0 and t2.parent=t1.name and t1.docstatus=1" % (self.doc.tds_category,self.doc.party_name,self.doc.from_date,self.doc.to_date))
-      for s in party_tds_list:
-        child = addchild(self.doc, 'form_16A_tax_details', 'Form 16A Tax Detail', 1, self.doclist)
-        child.amount_paid = s and flt(s[0]) or ''
-        child.date_of_payment =s and s[1].strftime('%Y-%m-%d') or ''
-        child.tds_main = s and flt(s[2]) or ''
-        child.surcharge = 0
-        child.cess_on_tds = s and flt(s[3]) or ''
-        child.total_tax_deposited = s and flt(s[4]) or ''
-        child.cheque_no = s and s[5] or ''
-        child.bsr_code = s and s[6] or ''
-        child.tax_deposited_date = s and s[7].strftime('%Y-%m-%d') or ''
-        child.challan_no = s and s[8] or ''
-        tot=flt(tot)+flt(s[4])
-      self.doc.total_amount = flt(tot)
-    else:
-      msgprint("Plaese enter from date, to date and TDS category")
-    
-  
-  # validate
-  #----------------
-  def validate(self):
-    tot=0.0
-    for d in getlist(self.doclist,'form_16A_tax_details'):
-      tot=flt(tot)+flt(d.total_tax_deposited)
-    
-    dcc = TransactionBase().get_company_currency(self.doc.company)
-    self.doc.total_amount = flt(tot)    
-    self.doc.in_words = get_obj('Sales Common').get_total_in_words(dcc, self.doc.total_amount)
+	# Get tds payment details
+	#-------------------------------
+	def get_tds(self):
+		self.doc.clear_table(self.doclist,'form_16A_tax_details')
+		import datetime
+		if self.doc.from_date and self.doc.to_date and self.doc.tds_category:			
+			tot=0.0
+			party_tds_list=sql("select t2.amount_paid,t2.date_of_payment,t2.tds_amount,t2.cess_on_tds, t2.total_tax_amount, t1.cheque_no, t1.bsr_code, t1.date_of_receipt, t1.challan_id from `tabTDS Payment` t1, `tabTDS Payment Detail` t2 where t1.tds_category='%s' and t2.party_name='%s' and t1.from_date >= '%s' and t1.to_date <= '%s' and t2.total_tax_amount>0 and t2.parent=t1.name and t1.docstatus=1" % (self.doc.tds_category,self.doc.party_name,self.doc.from_date,self.doc.to_date))
+			for s in party_tds_list:
+				child = addchild(self.doc, 'form_16A_tax_details', 'Form 16A Tax Detail', 1, self.doclist)
+				child.amount_paid = s and flt(s[0]) or ''
+				child.date_of_payment =s and s[1].strftime('%Y-%m-%d') or ''
+				child.tds_main = s and flt(s[2]) or ''
+				child.surcharge = 0
+				child.cess_on_tds = s and flt(s[3]) or ''
+				child.total_tax_deposited = s and flt(s[4]) or ''
+				child.cheque_no = s and s[5] or ''
+				child.bsr_code = s and s[6] or ''
+				child.tax_deposited_date = s and s[7].strftime('%Y-%m-%d') or ''
+				child.challan_no = s and s[8] or ''
+				tot=flt(tot)+flt(s[4])
+			self.doc.total_amount = flt(tot)
+		else:
+			msgprint("Plaese enter from date, to date and TDS category")
+		
+	
+	# validate
+	#----------------
+	def validate(self):
+		tot=0.0
+		for d in getlist(self.doclist,'form_16A_tax_details'):
+			tot=flt(tot)+flt(d.total_tax_deposited)
+		
+		dcc = TransactionBase().get_company_currency(self.doc.company)
+		self.doc.total_amount = flt(tot)		
+		self.doc.in_words = get_obj('Sales Common').get_total_in_words(dcc, self.doc.total_amount)
