employee: set user_id and defaults
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index 24544c5..c59c5b9 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,5 +1,6 @@
 erpnext.updates = [
 	["14th November 2012", [
+		"Employee: If User ID is set, Employee Name will be updated in defaults and will appear automatically in all relevant forms.",
 		"Backups: Link to download both database and files.",
 	]],
 	["13th November 2012", [
diff --git a/hr/doctype/employee/employee.js b/hr/doctype/employee/employee.js
index c696071..769e5b6 100644
--- a/hr/doctype/employee/employee.js
+++ b/hr/doctype/employee/employee.js
@@ -8,60 +8,59 @@
 // 
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 // GNU General Public License for more details.
 // 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-// get retirement date
-//========================================================
+cur_frm.cscript.onload = function(doc) {
+	// bc
+	var india_specific = ["esic_card_no", "gratuity_lic_id", "pan_number", "pf_number"]
+	if(wn.control_panel.country!="India") {
+		hide_field(india_specific);
+	}
+}
+
+cur_frm.cscript.refresh = function(doc) {
+	if(!doc.__islocal) {
+		hide_field("naming_series");
+		cur_frm.add_custom_button('Make Salary Structure', cur_frm.cscript['Make Salary Structure']);
+	}
+}
+
 cur_frm.cscript.date_of_birth = function(doc, dt, dn) {
-  get_server_fields('get_retirement_date','','',doc,dt,dn,1);
+	get_server_fields('get_retirement_date','','',doc,dt,dn,1);
 }
 
-// salutation-gender
-//========================================================
 cur_frm.cscript.salutation = function(doc,dt,dn) {
-  if(doc.salutation){
-    if(doc.salutation=='Mr')
-      doc.gender='Male';
-    else if(doc.salutation=='Ms')
-      doc.gender='Female';
-    refresh_field('gender');
-  }
+	if(doc.salutation){
+		if(doc.salutation=='Mr')
+			doc.gender='Male';
+		else if(doc.salutation=='Ms')
+			doc.gender='Female';
+		refresh_field('gender');
+	}
 }
 
-// On refresh
-//========================================================
-cur_frm.cscript.refresh = function(doc, dt, dn) {
-  if(doc.__islocal!=1){
-    cur_frm.add_custom_button('Make Salary Structure', cur_frm.cscript['Make Salary Structure']);
-  }  
-}
-
-//Make Salary Structure
-//========================================================
 cur_frm.cscript['Make Salary Structure']=function(){
-  $c_obj(make_doclist (doc.doctype,doc.name),'check_sal_structure',cur_frm.doc.name,function(r, rt) {
-    if(r.message)
-      alert("You have already created Active salary structure.\nIf you want to create new one, please ensure that no active salary structure exist.\nTo inactive salary structure select 'Is Active' as 'No'.");
-    else
-      cur_frm.cscript.make_salary_structure(cur_frm.doc); 
-  });
+	$c_obj(make_doclist (doc.doctype,doc.name),'check_sal_structure',cur_frm.doc.name,function(r, rt) {
+		if(r.message)
+			alert("You have already created Active salary structure.\nIf you want to create new one, please ensure that no active salary structure exist.\nTo inactive salary structure select 'Is Active' as 'No'.");
+		else
+			cur_frm.cscript.make_salary_structure(cur_frm.doc); 
+	});
 }
 
-// Load sal structure
-//========================================================
 cur_frm.cscript.make_salary_structure = function(doc,dt,dn,det){
-  var st = LocalDB.create('Salary Structure');
-  st = locals['Salary Structure'][st];
-  st.employee = doc.name;
-  st.employee_name = doc.employee_name;
-  st.branch=doc.branch;
-  st.designation=doc.designation;
-  st.department=doc.department;
-  st.fiscal_year = doc.fiscal_year
-  st.grade=doc.grade;
-  loaddoc('Salary Structure', st.name);
+	var st = LocalDB.create('Salary Structure');
+	st = locals['Salary Structure'][st];
+	st.employee = doc.name;
+	st.employee_name = doc.employee_name;
+	st.branch=doc.branch;
+	st.designation=doc.designation;
+	st.department=doc.department;
+	st.fiscal_year = doc.fiscal_year
+	st.grade=doc.grade;
+	loaddoc('Salary Structure', st.name);
 }
diff --git a/hr/doctype/employee/employee.py b/hr/doctype/employee/employee.py
index 26681dd..0be6830 100644
--- a/hr/doctype/employee/employee.py
+++ b/hr/doctype/employee/employee.py
@@ -8,128 +8,112 @@
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, msgprint, errprint
+from webnotes.utils import getdate, now, nowdate, validate_email_add
+from webnotes.model.doc import make_autoname
+from webnotes import msgprint
 
 sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-
-# -----------------------------------------------------------------------------------------
-
 
 class DocType:
-  def __init__(self,doc,doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
+	def __init__(self,doc,doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
 
-  # Autoname
-  #========================================================================================================
-  def autoname(self):
-    ret = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'emp_created_by'")
-    if not ret:
-      msgprint("To Save Employee, please go to Setup -->Global Defaults. Click on HR and select 'Employee Records to be created by'.")
-      raise Exception 
-    else:
-      if ret[0][0]=='Naming Series':
-        self.doc.name = make_autoname(self.doc.naming_series + '.####')
-      elif ret[0][0]=='Employee Number':
-        self.doc.name = make_autoname(self.doc.employee_number)
-        
-  # Get retirement date
-  #========================================================================================================
-  def get_retirement_date(self):    
-    import datetime
-    ret = {}
-    if self.doc.date_of_birth:
-      dt = getdate(self.doc.date_of_birth) + datetime.timedelta(21915)
-      ret = {'date_of_retirement': dt.strftime('%Y-%m-%d')}
-    return ret
+	def autoname(self):
+		ret = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'emp_created_by'")
+		if not ret:
+			msgprint("Please setup Employee Naming System in Setup > Global Defaults > HR", raise_exception=True)
+		else:
+			if ret[0][0]=='Naming Series':
+				self.doc.name = make_autoname(self.doc.naming_series + '.####')
+			elif ret[0][0]=='Employee Number':
+				self.doc.name = make_autoname(self.doc.employee_number)
+				
+	def get_retirement_date(self):		
+		import datetime
+		ret = {}
+		if self.doc.date_of_birth:
+			dt = getdate(self.doc.date_of_birth) + datetime.timedelta(21915)
+			ret = {'date_of_retirement': dt.strftime('%Y-%m-%d')}
+		return ret
 
-  # check if salary structure exists
-  #========================================================================================================
-  def check_sal_structure(self, nm):
-    ret_sal_struct=sql("select name from `tabSalary Structure` where employee='%s' and is_active = 'Yes' and docstatus!= 2"%nm)
-    return ret_sal_struct and ret_sal_struct[0][0] or ''
+	def check_sal_structure(self, nm):
+		ret_sal_struct=sql("select name from `tabSalary Structure` where employee='%s' and is_active = 'Yes' and docstatus!= 2"%nm)
+		return ret_sal_struct and ret_sal_struct[0][0] or ''
 
-  #========================================================================================================
-  def validate(self):
-    self.validate_date()
-    self.validate_email()
-    self.validate_name()
-    self.validate_status()
-  
-  # Validate dates
-  #========================================================================================================
-  def validate_date(self):  
-    import datetime
-    if self.doc.date_of_birth and self.doc.date_of_joining and getdate(self.doc.date_of_birth) >= getdate(self.doc.date_of_joining):
-      msgprint('Date of Joining must be greater than Date of Birth')
-      raise Exception
+	def validate(self):
+		self.validate_date()
+		self.validate_email()
+		self.validate_name()
+		self.validate_status()
+	
+	def on_update(self):
+		self.update_user_default()
+	
+	def update_user_default(self):
+		if self.doc.user_id:
+			webnotes.conn.set_default("employee", self.doc.name, self.doc.user_id)
+			webnotes.conn.set_default("employee_name", self.doc.employee_name, self.doc.user_id)
+			webnotes.conn.set_default("company", self.doc.company, self.doc.user_id)
+	
+	def validate_date(self):
+		import datetime
+		if self.doc.date_of_birth and self.doc.date_of_joining and getdate(self.doc.date_of_birth) >= getdate(self.doc.date_of_joining):
+			msgprint('Date of Joining must be greater than Date of Birth')
+			raise Exception
 
-    elif self.doc.scheduled_confirmation_date and self.doc.date_of_joining and (getdate(self.doc.scheduled_confirmation_date) < getdate(self.doc.date_of_joining)):
-      msgprint('Scheduled Confirmation Date must be greater than Date of Joining')
-      raise Exception
-    
-    elif self.doc.final_confirmation_date and self.doc.date_of_joining and (getdate(self.doc.final_confirmation_date) < getdate(self.doc.date_of_joining)):
-      msgprint('Final Confirmation Date must be greater than Date of Joining')
-      raise Exception
-    
-    elif self.doc.date_of_retirement and self.doc.date_of_joining and (getdate(self.doc.date_of_retirement) <= getdate(self.doc.date_of_joining)):
-      msgprint('Date Of Retirement must be greater than Date of Joining')
-      raise Exception
-    
-    elif self.doc.relieving_date and self.doc.date_of_joining and (getdate(self.doc.relieving_date) <= getdate(self.doc.date_of_joining)):
-      msgprint('Relieving Date must be greater than Date of Joining')
-      raise Exception
-    
-    elif self.doc.contract_end_date and self.doc.date_of_joining and (getdate(self.doc.contract_end_date)<=getdate(self.doc.date_of_joining)):
-      msgprint('Contract End Date must be greater than Date of Joining')
-      raise Exception
-   
-  # Validate email id
-  #========================================================================================================
-  def validate_email(self):
-    if self.doc.company_email and not validate_email_add(self.doc.company_email):
-      msgprint("Please enter valid Company Email")
-      raise Exception
-    if self.doc.personal_email and not validate_email_add(self.doc.personal_email):
-      msgprint("Please enter valid Personal Email")
-      raise Exception
+		elif self.doc.scheduled_confirmation_date and self.doc.date_of_joining and (getdate(self.doc.scheduled_confirmation_date) < getdate(self.doc.date_of_joining)):
+			msgprint('Scheduled Confirmation Date must be greater than Date of Joining')
+			raise Exception
+		
+		elif self.doc.final_confirmation_date and self.doc.date_of_joining and (getdate(self.doc.final_confirmation_date) < getdate(self.doc.date_of_joining)):
+			msgprint('Final Confirmation Date must be greater than Date of Joining')
+			raise Exception
+		
+		elif self.doc.date_of_retirement and self.doc.date_of_joining and (getdate(self.doc.date_of_retirement) <= getdate(self.doc.date_of_joining)):
+			msgprint('Date Of Retirement must be greater than Date of Joining')
+			raise Exception
+		
+		elif self.doc.relieving_date and self.doc.date_of_joining and (getdate(self.doc.relieving_date) <= getdate(self.doc.date_of_joining)):
+			msgprint('Relieving Date must be greater than Date of Joining')
+			raise Exception
+		
+		elif self.doc.contract_end_date and self.doc.date_of_joining and (getdate(self.doc.contract_end_date)<=getdate(self.doc.date_of_joining)):
+			msgprint('Contract End Date must be greater than Date of Joining')
+			raise Exception
+	 
+	def validate_email(self):
+		if self.doc.company_email and not validate_email_add(self.doc.company_email):
+			msgprint("Please enter valid Company Email")
+			raise Exception
+		if self.doc.personal_email and not validate_email_add(self.doc.personal_email):
+			msgprint("Please enter valid Personal Email")
+			raise Exception
 
-  # Validate name
-  #========================================================================================================
-  def validate_name(self):  
-    ret = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'emp_created_by'")
+	def validate_name(self):	
+		ret = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'emp_created_by'")
 
-    if not ret:
-      msgprint("To Save Employee, please go to Setup -->Global Defaults. Click on HR and select 'Employee Records to be created by'.")
-      raise Exception 
-    else:
-      if ret[0][0]=='Naming Series' and not self.doc.naming_series:
-        msgprint("Please select Naming Series.")
-        raise Exception 
-      elif ret[0][0]=='Employee Number' and not self.doc.employee_number:
-        msgprint("Please enter Employee Number.")
-        raise Exception 
-        
-  # Validate status
-  #========================================================================================================
-  def validate_status(self):
-    if self.doc.status == 'Left' and not self.doc.relieving_date:
-      msgprint("Please enter relieving date.")
-      raise Exception
+		if not ret:
+			msgprint("To Save Employee, please go to Setup -->Global Defaults. Click on HR and select 'Employee Records to be created by'.")
+			raise Exception 
+		else:
+			if ret[0][0]=='Naming Series' and not self.doc.naming_series:
+				msgprint("Please select Naming Series.")
+				raise Exception 
+			elif ret[0][0]=='Employee Number' and not self.doc.employee_number:
+				msgprint("Please enter Employee Number.")
+				raise Exception 
+				
+	def validate_status(self):
+		if self.doc.status == 'Left' and not self.doc.relieving_date:
+			msgprint("Please enter relieving date.")
+			raise Exception
diff --git a/hr/doctype/employee/employee.txt b/hr/doctype/employee/employee.txt
index d9e2c1f..d7eab4a 100644
--- a/hr/doctype/employee/employee.txt
+++ b/hr/doctype/employee/employee.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:55',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:35:55',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
+		u'creation': '2012-07-03 13:30:40',
+		u'docstatus': 0,
+		u'modified': '2012-11-14 16:12:10',
+		u'modified_by': u'Administrator',
+		u'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
@@ -16,23 +16,23 @@
 		'allow_attach': 1,
 		'allow_trash': 1,
 		'colour': u'White:FFF',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'document_type': u'Master',
 		'module': u'HR',
-		'name': '__common__',
+		u'name': u'__common__',
 		'search_fields': u'employee_name',
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
 		'subject': u'%(employee_name)s',
 		'tag_fields': u'status',
-		'version': 444
+		'version': 1
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Employee',
 		'parentfield': u'fields',
 		'parenttype': u'DocType'
@@ -40,8 +40,8 @@
 
 	# These values are common for all DocPerm
 	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
+		u'doctype': u'DocPerm',
+		u'name': u'__common__',
 		'parent': u'Employee',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
@@ -50,102 +50,13 @@
 
 	# DocType, Employee
 	{
-		'doctype': 'DocType',
-		'name': u'Employee'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
-	},
-
-	# DocPerm
-	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'HR User',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'HR Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'HR User'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'HR Manager'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'match': u'owner',
-		'permlevel': 0,
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'match': u'owner',
-		'permlevel': 0,
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'match': u'owner',
-		'permlevel': 0,
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'match': u'owner',
-		'permlevel': 0,
-		'submit': 0,
-		'write': 0
+		u'doctype': u'DocType',
+		u'name': u'Employee'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'basic_information',
 		'fieldtype': u'Section Break',
 		'label': u'Basic Information',
@@ -155,7 +66,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break0',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -164,8 +75,9 @@
 
 	# DocField
 	{
-		'description': u'To manage multiple series please go to Setup > Manage Series',
-		'doctype': u'DocField',
+		'colour': u'White:FFF',
+		'description': u'<span class="sys_manager">To setup, please go to Setup > Naming Series</span>',
+		u'doctype': u'DocField',
 		'fieldname': u'naming_series',
 		'fieldtype': u'Select',
 		'label': u'Naming Series',
@@ -180,7 +92,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'salutation',
 		'fieldtype': u'Select',
 		'label': u'Salutation',
@@ -195,10 +107,10 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'employee_name',
 		'fieldtype': u'Data',
-		'label': u'Employee Name',
+		'label': u'Full Name',
 		'oldfieldname': u'employee_name',
 		'oldfieldtype': u'Data',
 		'permlevel': 0,
@@ -207,7 +119,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'employee_number',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -221,7 +133,28 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		'description': u'System User (login) ID. If set, it will become default for all HR forms.',
+		u'doctype': u'DocField',
+		'fieldname': u'user_id',
+		'fieldtype': u'Link',
+		'label': u'User ID',
+		'options': u'Profile',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
+		'fieldname': u'column_break1',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		u'doctype': u'DocField',
 		'fieldname': u'date_of_joining',
 		'fieldtype': u'Date',
 		'label': u'Date of Joining',
@@ -234,7 +167,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'date_of_birth',
 		'fieldtype': u'Date',
 		'in_filter': 1,
@@ -249,7 +182,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'gender',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -264,7 +197,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'company',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -277,18 +210,26 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break1',
+		u'doctype': u'DocField',
+		'fieldname': u'employment_details',
+		'fieldtype': u'Section Break',
+		'label': u'Employment Details',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
+		'fieldname': u'col_break_21',
 		'fieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
+		'permlevel': 0
 	},
 
 	# DocField
 	{
 		'colour': u'White:FFF',
 		'default': u'Active',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'status',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -303,7 +244,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'employment_type',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -317,7 +258,29 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		'colour': u'White:FFF',
+		'description': u'Applicable Holiday List',
+		u'doctype': u'DocField',
+		'fieldname': u'holiday_list',
+		'fieldtype': u'Link',
+		'label': u'Holiday List',
+		'oldfieldname': u'holiday_list',
+		'oldfieldtype': u'Link',
+		'options': u'Holiday List',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
+		'fieldname': u'col_break_22',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
 		'fieldname': u'scheduled_confirmation_date',
 		'fieldtype': u'Date',
 		'in_filter': 1,
@@ -330,7 +293,8 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		'colour': u'White:FFF',
+		u'doctype': u'DocField',
 		'fieldname': u'final_confirmation_date',
 		'fieldtype': u'Date',
 		'label': u'Final Confirmation Date',
@@ -342,7 +306,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'contract_end_date',
 		'fieldtype': u'Date',
 		'in_filter': 1,
@@ -355,7 +319,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'date_of_retirement',
 		'fieldtype': u'Date',
 		'label': u'Date Of Retirement',
@@ -366,21 +330,7 @@
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'description': u'Applicable Holiday List',
-		'doctype': u'DocField',
-		'fieldname': u'holiday_list',
-		'fieldtype': u'Link',
-		'label': u'Holiday List',
-		'oldfieldname': u'holiday_list',
-		'oldfieldtype': u'Link',
-		'options': u'Holiday List',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'job_profile',
 		'fieldtype': u'Section Break',
 		'label': u'Job Profile',
@@ -389,7 +339,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break2',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -399,7 +349,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'branch',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -414,7 +364,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'department',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -429,7 +379,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'designation',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -445,7 +395,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'grade',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -459,7 +409,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'reports_to',
 		'fieldtype': u'Link',
 		'label': u'Reports to',
@@ -472,7 +422,7 @@
 	# DocField
 	{
 		'description': u'Provide email id registered in company',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'company_email',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -485,7 +435,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'salary_information',
 		'fieldtype': u'Column Break',
 		'label': u'Salary Information',
@@ -497,7 +447,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'salary_mode',
 		'fieldtype': u'Select',
 		'label': u'Salary Mode',
@@ -512,7 +462,7 @@
 	{
 		'colour': u'White:FFF',
 		'depends_on': u"eval:doc.salary_mode == 'Bank'",
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'bank_name',
 		'fieldtype': u'Data',
 		'hidden': 0,
@@ -528,7 +478,7 @@
 	{
 		'colour': u'White:FFF',
 		'depends_on': u"eval:doc.salary_mode == 'Bank'",
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'bank_ac_no',
 		'fieldtype': u'Data',
 		'hidden': 0,
@@ -540,7 +490,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'esic_card_no',
 		'fieldtype': u'Data',
 		'label': u'ESIC CARD No',
@@ -551,7 +501,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'pf_number',
 		'fieldtype': u'Data',
 		'label': u'PF Number',
@@ -562,7 +512,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'gratuity_lic_id',
 		'fieldtype': u'Data',
 		'label': u'Gratuity LIC ID',
@@ -573,7 +523,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'contact_details',
 		'fieldtype': u'Section Break',
 		'label': u'Contact Details',
@@ -582,7 +532,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break3',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -591,7 +541,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'cell_number',
 		'fieldtype': u'Data',
 		'label': u'Cell Number',
@@ -600,7 +550,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'personal_email',
 		'fieldtype': u'Data',
 		'label': u'Personal Email',
@@ -609,7 +559,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'notice_number_of_days',
 		'fieldtype': u'Int',
 		'label': u'Notice - Number of Days',
@@ -620,7 +570,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'emergency_contact_details',
 		'fieldtype': u'HTML',
 		'label': u'Emergency Contact Details',
@@ -630,7 +580,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'person_to_be_contacted',
 		'fieldtype': u'Data',
 		'label': u'Person To Be Contacted',
@@ -639,7 +589,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'relation',
 		'fieldtype': u'Data',
 		'label': u'Relation',
@@ -648,7 +598,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'emergency_phone_number',
 		'fieldtype': u'Data',
 		'label': u'Emergency Phone Number',
@@ -657,7 +607,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break4',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -666,7 +616,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'permanent_accommodation_type',
 		'fieldtype': u'Select',
 		'label': u'Permanent Accommodation Type',
@@ -676,7 +626,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'permanent_address',
 		'fieldtype': u'Small Text',
 		'label': u'Permanent Address',
@@ -685,7 +635,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'current_accommodation_type',
 		'fieldtype': u'Select',
 		'label': u'Current Accommodation Type',
@@ -695,7 +645,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'current_address',
 		'fieldtype': u'Small Text',
 		'label': u'Current Address',
@@ -704,7 +654,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'personal_details',
 		'fieldtype': u'Section Break',
 		'label': u'Personal Details',
@@ -713,7 +663,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break5',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -722,7 +672,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'pan_number',
 		'fieldtype': u'Data',
 		'label': u'PAN Number',
@@ -731,7 +681,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'passport_number',
 		'fieldtype': u'Data',
 		'label': u'Passport Number',
@@ -740,20 +690,7 @@
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'employee_profile',
-		'fieldtype': u'Button',
-		'hidden': 1,
-		'label': u'Employee Profile',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'date_of_issue',
 		'fieldtype': u'Date',
 		'label': u'Date of Issue',
@@ -762,7 +699,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'valid_upto',
 		'fieldtype': u'Date',
 		'label': u'Valid Upto',
@@ -772,7 +709,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'salary_structure',
 		'fieldtype': u'Button',
 		'hidden': 1,
@@ -784,7 +721,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'place_of_issue',
 		'fieldtype': u'Data',
 		'label': u'Place of Issue',
@@ -793,7 +730,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'marital_status',
 		'fieldtype': u'Select',
 		'label': u'Marital Status',
@@ -803,7 +740,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'blood_group',
 		'fieldtype': u'Select',
 		'label': u'Blood Group',
@@ -813,7 +750,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break6',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -824,7 +761,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Here you can maintain family details like name and occupation of parent, spouse and children',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'family_background',
 		'fieldtype': u'Small Text',
 		'label': u'Family Background',
@@ -835,7 +772,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Here you can maintain height, weight, allergies, medical concerns etc',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'health_details',
 		'fieldtype': u'Small Text',
 		'label': u'Health Details',
@@ -844,7 +781,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'educational_qualification',
 		'fieldtype': u'Section Break',
 		'label': u'Educational Qualification',
@@ -853,7 +790,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'educational_qualification_details',
 		'fieldtype': u'Table',
 		'label': u'Educational Qualification Details',
@@ -863,7 +800,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'career_history',
 		'fieldtype': u'Section Break',
 		'label': u'Career History',
@@ -872,7 +809,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'previous_work_experience',
 		'fieldtype': u'Section Break',
 		'label': u'Previous Work Experience',
@@ -882,7 +819,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'previous_experience_details',
 		'fieldtype': u'Table',
 		'label': u'Employee External Work History',
@@ -892,7 +829,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'history_in_company',
 		'fieldtype': u'Section Break',
 		'label': u'History In Company',
@@ -902,7 +839,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'experience_in_company_details',
 		'fieldtype': u'Table',
 		'label': u'Employee Internal Work Historys',
@@ -912,7 +849,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'exit',
 		'fieldtype': u'Section Break',
 		'label': u'Exit',
@@ -922,7 +859,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break7',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -931,7 +868,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'resignation_letter_date',
 		'fieldtype': u'Date',
 		'label': u'Resignation Letter Date',
@@ -942,7 +879,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'relieving_date',
 		'fieldtype': u'Date',
 		'in_filter': 1,
@@ -954,7 +891,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'reason_for_leaving',
 		'fieldtype': u'Data',
 		'label': u'Reason for Leaving',
@@ -965,7 +902,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'leave_encashed',
 		'fieldtype': u'Select',
 		'label': u'Leave Encashed?',
@@ -977,7 +914,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'encashment_date',
 		'fieldtype': u'Date',
 		'label': u'Encashment Date',
@@ -988,7 +925,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'exit_interview_details',
 		'fieldtype': u'Column Break',
 		'label': u'Exit Interview Details',
@@ -1000,7 +937,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'held_on',
 		'fieldtype': u'Date',
 		'label': u'Held On',
@@ -1011,7 +948,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'reason_for_resignation',
 		'fieldtype': u'Select',
 		'label': u'Reason for Resignation',
@@ -1023,7 +960,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'new_workplace',
 		'fieldtype': u'Data',
 		'label': u'New Workplace',
@@ -1034,7 +971,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'feedback',
 		'fieldtype': u'Small Text',
 		'label': u'Feedback',
@@ -1045,7 +982,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'file_list',
 		'fieldtype': u'Text',
 		'hidden': 1,
@@ -1056,12 +993,77 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'trash_reason',
 		'fieldtype': u'Small Text',
 		'label': u'Trash Reason',
 		'oldfieldname': u'trash_reason',
 		'oldfieldtype': u'Small Text',
 		'permlevel': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Employee',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Employee',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'All'
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'HR User',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'HR Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'HR User'
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'HR Manager'
 	}
-]
+]
\ No newline at end of file