Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/hr/doctype/salary_structure/salary_structure.py b/hr/doctype/salary_structure/salary_structure.py
index 22789e3..018aab7 100644
--- a/hr/doctype/salary_structure/salary_structure.py
+++ b/hr/doctype/salary_structure/salary_structure.py
@@ -18,31 +18,25 @@
 import webnotes
 
 from webnotes.utils import cstr, flt
-from webnotes.model import db_exists
 from webnotes.model.doc import addchild, make_autoname
-from webnotes.model.bean import copy_doclist
-from webnotes import msgprint
+from webnotes import msgprint, _
 
 sql = webnotes.conn.sql
 	
 
 
 class DocType:
-	#init function
 	def __init__(self,doc,doclist=[]):
 		self.doc = doc
 		self.doclist = doclist
- 
-	#autoname function
-	#---------------------------------------------------------
+
 	def autoname(self):
 		self.doc.name = make_autoname(self.doc.employee + '/.SST' + '/.#####')
-	
-	#get employee details
-	#---------------------------------------------------------
+
 	def get_employee_details(self):
 		ret = {}
-		det = sql("select employee_name, branch, designation, department, grade from `tabEmployee` where name = '%s'" %self.doc.employee)
+		det = sql("""select employee_name, branch, designation, department, grade 
+			from `tabEmployee` where name = %s""", self.doc.employee)
 		if det:
 			ret = {
 				'employee_name': cstr(det[0][0]),
@@ -53,20 +47,16 @@
 				'backup_employee': cstr(self.doc.employee)
 			}
 		return ret
-		
 
-	# Set Salary structure field values
-	#---------------------------------------------------------
 	def get_ss_values(self,employee):
-		basic_info = sql("select bank_name, bank_ac_no, esic_card_no, pf_number from `tabEmployee` where name ='%s'" % employee)
+		basic_info = sql("""select bank_name, bank_ac_no, esic_card_no, pf_number 
+			from `tabEmployee` where name =%s""", employee)
 		ret = {'bank_name': basic_info and basic_info[0][0] or '',
 			'bank_ac_no': basic_info and basic_info[0][1] or '',
 			'esic_no': basic_info and basic_info[0][2] or '',
 			'pf_no': basic_info and basic_info[0][3] or ''}
 		return ret
-	 
-	# Make earning and deduction table		
-	#---------------------------------------------------------
+
 	def make_table(self, doct_name, tab_fname, tab_name):
 		list1 = sql("select name from `tab%s` where docstatus != 2" % doct_name)
 		for li in list1:
@@ -77,37 +67,31 @@
 			elif(tab_fname == 'deduction_details'):
 				child.d_type = cstr(li[0])
 				child.d_modified_amt = 0
-		
-	# add earning & deduction types to table 
-	#---------------------------------------------------------	 
+			 
 	def make_earn_ded_table(self):					 
-		#Earning List
 		self.make_table('Earning Type','earning_details','Salary Structure Earning')
-		
-		#Deduction List
-		self.make_table('Deduction Type','deduction_details', 
-			'Salary Structure Deduction')
-		
+		self.make_table('Deduction Type','deduction_details', 'Salary Structure Deduction')
 
-	# Check if another active ss exists
-	#---------------------------------------------------------
 	def check_existing(self):
-		ret = sql("select name from `tabSalary Structure` where is_active = 'Yes' and employee = '%s' and name!='%s'" %(self.doc.employee,self.doc.name))
+		ret = sql("""select name from `tabSalary Structure` where is_active = 'Yes' 
+			and employee = %s and name!=%s""", (self.doc.employee,self.doc.name))
 		if ret and self.doc.is_active=='Yes':
-			msgprint("Another Salary Structure '%s' is active for employee '%s'. Please make its status 'Inactive' to proceed."%(cstr(ret), self.doc.employee))
-			raise Exception
+			msgprint(_("""Another Salary Structure '%s' is active for employee '%s'. 
+				Please make its status 'Inactive' to proceed.""") % 
+				(cstr(ret), self.doc.employee), raise_exception=1)
 
-	# Validate net pay
-	#---------------------------------------------------------
-	def validate_net_pay(self):
+	def validate_amount(self):
+		if flt(self.doc.ctc) < 12*flt(self.doc.total_earning):
+			msgprint(_("Annual Cost To Company can not be less than 12 months of Total Earning"), 
+				raise_exception=1)
+				
 		if flt(self.doc.net_pay) < 0:
-			msgprint("Net pay can not be negative")
-			raise Exception
-		elif flt(self.doc.net_pay) > flt(self.doc.ctc):
-			msgprint("Net pay can not be greater than CTC")
-			raise Exception			
+			msgprint(_("Net pay can not be negative"), raise_exception=1)
+		elif flt(self.doc.net_pay)*12 > flt(self.doc.ctc):
+			msgprint(_("Net pay can not be greater than 1/12th of Annual Cost To Company"), 
+				raise_exception=1)
+		
 
 	def validate(self):	 
 		self.check_existing()
-		self.validate_net_pay()
-
+		self.validate_amount()
\ No newline at end of file