diff --git a/accounts/doctype/pos_setting/pos_setting.py b/accounts/doctype/pos_setting/pos_setting.py
index 0e68e2a..a024f6e 100755
--- a/accounts/doctype/pos_setting/pos_setting.py
+++ b/accounts/doctype/pos_setting/pos_setting.py
@@ -16,30 +16,37 @@
 
 from __future__ import unicode_literals
 import webnotes
-
-from webnotes.model import db_exists
-from webnotes.model.bean import copy_doclist
-from webnotes import msgprint
-
-sql = webnotes.conn.sql
-	
-
+from webnotes import msgprint, _
+from webnotes.utils import cint
 
 class DocType:
 	def __init__(self,doc,doclist=[]):
 		self.doc, self.doclist = doc,doclist
 
-	#--------------------get naming series from sales invoice-----------------
 	def get_series(self):
 		import webnotes.model.doctype
 		docfield = webnotes.model.doctype.get('Sales Invoice')
-		series = [d.options for d in docfield if d.doctype == 'DocField' and d.fieldname == 'naming_series']
+		series = [d.options for d in docfield 
+			if d.doctype == 'DocField' and d.fieldname == 'naming_series']
 		return series and series[0] or ''
 
 	def validate(self):
-		res = sql("select name, user from `tabPOS Setting` where ifnull(user, '') = '%s' and name != '%s' and company = '%s'" % (self.doc.user, self.doc.name, self.doc.company))
+		self.check_for_duplicate()
+		self.validate_expense_account()
+		
+	def check_for_duplicate(self):
+		res = webnotes.conn.sql("""select name, user from `tabPOS Setting` 
+			where ifnull(user, '') = %s and name != %s and company = %s""", 
+			(self.doc.user, self.doc.name, self.doc.company))
 		if res:
 			if res[0][1]:
-				msgprint("POS Setting '%s' already created for user: '%s' and company: '%s'"%(res[0][0], res[0][1], self.doc.company), raise_exception=1)
+				msgprint("POS Setting '%s' already created for user: '%s' and company: '%s'" % 
+					(res[0][0], res[0][1], self.doc.company), raise_exception=1)
 			else:
-				msgprint("Global POS Setting already created - %s for this company: '%s'" % (res[0][0], self.doc.company), raise_exception=1)
+				msgprint("Global POS Setting already created - %s for this company: '%s'" % 
+					(res[0][0], self.doc.company), raise_exception=1)
+
+	def validate_expense_account(self):
+		if cint(webnotes.defaults.get_global_default("auto_inventory_accounting")) \
+				and not self.doc.expense_account:
+			msgprint(_("Expense Account is mandatory"), raise_exception=1)
\ No newline at end of file
