Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index ad6ef7b..93e38d8 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,5 +1,10 @@
 erpnext.updates = [
 	["14th November 2012", [
+		"Appraisal: Cleaned up form and logic. Removed complex and unnecessary approval logic, \
+			the appraiser can select the template and role and make an appraisal. \
+			Normal user can see self created Appraisals. HR Manager can see all Appraisals.",
+	]],
+	["14th November 2012", [
 		"Customer Issue: Moved all allocations to 'Assigned' so that there is avoid duplication fo features.",
 		"Letter Head: Show preview, make upload button more visible.",
 		"Price List: Removed import, now import from Data Import Tool.",
diff --git a/hr/doctype/appraisal/appraisal.js b/hr/doctype/appraisal/appraisal.js
index 4c7c5e5..3601da9 100644
--- a/hr/doctype/appraisal/appraisal.js
+++ b/hr/doctype/appraisal/appraisal.js
@@ -15,6 +15,7 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 cur_frm.add_fetch('employee', 'company', 'company');
+cur_frm.add_fetch('employee', 'employee_name', 'employee_name');
 
 cur_frm.cscript.onload = function(doc,cdt,cdn){
 	if(!doc.status) 
@@ -24,17 +25,21 @@
 }
 
 cur_frm.cscript.onload_post_render = function(doc,cdt,cdn){
-	if(doc.employee) 
-		cur_frm.cscript.employee(doc,cdt,cdn);
+	if(doc.__islocal && doc.employee==user_defaults.employee) {
+		cur_frm.set_value("employee", "");
+		cur_frm.set_value("employee_name", "")
+	}
 }
 
 cur_frm.cscript.refresh = function(doc,cdt,cdn){
-	if(user == doc.kra_approver && doc.status == 'Submitted') 
-		unhide_field(['update', 'declare_completed', 'calculate_total_score']);
-	else hide_field(['update', 'declare_completed', 'calculate_total_score']);
-	
-	if(!doc.docstatus) unhide_field('fetch_template');
-	else hide_field('fetch_template');
+
+}
+
+cur_frm.cscript.kra_template = function(doc, dt, dn) {
+	$c_obj(make_doclist(doc.doctype, doc.name), 'fetch_kra', '', 
+		function() { 
+			cur_frm.refresh();
+		});
 }
 
 
@@ -48,18 +53,6 @@
 	refresh_field('total_score');
 }
 
-cur_frm.cscript.employee = function(doc,cdt,cdn){
-	if(doc.employee){
-		$c_obj(make_doclist(doc.doctype, doc.name),'set_approver','', function(r,rt){
-			if(r.message){
-				doc.employee_name = r.message['emp_nm'];
-				Meta.get_field(doc.doctype, 'kra_approver' , doc.name).options = r.message['app_lst'];				
-				refresh_many(['kra_approver','employee_name']);
-			}		
-		});
-	}
-}
-
 cur_frm.cscript.calculate_total_score = function(doc,cdt,cdn){
 	//get_server_fields('calculate_total','','',doc,cdt,cdn,1);
 	var val = getchildren('Appraisal Goal', doc.name, 'appraisal_details', doc.doctype);
@@ -71,67 +64,6 @@
 	refresh_field('total_score')
 }
 
-cur_frm.cscript.declare_completed = function(doc,cdt,cdn){
-	var declare_completed_dialog;
-	
-	set_declare_completed_dialog = function() {
-		declare_completed_dialog = new Dialog(400, 200, 'Declare Completed');
-		declare_completed_dialog.make_body([
-			['HTML', 'Message', '<div class = "comment">You wont be able to do any changes after declaring this Appraisal as completed. Are you sure, you want to declare it as completed ?</div>'],
-			['HTML', 'Response', '<div class = "comment" id="declare_completed_dialog_response"></div>'],
-			['HTML', 'Declare Completed', '<div></div>']
-		]);
-		
-		var declare_completed_btn1 = $a($i(declare_completed_dialog.widgets['Declare Completed']), 'button', 'button');
-		declare_completed_btn1.innerHTML = 'Yes';
-		declare_completed_btn1.onclick = function(){ declare_completed_dialog.add(); }
-		
-		var declare_completed_btn2 = $a($i(declare_completed_dialog.widgets['Declare Completed']), 'button', 'button');
-		declare_completed_btn2.innerHTML = 'No';
-		$y(declare_completed_btn2,{marginLeft:'4px'});
-		declare_completed_btn2.onclick = function(){ declare_completed_dialog.hide();}
-		
-		declare_completed_dialog.onshow = function() {
-			$i('declare_completed_dialog_response').innerHTML = '';
-		}
-		
-		declare_completed_dialog.refresh_dt = function(){
-			cur_frm.cscript.refresh(this.doc, this.cdt, this.cdn);
-		}
-		
-		declare_completed_dialog.add = function() {
-			// sending...
-			$i('declare_completed_dialog_response').innerHTML = 'Processing...';
-			var m_arg = user+ '~~' + this.msg_nm_lst;
-			
-			$c_obj(make_doclist(this.doc.doctype, this.doc.name),'declare_completed','', function(r,rt){
-				
-				if(r.message.status == 'Completed'){
-					$i('declare_completed_dialog_response').innerHTML = 'Done';
-					refresh_field('status');
-					declare_completed_dialog.refresh_dt();
-					hide_field(['update', 'declare_completed', 'calculate_total_score']);
-					declare_completed_dialog.hide();
-				}
-				else if(r.message.status == 'Incomplete'){
-					$i('declare_completed_dialog_response').innerHTML = 'Incomplete Appraisal';
-				}
-				else if(r.message.status == 'No Score'){
-					$i('declare_completed_dialog_response').innerHTML = 'Calculate total score';
-				}
-			});
-		}
-	}	
-	
-	if(!declare_completed_dialog){
-		set_declare_completed_dialog();
-	}	
-	declare_completed_dialog.doc = doc;
-	declare_completed_dialog.cdt = cdt;
-	declare_completed_dialog.cdn = cdn;
-	declare_completed_dialog.show();
-}
-
 cur_frm.cscript.score = function(doc,cdt,cdn){
 	var d = locals[cdt][cdn];
 	if (d.score){
diff --git a/hr/doctype/appraisal/appraisal.py b/hr/doctype/appraisal/appraisal.py
index 39bc3ff..310e02b 100644
--- a/hr/doctype/appraisal/appraisal.py
+++ b/hr/doctype/appraisal/appraisal.py
@@ -23,7 +23,6 @@
 from webnotes.model.code import get_obj
 from webnotes import msgprint
 
-set = webnotes.conn.set
 sql = webnotes.conn.sql
 
 
@@ -39,11 +38,9 @@
 		return emp_nm
 	
 	def fetch_kra(self):
-		if not self.doc.kra_template:
-			msgprint("Please select Appraisal Template to be be fetched")
-			raise Exception
 		self.doclist = self.doc.clear_table(self.doclist,'appraisal_details')
-		get_obj('DocType Mapper', 'Appraisal Template-Appraisal').dt_map('Appraisal Template', 'Appraisal', self.doc.kra_template, self.doc, self.doclist, "[['Appraisal Template','Appraisal'],['Appraisal Template Goal', 'Appraisal Goal']]")
+		get_obj('DocType Mapper', 'Appraisal Template-Appraisal').dt_map('Appraisal Template', 'Appraisal', 
+			self.doc.kra_template, self.doc, self.doclist, "[['Appraisal Template','Appraisal'],['Appraisal Template Goal', 'Appraisal Goal']]")
 	
 	def validate_dates(self):
 		if getdate(self.doc.start_date) > getdate(self.doc.end_date):
@@ -53,107 +50,37 @@
 	def validate_existing_appraisal(self):
 		chk = sql("select name from `tabAppraisal` where employee=%s and (status='Submitted' or status='Completed') and ((start_date>=%s and start_date<=%s) or (end_date>=%s and end_date<=%s))",(self.doc.employee,self.doc.start_date,self.doc.end_date,self.doc.start_date,self.doc.end_date))
 		if chk:
-			msgprint("You have already created Appraisal "+cstr(chk[0][0])+" in the current date range for employee "+cstr(self.doc.employee_name))
+			msgprint("You have already created Appraisal "\
+				+cstr(chk[0][0])+" in the current date range for employee "\
+				+cstr(self.doc.employee_name))
 			raise Exception
-	
-	def validate_curr_appraisal(self):
-		for d in getlist(self.doclist, 'appraisal_details'):
-			if d.target_achieved or d.score:
-				if self.doc.status == 'Draft':
-					msgprint("Target achieved or Score can be added only for submitted Appraisal")
-					raise Exception
-				elif self.doc.status == 'Submitted' and session['user'] != self.doc.kra_approver:
-					msgprint("Target achieved or Score can be added only by Appraisal Approver")
-					raise Exception
-			
-	
-	def validate_fiscal_year(self):
-		fy=sql("select year_start_date from `tabFiscal Year` where name='%s'"%self.doc.fiscal_year)
-		ysd=fy and fy[0][0] or ""
-		yed=add_days(str(ysd),365)
-		if str(self.doc.start_date) < str(ysd) or str(self.doc.start_date) > str(yed) or str(self.doc.end_date) < str(ysd) or str(self.doc.end_date) > str(yed):
-			msgprint("Appraisal date range is not within the Fiscal Year selected")
-			raise Exception
-	
+		
 	def validate(self):
+		if not self.doc.status:
+			self.doc.status = "Draft"
 		self.validate_dates()
 		self.validate_existing_appraisal()
-		self.validate_curr_appraisal()
-		self.validate_fiscal_year()
-	
-	def set_approver(self):
-		errprint('here')
-		ret={}
-		approver_lst =[]
-		emp_nm = self.get_employee_name()
-		approver_lst1 = get_obj('Authorization Control').get_approver_name(self.doc.doctype,0,self)
-		if approver_lst1:
-			approver_lst=approver_lst1
-		else:
-			approver_lst = [x[0] for x in sql("select distinct name from `tabProfile` where enabled=1 and name!='Administrator' and name!='Guest' and docstatus!=2")]
-		ret = {'app_lst':"\n" + "\n".join(approver_lst), 'emp_nm':cstr(emp_nm)}
-		return ret
+		self.calculate_total()
 	
 	def calculate_total(self):
-		total = 0
+		total, total_w  = 0, 0
 		for d in getlist(self.doclist, 'appraisal_details'):
+			
 			if d.score:
-				total = total + flt(d.score_earned)
-		ret={'total_score':flt(total)}
-		return ret
-	
-	def declare_completed(self):
-		ret={}
-		for d in getlist(self.doclist, 'appraisal_details'):
-			if not d.target_achieved or not d.score or not d.score_earned:
-				msgprint("Please add 'Target Achieved' and 'Score' for all KPI")
-				ret = {'status':'Incomplete'}
-				return ret
+				d.score_earned = flt(d.score) * flt(d.per_weightage) / 100
+				total = total + d.score_earned
+			total_w += flt(d.per_weightage)
+
+		if int(total_w) != 100:
+			msgprint("Total weightage assigned should be 100%. It is :" + str(total_w) + "%", 
+				raise_exception=1)
 		
-		if not self.doc.total_score:
-			msgprint("Please calculate total score using button 'Calculate Total Score'")
-			ret = {'status':'No Score'}
-			return ret
-		self.update_appraisal()
-		#set(self.doc, 'status', 'Completed')
-		ret = {'status':'Completed'}
-		return ret
-	
-	def update_appraisal(self):
-		for d in getlist(self.doclist, 'appraisal_details'):
-			if not d.kra or not d.per_weightage:
-				msgprint("Please remove the extra blank row added")
-				raise Exception
-			d.save()
-		if self.doc.total_score:
-			set(self.doc,'total_score',self.doc.total_score)
-	
-	def on_update(self):
-		set(self.doc, 'status', 'Draft')
-	
-	def validate_total_weightage(self):
-		total_w = 0
-		for d in getlist(self.doclist, 'appraisal_details'):
-			total_w = flt(total_w) + flt(d.per_weightage)
-		
-		if flt(total_w)>100 or flt(total_w)<100:
-			msgprint("Total of weightage assigned to KPI is "+cstr(total_w)+".It should be 100(%)")
-			raise Exception
-	
-	def validate_appraisal_detail(self):
-		if not self.doc.kra_approver:
-			msgprint("Please mention the name of Approver")
-			raise Exception
-		
-		if not getlist(self.doclist, 'appraisal_details'):
-			msgprint("Please add KRA Details")
-			raise Exception		
-		
-		self.validate_total_weightage()
-	
+		if total==0:
+			msgprint("Total can't be zero. You must atleast give some points!", raise_exception=1)
+		self.doc.total_score = total
+			
 	def on_submit(self):
-		self.validate_appraisal_detail()
-		set(self.doc, 'status', 'Submitted')
+		webnotes.conn.set(self.doc, 'status', 'Submitted')
 	
 	def on_cancel(self): 
-		set(self.doc, 'status', 'Cancelled')
+		webnotes.conn.set(self.doc, 'status', 'Cancelled')
diff --git a/hr/doctype/appraisal/appraisal.txt b/hr/doctype/appraisal/appraisal.txt
index bfba9fc..c7eab6a 100644
--- a/hr/doctype/appraisal/appraisal.txt
+++ b/hr/doctype/appraisal/appraisal.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:53',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:45:46',
-		'modified_by': u'Administrator',
-		'owner': u'ashwini@webnotestech.com'
+		u'creation': '2012-11-16 10:33:39',
+		u'docstatus': 0,
+		u'modified': '2012-11-16 10:35:01',
+		u'modified_by': u'Administrator',
+		u'owner': u'ashwini@webnotestech.com'
 	},
 
 	# These values are common for all DocType
@@ -16,21 +16,21 @@
 		'autoname': u'APRSL.#####',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'is_submittable': 1,
 		'module': u'HR',
-		'name': '__common__',
+		u'name': u'__common__',
 		'search_fields': u'status, employee, employee_name',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 161
+		'version': 1
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Appraisal',
 		'parentfield': u'fields',
 		'parenttype': u'DocType'
@@ -38,8 +38,8 @@
 
 	# These values are common for all DocPerm
 	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
+		u'doctype': u'DocPerm',
+		u'name': u'__common__',
 		'parent': u'Appraisal',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
@@ -48,76 +48,13 @@
 
 	# DocType, Appraisal
 	{
-		'doctype': 'DocType',
-		'name': u'Appraisal'
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'HR Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'HR User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'All',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
+		u'doctype': u'DocType',
+		u'name': u'Appraisal'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'employee_details',
 		'fieldtype': u'Section Break',
 		'label': u'Employee Details',
@@ -128,8 +65,67 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
+		'description': u'Select template from which you want to get the Goals',
+		u'doctype': u'DocField',
+		'fieldname': u'kra_template',
+		'fieldtype': u'Link',
+		'label': u'Appraisal Template',
+		'oldfieldname': u'kra_template',
+		'oldfieldtype': u'Link',
+		'options': u'Appraisal Template',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'depends_on': u'kra_template',
+		'description': u'Select the Employee for whom you are creating the Appraisal.',
+		u'doctype': u'DocField',
+		'fieldname': u'employee',
+		'fieldtype': u'Link',
+		'in_filter': 1,
+		'label': u'For Employee',
+		'oldfieldname': u'employee',
+		'oldfieldtype': u'Link',
+		'options': u'Employee',
+		'permlevel': 0,
+		'reqd': 1,
+		'search_index': 1,
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'employee_name',
+		'fieldtype': u'Data',
+		'in_filter': 1,
+		'label': u'For Employee Name',
+		'oldfieldname': u'employee_name',
+		'oldfieldtype': u'Data',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'column_break0',
+		'fieldtype': u'Column Break',
+		'oldfieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
 		'default': u'Draft',
-		'doctype': u'DocField',
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
 		'fieldname': u'status',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -145,50 +141,115 @@
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'employee',
-		'fieldtype': u'Link',
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'start_date',
+		'fieldtype': u'Date',
 		'in_filter': 1,
-		'label': u'Employee',
-		'oldfieldname': u'employee',
-		'oldfieldtype': u'Link',
-		'options': u'Employee',
-		'permlevel': 0,
-		'reqd': 1,
-		'search_index': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'employee_name',
-		'fieldtype': u'Data',
-		'in_filter': 1,
-		'label': u'Employee Name',
-		'oldfieldname': u'employee_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'fiscal_year',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Fiscal Year',
-		'oldfieldname': u'fiscal_year',
-		'oldfieldtype': u'Select',
-		'options': u'link:Fiscal Year',
+		'label': u'Start Date',
+		'oldfieldname': u'start_date',
+		'oldfieldtype': u'Date',
 		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'end_date',
+		'fieldtype': u'Date',
+		'in_filter': 1,
+		'label': u'End Date',
+		'oldfieldname': u'end_date',
+		'oldfieldtype': u'Date',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'section_break0',
+		'fieldtype': u'Section Break',
+		'label': u'Goals',
+		'oldfieldtype': u'Section Break',
+		'options': u'Simple',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'allow_on_submit': 0,
+		'colour': u'White:FFF',
+		u'doctype': u'DocField',
+		'fieldname': u'appraisal_details',
+		'fieldtype': u'Table',
+		'label': u'Appraisal Goals',
+		'oldfieldname': u'appraisal_details',
+		'oldfieldtype': u'Table',
+		'options': u'Appraisal Goal',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'allow_on_submit': 0,
+		u'doctype': u'DocField',
+		'fieldname': u'calculate_total_score',
+		'fieldtype': u'Button',
+		'label': u'Calculate Total Score',
+		'oldfieldtype': u'Button',
+		'options': u'calculate_total',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
+		'fieldname': u'total_score',
+		'fieldtype': u'Currency',
+		'label': u'Total Score (Out of 5)',
+		'no_copy': 1,
+		'oldfieldname': u'total_score',
+		'oldfieldtype': u'Currency',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'section_break1',
+		'fieldtype': u'Section Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'Any other comments, noteworthy effort that should go in the records.',
+		u'doctype': u'DocField',
+		'fieldname': u'comments',
+		'fieldtype': u'Text',
+		'label': u'Comments',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'depends_on': u'kra_template',
+		u'doctype': u'DocField',
+		'fieldname': u'other_details',
+		'fieldtype': u'Section Break',
+		'label': u'Other Details',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
 		'fieldname': u'company',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -202,73 +263,21 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break0',
-		'fieldtype': u'Column Break',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'start_date',
-		'fieldtype': u'Date',
-		'in_filter': 1,
-		'label': u'Start Date',
-		'oldfieldname': u'start_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'end_date',
-		'fieldtype': u'Date',
-		'in_filter': 1,
-		'label': u'End Date',
-		'oldfieldname': u'end_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'kra_approver',
+		u'doctype': u'DocField',
+		'fieldname': u'fiscal_year',
 		'fieldtype': u'Select',
-		'in_filter': 0,
-		'label': u'Approver',
-		'oldfieldname': u'kra_approver',
+		'in_filter': 1,
+		'label': u'Fiscal Year',
+		'oldfieldname': u'fiscal_year',
 		'oldfieldtype': u'Select',
+		'options': u'link:Fiscal Year',
 		'permlevel': 0,
-		'trigger': u'Client'
+		'reqd': 1
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Amended From',
-		'no_copy': 1,
-		'oldfieldname': u'amended_from',
-		'oldfieldtype': u'Data',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1,
-		'width': u'150px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'amendment_date',
 		'fieldtype': u'Date',
 		'hidden': 1,
@@ -284,101 +293,58 @@
 
 	# DocField
 	{
-		'allow_on_submit': 1,
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'declare_completed',
-		'fieldtype': u'Button',
-		'label': u'Declare Completed',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'section_break0',
-		'fieldtype': u'Section Break',
-		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u'Select template from which you want to fetch KRA',
-		'doctype': u'DocField',
-		'fieldname': u'kra_template',
-		'fieldtype': u'Link',
-		'label': u'Appraisal Template',
-		'oldfieldname': u'kra_template',
-		'oldfieldtype': u'Link',
-		'options': u'Appraisal Template',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'fetch_template',
-		'fieldtype': u'Button',
-		'label': u'Fetch Template',
-		'oldfieldtype': u'Button',
-		'options': u'fetch_kra',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'update',
-		'fieldtype': u'Button',
+		u'doctype': u'DocField',
+		'fieldname': u'amended_from',
+		'fieldtype': u'Data',
 		'hidden': 1,
-		'label': u'Update',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'appraisal_details',
-		'fieldtype': u'Table',
-		'label': u'Appraisal Goals',
-		'oldfieldname': u'appraisal_details',
-		'oldfieldtype': u'Table',
-		'options': u'Appraisal Goal',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'calculate_total_score',
-		'fieldtype': u'Button',
-		'label': u'Calculate Total Score',
-		'oldfieldtype': u'Button',
-		'options': u'calculate_total',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'total_score',
-		'fieldtype': u'Currency',
-		'label': u'Total Score (Out of 5)',
+		'label': u'Amended From',
 		'no_copy': 1,
-		'oldfieldname': u'total_score',
-		'oldfieldtype': u'Currency',
-		'permlevel': 1
+		'oldfieldname': u'amended_from',
+		'oldfieldtype': u'Data',
+		'permlevel': 1,
+		'print_hide': 1,
+		'report_hide': 1,
+		'width': u'150px'
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'match': u'owner',
+		'permlevel': 0,
+		'role': u'Employee',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'HR User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'All'
 	}
 ]
\ No newline at end of file
diff --git a/hr/doctype/appraisal_goal/appraisal_goal.txt b/hr/doctype/appraisal_goal/appraisal_goal.txt
index fab4e84..ada41f5 100644
--- a/hr/doctype/appraisal_goal/appraisal_goal.txt
+++ b/hr/doctype/appraisal_goal/appraisal_goal.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:53',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:35:53',
-		'modified_by': u'Administrator',
-		'owner': u'ashwini@webnotestech.com'
+		u'creation': '2012-07-03 13:30:40',
+		u'docstatus': 0,
+		u'modified': '2012-11-15 17:50:24',
+		u'modified_by': u'Administrator',
+		u'owner': u'ashwini@webnotestech.com'
 	},
 
 	# These values are common for all DocType
@@ -15,19 +15,19 @@
 		'autoname': u'APRSLD.#####',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'istable': 1,
 		'module': u'HR',
-		'name': '__common__',
+		u'name': u'__common__',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
-		'version': 15
+		'version': 1
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Appraisal Goal',
 		'parentfield': u'fields',
 		'parenttype': u'DocType'
@@ -35,54 +35,43 @@
 
 	# DocType, Appraisal Goal
 	{
-		'doctype': 'DocType',
-		'name': u'Appraisal Goal'
+		u'doctype': u'DocType',
+		u'name': u'Appraisal Goal'
 	},
 
 	# DocField
 	{
 		'colour': u'White:FFF',
 		'description': u'Key Responsibility Area',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'kra',
 		'fieldtype': u'Small Text',
-		'label': u'KRA',
+		'label': u'Goal',
 		'oldfieldname': u'kra',
 		'oldfieldtype': u'Small Text',
 		'permlevel': 0,
-		'reqd': 1
+		'reqd': 1,
+		'width': u'240px'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'per_weightage',
 		'fieldtype': u'Currency',
 		'label': u'Weightage (%)',
 		'oldfieldname': u'per_weightage',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'target_achieved',
-		'fieldtype': u'Small Text',
-		'label': u'Target Achieved',
-		'no_copy': 1,
-		'oldfieldname': u'target_achieved',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 0
+		'reqd': 1,
+		'width': u'70px'
 	},
 
 	# DocField
 	{
 		'allow_on_submit': 1,
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'score',
 		'fieldtype': u'Currency',
 		'label': u'Score (0-5)',
@@ -92,18 +81,19 @@
 		'options': u'\n0\n1\n2\n3\n4\n5',
 		'permlevel': 0,
 		'trigger': u'Client',
-		'width': u'60px'
+		'width': u'70px'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'score_earned',
 		'fieldtype': u'Currency',
 		'label': u'Score Earned',
 		'no_copy': 1,
 		'oldfieldname': u'score_earned',
 		'oldfieldtype': u'Currency',
-		'permlevel': 1
+		'permlevel': 1,
+		'width': u'70px'
 	}
 ]
\ No newline at end of file
diff --git a/patches/november_2012/reset_appraisal_permissions.py b/patches/november_2012/reset_appraisal_permissions.py
new file mode 100644
index 0000000..2000c2f
--- /dev/null
+++ b/patches/november_2012/reset_appraisal_permissions.py
@@ -0,0 +1,3 @@
+import webnotes
+def execute():
+	webnotes.conn.sql("""delete from tabDocPerm where parent='Appraisal'""")
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 2b404b9..30eca6b 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -667,4 +667,8 @@
 		'patch_module': 'patches.november_2012',
 		'patch_file': 'customer_issue_allocated_to_assigned',
 	},
+	{
+		'patch_module': 'patches.november_2012',
+		'patch_file': 'reset_appraisal_permissions',
+	},
 ]