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',
+ },
]