diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 82261ed..f144ce9 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -366,15 +366,6 @@
 		 	self.doc.posting_date,'Posting Date')
 		
 		self.validate_write_off_account()
-		
-		#get Purchase Common Obj
-		pc_obj = get_obj(dt='Purchase Common')
-		
-		 # get total in words
-		dcc = get_company_currency(self.doc.company)
-		self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
-		self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency,
-		 	self.doc.grand_total_import)
 
 	def check_prev_docstatus(self):
 		for d in getlist(self.doclist,'entries'):
diff --git a/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py
index 615c453..700fd7a 100644
--- a/buying/doctype/purchase_common/purchase_common.py
+++ b/buying/doctype/purchase_common/purchase_common.py
@@ -449,16 +449,9 @@
 		arg = eval(arg)
 		rate = sql("select account_type, tax_rate from `tabAccount` where name = '%s'" %(arg['account_head']), as_dict=1)
 		
-		ret = {
-				'rate'	:	rate and (rate[0]['account_type'] == 'Tax' and not arg['charge_type'] == 'Actual') and flt(rate[0]['tax_rate']) or 0
-		}
-		#msgprint(ret)
-		return ret
-	
-	def get_total_in_words(self, currency, amount):
-		from webnotes.utils import money_in_words
-		return money_in_words(amount, currency)	
-	
+		return {'rate':	rate and (rate[0]['account_type'] == 'Tax' \
+			and not arg['charge_type'] == 'Actual') and flt(rate[0]['tax_rate']) or 0 }
+
 	def get_prevdoc_date(self, obj):
 		for d in getlist(obj.doclist, obj.fname):
 			if d.prevdoc_doctype and d.prevdoc_docname:
diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py
index f08a319..6cef02a 100644
--- a/buying/doctype/purchase_order/purchase_order.py
+++ b/buying/doctype/purchase_order/purchase_order.py
@@ -67,10 +67,6 @@
 		# Check for stopped status
 		self.check_for_stopped_status(pc_obj)
 		
-		 # get total in words
-		dcc = get_company_currency(self.doc.company)
-		self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
-		self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
 
 	def get_default_schedule_date(self):
 		get_obj(dt = 'Purchase Common').get_default_schedule_date(self)
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.py b/buying/doctype/supplier_quotation/supplier_quotation.py
index 4f28ecf..c8f5282 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -37,7 +37,6 @@
 		
 		self.validate_fiscal_year()
 		self.validate_common()
-		self.set_in_words()
 
 	def on_submit(self):
 		purchase_controller = webnotes.get_obj("Purchase Common")
@@ -79,10 +78,4 @@
 		pc.validate_mandatory(self)
 		pc.validate_for_items(self)
 		pc.get_prevdoc_date(self)
-		pc.validate_reference_value(self)
-		
-	def set_in_words(self):
-		pc = get_obj('Purchase Common')
-		company_currency = get_company_currency(self.doc.company)
-		self.doc.in_words = pc.get_total_in_words(company_currency, self.doc.grand_total)
-		self.doc.in_words_import = pc.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
+		pc.validate_reference_value(self)
\ No newline at end of file
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index d7a2964..f48b626 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -31,6 +31,9 @@
 			
 			if self.doc.price_list_name and self.doc.price_list_currency:
 				self.validate_conversion_rate("price_list_currency", "plc_conversion_rate")
+				
+			# set total in words
+			self.set_total_in_words()
 		
 	def update_item_details(self):
 		for item in self.doclist.get({"parentfield": self.fname}):
@@ -68,3 +71,12 @@
 			msgprint(_('Please enter valid ') + conversion_rate_label + (': ') 
 				+ ("1 %s = [?] %s" % (currency, self.company_currency)),
 				raise_exception=True)
+
+	def set_total_in_words(self):
+		from webnotes.utils import money_in_words
+		company_currency = get_company_currency(self.doc.company)
+		if self.meta.get_field("in_words"):
+			self.doc.in_words = money_in_words(self.doc.grand_total, company_currency)
+		if self.meta.get_field("in_words_import"):
+			self.doc.in_words_import = money_in_words(self.doc.grand_total_import,
+		 		self.doc.currency)
\ No newline at end of file
diff --git a/setup/utils.py b/setup/utils.py
index 396dc16..1b61ea9 100644
--- a/setup/utils.py
+++ b/setup/utils.py
@@ -46,4 +46,4 @@
 	if result and len(result)==1:
 		return {"price_list_currency": result[0][0]}
 	else:
-		return {}
+		return {}
\ No newline at end of file
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 5c4aebd..46484e0 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -17,12 +17,11 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import cstr, flt, get_defaults, getdate
+from webnotes.utils import cstr, flt, get_defaults
 from webnotes.model.doc import addchild
 from webnotes.model.wrapper import getlist
 from webnotes.model.code import get_obj
 from webnotes import msgprint
-from setup.utils import get_company_currency
 
 sql = webnotes.conn.sql
 
@@ -136,10 +135,6 @@
 		pc_obj.validate_reference_value(self)
 		self.check_for_stopped_status(pc_obj)
 
-		# get total in words
-		dcc = get_company_currency(self.doc.company)
-		self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
-		self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
 		# update valuation rate
 		self.update_valuation_rate()
 
