From 04b9579b24ef0686bf795ae1648086dc8a331adb Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 16 Nov 2012 10:37:14 +0530 Subject: [PATCH] appraisal cleanup, removed un-necessary logic --- home/page/latest_updates/latest_updates.js | 5 + hr/doctype/appraisal/appraisal.js | 94 +--- hr/doctype/appraisal/appraisal.py | 121 +---- hr/doctype/appraisal/appraisal.txt | 506 ++++++++---------- hr/doctype/appraisal_goal/appraisal_goal.txt | 58 +- .../reset_appraisal_permissions.py | 3 + patches/patch_list.py | 4 + 7 files changed, 309 insertions(+), 482 deletions(-) create mode 100644 patches/november_2012/reset_appraisal_permissions.py diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js index ad6ef7be82..93e38d867e 100644 --- a/home/page/latest_updates/latest_updates.js +++ b/home/page/latest_updates/latest_updates.js @@ -1,4 +1,9 @@ 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.", diff --git a/hr/doctype/appraisal/appraisal.js b/hr/doctype/appraisal/appraisal.js index 4c7c5e5e95..3601da9bd0 100644 --- a/hr/doctype/appraisal/appraisal.js +++ b/hr/doctype/appraisal/appraisal.js @@ -15,6 +15,7 @@ // along with this program. If not, see . 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 = function(doc,cdt,cdn){ } 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 @@ cur_frm.cscript.refresh_appraisal_details = function(doc, cdt, cdn){ 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 @@ cur_frm.cscript.calculate_total_score = function(doc,cdt,cdn){ 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', '
You wont be able to do any changes after declaring this Appraisal as completed. Are you sure, you want to declare it as completed ?
'], - ['HTML', 'Response', '
'], - ['HTML', 'Declare Completed', '
'] - ]); - - 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 39bc3ffa6e..310e02bc59 100644 --- a/hr/doctype/appraisal/appraisal.py +++ b/hr/doctype/appraisal/appraisal.py @@ -23,7 +23,6 @@ from webnotes.model.doclist import getlist from webnotes.model.code import get_obj from webnotes import msgprint -set = webnotes.conn.set sql = webnotes.conn.sql @@ -39,11 +38,9 @@ class DocType: 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 @@ class DocType: 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 bfba9fca19..c7eab6a34c 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', @@ -125,11 +62,70 @@ 'permlevel': 0 }, + # 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 fab4e84e9b..ada41f5300 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 0000000000..2000c2fba6 --- /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 2b404b9472..30eca6bac3 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -667,4 +667,8 @@ patch_list = [ 'patch_module': 'patches.november_2012', 'patch_file': 'customer_issue_allocated_to_assigned', }, + { + 'patch_module': 'patches.november_2012', + 'patch_file': 'reset_appraisal_permissions', + }, ]