[REM] hr_evaluation: deprecated by hr_appraisal

This commit is contained in:
Antony Lesuisse
2015-08-26 17:51:14 +02:00
parent 37053a407c
commit 2fbb0fe5d8
58 changed files with 0 additions and 60525 deletions
-5
View File
@@ -272,11 +272,6 @@ file_filter = addons/hr_equipment/i18n/<lang>.po
source_file = addons/hr_equipment/i18n/hr_equipment.pot
source_lang = en
[odoo-9.hr_evaluation]
file_filter = addons/hr_evaluation/i18n/<lang>.po
source_file = addons/hr_evaluation/i18n/hr_evaluation.pot
source_lang = en
[odoo-9.hr_expense]
file_filter = addons/hr_expense/i18n/<lang>.po
source_file = addons/hr_expense/i18n/hr_expense.pot
-6
View File
@@ -1,6 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import hr_department
import hr_evaluation
import report
-48
View File
@@ -1,48 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Employee Appraisals',
'version': '0.1',
'category': 'Human Resources',
'sequence': 100,
'website': 'https://www.odoo.com/page/appraisal',
'summary': 'Periodical Evaluations, Appraisals, Surveys',
'depends': ['hr', 'calendar', 'survey'],
'description': """
Periodical Employees evaluation and appraisals
==============================================
By using this application you can maintain the motivational process by doing periodical evaluations of your employees' performance. The regular assessment of human resources can benefit your people as well your organization.
An evaluation plan can be assigned to each employee. These plans define the frequency and the way you manage your periodic personal evaluations. You will be able to define steps and attach interview forms to each step.
Manages several types of evaluations: bottom-up, top-down, self-evaluations and the final evaluation by the manager.
Key Features
------------
* Ability to create employees evaluations.
* An evaluation can be created by an employee for subordinates, juniors as well as his manager.
* The evaluation is done according to a plan in which various surveys can be created. Each survey can be answered by a particular level in the employees hierarchy. The final review and evaluation is done by the manager.
* Every evaluation filled by employees can be viewed in a PDF form.
* Interview Requests are generated automatically by OpenERP according to employees evaluation plans. Each user receives automatic emails and requests to perform a periodical evaluation of their colleagues.
""",
"data": [
'security/ir.model.access.csv',
'security/hr_evaluation_security.xml',
'hr_evaluation_view.xml',
'report/hr_evaluation_report_view.xml',
'survey_data_appraisal.xml',
'hr_evaluation_data.xml',
'hr_evaluation_installer.xml',
'hr_dashboard.xml',
],
"demo": ["hr_evaluation_demo.xml"],
# 'test': [
# 'test/test_hr_evaluation.yml',
# 'test/hr_evalution_demo.yml',
# ],
'auto_install': False,
'installable': True,
'application': True,
}
-68
View File
@@ -1,68 +0,0 @@
<odoo>
<!--Hr Department Inherit Kanban view-->
<record id="hr_department_view_kanban" model="ir.ui.view">
<field name="name">hr.department.kanban.inherit</field>
<field name="model">hr.department</field>
<field name="inherit_id" ref="hr.hr_department_view_kanban"/>
<field name="arch" type="xml">
<data>
<xpath expr="//templates" position="before">
<field name="appraisal_to_start_count"/>
<field name="interview_request_count"/>
</xpath>
<xpath expr="//div[contains(@class, 'o_kanban_primary_right')]" position="inside">
<div t-if="record.interview_request_count.raw_value > 0" class="row">
<div class="col-xs-9">
<a name="%(hr_evaluation_interview_action_from_department)d" type="action">
Interview Requests
</a>
</div>
<div class="col-xs-3">
<t t-esc="record.interview_request_count.raw_value"/>
</div>
</div>
<div t-if="record.appraisal_to_start_count.raw_value > 0" class="row">
<div class="col-xs-9">
<a name="%(hr_appraisal_action_from_department)d" type="action">
Appraisal to Start
</a>
</div>
<div class="col-xs-3">
<t t-esc="record.appraisal_to_start_count.raw_value"/>
</div>
</div>
</xpath>
<xpath expr="//div[contains(@class, 'o_kanban_manage_to_do')]" position="inside">
<div class="row">
<div class="col-xs-12 text-left">
<a name="%(hr_evaluation_interview_action_from_department)d" type="action">
<t t-esc="record.interview_request_count.raw_value or 0"/> Interview Requests
</a>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-left">
<a name="%(hr_appraisal_action_from_department)d" type="action">
<t t-esc="record.appraisal_to_start_count.raw_value or 0"/> Appraisal to Start
</a>
</div>
</div>
</xpath>
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
<div class="row">
<div class="col-xs-12 text-left">
<a name="%(action_evaluation_report_filtered)d" type="action">
Appraisals
</a>
</div>
</div>
</xpath>
</data>
</field>
</record>
</odoo>
-29
View File
@@ -1,29 +0,0 @@
# -*- coding: utf-8 -*-
from openerp import api, fields, models
class hr_department(models.Model):
_inherit = 'hr.department'
@api.multi
def _compute_interview_request(self):
Interview = self.env['hr.evaluation.interview']
for department in self:
department.interview_request_count = Interview.search_count([
('user_to_review_id.department_id', '=', department.id),
('state', '=', 'waiting_answer')
])
@api.multi
def _compute_appraisal_to_start(self):
Evaluation = self.env['hr_evaluation.evaluation']
for department in self:
department.appraisal_to_start_count = Evaluation.search_count([
('employee_id.department_id', '=', department.id),
('state', '=', 'draft')
])
appraisal_to_start_count = fields.Integer(
compute='_compute_appraisal_to_start', string='Appraisal to Start')
interview_request_count = fields.Integer(
compute='_compute_interview_request', string='Interview Request')
-360
View File
@@ -1,360 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from dateutil import parser
import time
from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT as DF
from openerp.exceptions import UserError
class hr_evaluation_plan(osv.Model):
_name = "hr_evaluation.plan"
_description = "Appraisal Plan"
_columns = {
'name': fields.char("Appraisal Plan", required=True),
'company_id': fields.many2one('res.company', 'Company', required=True),
'phase_ids': fields.one2many('hr_evaluation.plan.phase', 'plan_id', 'Appraisal Phases', copy=True),
'month_first': fields.integer('First Appraisal in (months)', help="This number of months will be used to schedule the first evaluation date of the employee when selecting an evaluation plan. "),
'month_next': fields.integer('Periodicity of Appraisal (months)', help="The number of month that depicts the delay between each evaluation of this plan (after the first one)."),
'active': fields.boolean('Active')
}
_defaults = {
'active': True,
'month_first': 6,
'month_next': 12,
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.account', context=c),
}
class hr_evaluation_plan_phase(osv.Model):
_name = "hr_evaluation.plan.phase"
_description = "Appraisal Plan Phase"
_order = "sequence"
_columns = {
'name': fields.char("Phase", size=64, required=True),
'sequence': fields.integer("Sequence"),
'company_id': fields.related('plan_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
'plan_id': fields.many2one('hr_evaluation.plan', 'Appraisal Plan', ondelete='cascade'),
'action': fields.selection([
('top-down', 'Top-Down Appraisal Requests'),
('bottom-up', 'Bottom-Up Appraisal Requests'),
('self', 'Self Appraisal Requests'),
('final', 'Final Interview')], 'Action', required=True),
'survey_id': fields.many2one('survey.survey', 'Appraisal Form', required=True),
'send_answer_manager': fields.boolean('All Answers',
help="Send all answers to the manager"),
'send_answer_employee': fields.boolean('All Answers',
help="Send all answers to the employee"),
'send_anonymous_manager': fields.boolean('Anonymous Summary',
help="Send an anonymous summary to the manager"),
'send_anonymous_employee': fields.boolean('Anonymous Summary',
help="Send an anonymous summary to the employee"),
'wait': fields.boolean('Wait Previous Phases',
help="Check this box if you want to wait that all preceding phases " +
"are finished before launching this phase."),
'mail_feature': fields.boolean('Send mail for this phase', help="Check this box if you want to send mail to employees coming under this phase"),
'mail_body': fields.text('Email'),
'email_subject': fields.text('Subject')
}
_defaults = {
'sequence': 1,
'email_subject': _('''Regarding '''),
'mail_body': lambda *a: _('''
Date: %(date)s
Dear %(employee_name)s,
I am doing an evaluation regarding %(eval_name)s.
Kindly submit your response.
Thanks,
--
%(user_signature)s
'''),
}
class hr_employee(osv.Model):
_name = "hr.employee"
_inherit="hr.employee"
def _appraisal_count(self, cr, uid, ids, field_name, arg, context=None):
Evaluation = self.pool['hr.evaluation.interview']
return {
employee_id: Evaluation.search_count(cr, uid, [('user_to_review_id', '=', employee_id)], context=context)
for employee_id in ids
}
_columns = {
'evaluation_plan_id': fields.many2one('hr_evaluation.plan', 'Appraisal Plan'),
'evaluation_date': fields.date('Next Appraisal Date', help="The date of the next appraisal is computed by the appraisal plan's dates (first appraisal + periodicity)."),
'appraisal_count': fields.function(_appraisal_count, type='integer', string='Appraisal Interviews'),
}
def run_employee_evaluation(self, cr, uid, automatic=False, use_new_cursor=False, context=None): # cronjob
now = parser.parse(datetime.now().strftime('%Y-%m-%d'))
obj_evaluation = self.pool.get('hr_evaluation.evaluation')
emp_ids = self.search(cr, uid, [('evaluation_plan_id', '<>', False), ('evaluation_date', '=', False)], context=context)
for emp in self.browse(cr, uid, emp_ids, context=context):
first_date = (now + relativedelta(months=emp.evaluation_plan_id.month_first)).strftime('%Y-%m-%d')
self.write(cr, uid, [emp.id], {'evaluation_date': first_date}, context=context)
emp_ids = self.search(cr, uid, [('evaluation_plan_id', '<>', False), ('evaluation_date', '<=', time.strftime("%Y-%m-%d"))], context=context)
for emp in self.browse(cr, uid, emp_ids, context=context):
next_date = (now + relativedelta(months=emp.evaluation_plan_id.month_next)).strftime('%Y-%m-%d')
self.write(cr, uid, [emp.id], {'evaluation_date': next_date}, context=context)
plan_id = obj_evaluation.create(cr, uid, {'employee_id': emp.id, 'plan_id': emp.evaluation_plan_id.id}, context=context)
obj_evaluation.button_plan_in_progress(cr, uid, [plan_id], context=context)
return True
class hr_evaluation(osv.Model):
_name = "hr_evaluation.evaluation"
_inherit = ['mail.thread']
_description = "Employee Appraisal"
_columns = {
'date': fields.date("Appraisal Deadline", required=True, select=True),
'employee_id': fields.many2one('hr.employee', "Employee", required=True),
'note_summary': fields.text('Appraisal Summary'),
'note_action': fields.text('Action Plan', help="If the evaluation does not meet the expectations, you can propose an action plan"),
'rating': fields.selection([
('0', 'Significantly below expectations'),
('1', 'Do not meet expectations'),
('2', 'Meet expectations'),
('3', 'Exceeds expectations'),
('4', 'Significantly exceeds expectations'),
], "Appreciation", help="This is the appreciation on which the evaluation is summarized."),
'survey_request_ids': fields.one2many('hr.evaluation.interview', 'evaluation_id', 'Appraisal Forms'),
'plan_id': fields.many2one('hr_evaluation.plan', 'Plan', required=True),
'state': fields.selection([
('draft', 'New'),
('cancel', 'Cancelled'),
('wait', 'Plan In Progress'),
('progress', 'Waiting Appreciation'),
('done', 'Done'),
], 'Status', required=True, readonly=True, track_visibility='onchange', copy=False),
'date_close': fields.date('Ending Date', select=True),
}
_defaults = {
'date': lambda *a: (parser.parse(datetime.now().strftime('%Y-%m-%d')) + relativedelta(months=+1)).strftime('%Y-%m-%d'),
'state': lambda *a: 'draft',
}
def name_get(self, cr, uid, ids, context=None):
if not ids:
return []
reads = self.browse(cr, uid, ids, context=context)
res = []
for record in reads:
name = record.plan_id.name
employee = record.employee_id.name_related
res.append((record['id'], name + ' / ' + employee))
return res
def onchange_employee_id(self, cr, uid, ids, employee_id, context=None):
vals = {}
vals['plan_id'] = False
if employee_id:
employee_obj = self.pool.get('hr.employee')
for employee in employee_obj.browse(cr, uid, [employee_id], context=context):
if employee and employee.evaluation_plan_id and employee.evaluation_plan_id.id:
vals.update({'plan_id': employee.evaluation_plan_id.id})
return {'value': vals}
def button_plan_in_progress(self, cr, uid, ids, context=None):
hr_eval_inter_obj = self.pool.get('hr.evaluation.interview')
if context is None:
context = {}
for evaluation in self.browse(cr, uid, ids, context=context):
wait = False
for phase in evaluation.plan_id.phase_ids:
children = []
if phase.action == "bottom-up":
children = evaluation.employee_id.child_ids
elif phase.action in ("top-down", "final"):
if evaluation.employee_id.parent_id:
children = [evaluation.employee_id.parent_id]
elif phase.action == "self":
children = [evaluation.employee_id]
for child in children:
int_id = hr_eval_inter_obj.create(cr, uid, {
'evaluation_id': evaluation.id,
'phase_id': phase.id,
'deadline': (parser.parse(datetime.now().strftime('%Y-%m-%d')) + relativedelta(months=+1)).strftime('%Y-%m-%d'),
'user_id': child.user_id.id,
}, context=context)
if phase.wait:
wait = True
if not wait:
hr_eval_inter_obj.survey_req_waiting_answer(cr, uid, [int_id], context=context)
if (not wait) and phase.mail_feature:
body = phase.mail_body % {'employee_name': child.name, 'user_signature': child.user_id.signature,
'eval_name': phase.survey_id.title, 'date': time.strftime('%Y-%m-%d'), 'time': time}
sub = phase.email_subject
if child.work_email:
vals = {'state': 'outgoing',
'subject': sub,
'body_html': '<pre>%s</pre>' % body,
'email_to': child.work_email,
'email_from': evaluation.employee_id.work_email}
self.pool.get('mail.mail').create(cr, uid, vals, context=context)
self.write(cr, uid, ids, {'state': 'wait'}, context=context)
return True
def button_final_validation(self, cr, uid, ids, context=None):
request_obj = self.pool.get('hr.evaluation.interview')
self.write(cr, uid, ids, {'state': 'progress'}, context=context)
for evaluation in self.browse(cr, uid, ids, context=context):
if evaluation.employee_id and evaluation.employee_id.parent_id and evaluation.employee_id.parent_id.user_id:
self.message_subscribe_users(cr, uid, [evaluation.id], user_ids=[evaluation.employee_id.parent_id.user_id.id], context=context)
if len(evaluation.survey_request_ids) != len(request_obj.search(cr, uid, [('evaluation_id', '=', evaluation.id), ('state', 'in', ['done', 'cancel'])], context=context)):
raise UserError(_("You cannot change state, because some appraisal forms have not been completed."))
return True
def button_done(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'done', 'date_close': time.strftime('%Y-%m-%d')}, context=context)
return True
def button_cancel(self, cr, uid, ids, context=None):
interview_obj = self.pool.get('hr.evaluation.interview')
evaluation = self.browse(cr, uid, ids[0], context)
interview_obj.survey_req_cancel(cr, uid, [r.id for r in evaluation.survey_request_ids])
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
return True
def button_draft(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'draft'}, context=context)
return True
def write(self, cr, uid, ids, vals, context=None):
if vals.get('employee_id'):
employee_id = self.pool.get('hr.employee').browse(cr, uid, vals.get('employee_id'), context=context)
# TDE FIXME: use add_command
if employee_id.parent_id and employee_id.parent_id.user_id:
message_follower_ids = vals.get('message_follower_ids') or [] # webclient can send None or False
message_follower_ids += self.env['mail.followers']._add_follower_command(self._name, ids, {employee_id.parent_id.user_id.partner_id.id: None}, {}, force=True)[0]
vals['message_follower_ids'] = message_follower_ids
if 'date' in vals:
new_vals = {'deadline': vals.get('date')}
obj_hr_eval_iterview = self.pool.get('hr.evaluation.interview')
for evaluation in self.browse(cr, uid, ids, context=context):
for survey_req in evaluation.survey_request_ids:
obj_hr_eval_iterview.write(cr, uid, [survey_req.id], new_vals, context=context)
return super(hr_evaluation, self).write(cr, uid, ids, vals, context=context)
class hr_evaluation_interview(osv.Model):
_name = 'hr.evaluation.interview'
_inherit = ['mail.thread']
_rec_name = 'user_to_review_id'
_description = 'Appraisal Interview'
_columns = {
'request_id': fields.many2one('survey.user_input', 'Survey Request', ondelete='cascade', readonly=True),
'evaluation_id': fields.many2one('hr_evaluation.evaluation', 'Appraisal Plan', required=True),
'phase_id': fields.many2one('hr_evaluation.plan.phase', 'Appraisal Phase', required=True),
'user_to_review_id': fields.related('evaluation_id', 'employee_id', type="many2one", relation="hr.employee", string="Employee to evaluate"),
'user_id': fields.many2one('res.users', 'Interviewer'),
'state': fields.selection([('draft', "Draft"),
('waiting_answer', "In progress"),
('done', "Done"),
('cancel', "Cancelled")],
string="State", required=True, copy=False),
'survey_id': fields.related('phase_id', 'survey_id', string="Appraisal Form", type="many2one", relation="survey.survey"),
'deadline': fields.related('request_id', 'deadline', type="datetime", string="Deadline"),
}
_defaults = {
'state': 'draft'
}
def create(self, cr, uid, vals, context=None):
phase_obj = self.pool.get('hr_evaluation.plan.phase')
survey_id = phase_obj.read(cr, uid, vals.get('phase_id'), fields=['survey_id'], context=context)['survey_id'][0]
if vals.get('user_id'):
user_obj = self.pool.get('res.users')
partner_id = user_obj.read(cr, uid, vals.get('user_id'), fields=['partner_id'], context=context)['partner_id'][0]
else:
partner_id = None
user_input_obj = self.pool.get('survey.user_input')
if not vals.get('deadline'):
vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)
ret = user_input_obj.create(cr, uid, {'survey_id': survey_id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id}, context=context)
vals['request_id'] = ret
return super(hr_evaluation_interview, self).create(cr, uid, vals, context=context)
def name_get(self, cr, uid, ids, context=None):
if not ids:
return []
reads = self.browse(cr, uid, ids, context=context)
res = []
for record in reads:
name = record.survey_id.title
res.append((record['id'], name))
return res
def survey_req_waiting_answer(self, cr, uid, ids, context=None):
request_obj = self.pool.get('survey.user_input')
for interview in self.browse(cr, uid, ids, context=context):
if interview.request_id:
request_obj.action_survey_resent(cr, uid, [interview.request_id.id], context=context)
self.write(cr, uid, interview.id, {'state': 'waiting_answer'}, context=context)
return True
def survey_req_done(self, cr, uid, ids, context=None):
for id in self.browse(cr, uid, ids, context=context):
flag = False
wating_id = 0
if not id.evaluation_id.id:
raise UserError(_("You cannot start evaluation without Appraisal."))
records = id.evaluation_id.survey_request_ids
for child in records:
if child.state == "draft":
wating_id = child.id
continue
if child.state != "done":
flag = True
if not flag and wating_id:
self.survey_req_waiting_answer(cr, uid, [wating_id], context=context)
self.write(cr, uid, ids, {'state': 'done'}, context=context)
return True
def survey_req_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
return True
def action_print_survey(self, cr, uid, ids, context=None):
""" If response is available then print this response otherwise print survey form (print template of the survey) """
context = dict(context or {})
interview = self.browse(cr, uid, ids, context=context)[0]
survey_obj = self.pool.get('survey.survey')
response_obj = self.pool.get('survey.user_input')
response = response_obj.browse(cr, uid, interview.request_id.id, context=context)
context.update({'survey_token': response.token})
return survey_obj.action_print_survey(cr, uid, [interview.survey_id.id], context=context)
def action_start_survey(self, cr, uid, ids, context=None):
context = dict(context or {})
interview = self.browse(cr, uid, ids, context=context)[0]
survey_obj = self.pool.get('survey.survey')
response_obj = self.pool.get('survey.user_input')
# grab the token of the response and start surveying
response = response_obj.browse(cr, uid, interview.request_id.id, context=context)
context.update({'survey_token': response.token})
return survey_obj.action_start_survey(cr, uid, [interview.survey_id.id], context=context)
@@ -1,56 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- After installation of the module, open the related menu -->
<record id="base.open_menu" model="ir.actions.todo">
<field name="action_id" ref="hr.action_client_hr_menu"/>
<field name="state">open</field>
</record>
<!-- notify all employees of module installation -->
<record model="mail.message" id="module_install_notification">
<field name="model">mail.channel</field>
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">notification</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="subject">Employee Appraisals application installed!</field>
<field name="body"><![CDATA[<p>Manage employee reviews: you can define an appraisal campaign with several steps, with specific evaluation surveys according to hierarchy levels. Evaluations filled by employees may be exported as pdf files.</p>]]></field>
</record>
<record id="hr_evaluation_plan_managersevaluationplan0" model="hr_evaluation.plan">
<field eval="1" name="active"/>
<field eval="6" name="month_next"/>
<field name="name">Manager's Appraisal Plan</field>
<field eval="3" name="month_first"/>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="hr_evaluation_plan_phase_sendtoemployee0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Employee</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="1" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">self</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="appraisal_form"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record forcecreate="True" id="ir_cron_scheduler_evaluation" model="ir.cron">
<field name="name">Run Employee Appraisal</field>
<field eval="True" name="active" />
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field eval="'hr.employee'" name="model" />
<field eval="'run_employee_evaluation'" name="function" />
<field eval="'(False,)'" name="args" />
</record>
</data>
</openerp>
@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="hr.employee_fp" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
<record id="hr.employee_qdp" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
<record id="hr.employee_al" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
<record id="hr_evaluation_evaluation_0" model="hr_evaluation.evaluation">
<field name="date">2011-12-24</field>
<field name="employee_id" ref="hr.employee_fp"/>
<field name="plan_id" ref="hr_evaluation.hr_evaluation_plan_managersevaluationplan0"/>
</record>
</data>
</openerp>
@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record model="ir.actions.act_window" id="action_evaluation_plans_installer">
<field name="name">Review Appraisal Plans</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hr_evaluation.plan</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new appraisal plan.
</p><p>
You can define appraisal plans (ex: first interview after 6
months, then every year). Then, each employee can be linked to
an appraisal plan so that Odoo can automatically generate
interview requests to managers and/or subordinates.
</p>
</field>
</record>
</data>
</openerp>
-436
View File
@@ -1,436 +0,0 @@
<?xml version="1.0" ?>
<openerp>
<data>
<record id="view_hr_evaluation_plan_search" model="ir.ui.view">
<field name="name">hr_evaluation.plan.search</field>
<field name="model">hr_evaluation.plan</field>
<field name="arch" type="xml">
<search string="Appraisal Plan">
<field name="name" string="Appraisal Plans"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By" groups="base.group_multi_company">
<filter string="Company" domain="[]" context="{'group_by':'company_id'}"/>
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="view_hr_evaluation_plan_form">
<field name="name">hr_evaluation.plan.form</field>
<field name="model">hr_evaluation.plan</field>
<field name="arch" type="xml">
<form string="Appraisal Plan">
<sheet>
<group col="4">
<group>
<field name="name"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<field name="active"/>
</group>
<group>
<field name="month_first"/>
<field name="month_next"/>
</group>
</group>
<notebook>
<page string="Appraisal Phases">
<field name="phase_ids"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_hr_evaluation_plan_tree">
<field name="name">hr_evaluation.plan.form</field>
<field name="model">hr_evaluation.plan</field>
<field name="arch" type="xml">
<tree string="Appraisal Plan">
<field name="name"/>
<field name="month_first"/>
<field name="month_next"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="open_view_hr_evaluation_plan_tree">
<field name="name">Appraisal Plans</field>
<field name="res_model">hr_evaluation.plan</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Appraisal Interviews Action -->
<record id="act_hr_employee_2_hr__evaluation_interview" model="ir.actions.act_window">
<field name="res_model">hr.evaluation.interview</field>
<field name="view_type">form</field>
<field name="name">Interviews</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_user_to_review_id': [active_id], 'default_user_to_review_id': active_id}</field>
</record>
<menuitem name="Appraisal" id="menu_hr_evaluation_root" sequence="85" web_icon="hr_evaluation,static/description/icon.png"/>
<menuitem name="Configuration" id="menu_hr_evaluation_configuration" sequence="100" parent="menu_hr_evaluation_root" groups="base.group_configuration,base.group_hr_manager" action="open_view_hr_evaluation_plan_tree"/>
<record model="ir.ui.view" id="view_hr_evaluation_plan_phase_form">
<field name="name">hr_evaluation.plan.phase.form</field>
<field name="model">hr_evaluation.plan.phase</field>
<field name="arch" type="xml">
<form string="Appraisal Plan Phases">
<notebook>
<page string="General">
<group>
<field name="plan_id" invisible="1"/>
<group>
<group>
<field name="name"/>
<field name="wait"/>
<field name="sequence"/>
</group>
<group>
<separator string="Action to Perform" colspan="4"/>
<field name="action"/>
<field name="survey_id"/>
</group>
<group string="Send to Managers">
<field name="send_answer_manager"/>
<field name="send_anonymous_manager"/>
</group><group string="Send to Employees">
<field name="send_answer_employee"/>
<field name="send_anonymous_employee"/>
</group>
</group>
</group>
</page>
<page string="Mail Settings">
<field name="mail_feature"/>
<separator string="Mail Body"/>
<field name="mail_body"/>
<group string="Legend">
<label string=" (employee_name)s: Partner name"/>
<label string="(user_signature)s: User name"/>
<label string="(date)s: Current Date"/>
<label string="(eval_name)s:Appraisal Name"/>
</group>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_hr_evaluation_plan_phase_tree">
<field name="name">hr_evaluation.plan.phase.form</field>
<field name="model">hr_evaluation.plan.phase</field>
<field name="arch" type="xml">
<tree string="Appraisal Plan Phases" editable="bottom" >
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="action"/>
<field name="survey_id"/>
<field name="wait"/>
</tree>
</field>
</record>
<record id="hr_hr_employee_view_form" model="ir.ui.view">
<field name="name">hr.hr.employee.view.form</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//group[@name='active_group']" position="after">
<group string="Appraisals">
<field name="evaluation_plan_id"/>
<field name="evaluation_date"/>
</group>
</xpath>
<div name="button_box" position="inside">
<button name="%(act_hr_employee_2_hr__evaluation_interview)d"
class="oe_stat_button"
icon="fa-sitemap"
type="action">
<field name="appraisal_count" widget="statinfo" string="Appraisals"/>
</button>
</div>
</field>
</record>
<record model="ir.ui.view" id="view_hr_evaluation_form">
<field name="name">hr_evaluation.evaluation.form</field>
<field name="model">hr_evaluation.evaluation</field>
<field name="arch" type="xml">
<form string="Appraisal">
<header>
<button name="button_plan_in_progress" string="Start Appraisal" states="draft" type="object" class="oe_highlight"/>
<button name="button_final_validation" string="Validate Appraisal" states="wait" type="object" class="oe_highlight"/>
<button name="button_done" string="Done" states="progress" type="object" class="oe_highlight"/>
<button name="button_draft" string="Reset to Draft" states="cancel" type="object" />
<button name="button_cancel" string="Cancel Appraisal" states="draft,wait,progress" type="object"/>
<field name="state" widget="statusbar" statusbar_visible="draft,progress,wait,done" statusbar_colors='{"progress":"blue"}'/>
</header>
<sheet>
<label for="employee_id" class="oe_edit_only"/>
<h1>
<field name="employee_id" class="oe_inline" attrs="{'readonly': [('state', '=', 'done')]}" on_change="onchange_employee_id(employee_id)"/>
<field name="date" attrs="{'readonly': [('state', '=', 'done')]}"/>
</h1>
<label for="plan_id" class="oe_edit_only"/>
<h2><field name="plan_id" attrs="{'readonly': [('state', '=', 'done')]}"/></h2>
<group>
<group colspan="4" attrs="{'invisible':['|', ('state','=','draft'), ('state', '=', 'wait')]}">
<field name="rating" attrs="{'readonly':[('state','&lt;&gt;','progress')]}"/>
<field name="date_close" readonly="1"/>
</group>
</group>
<group string="Appraisal Forms" attrs="{'invisible':[('state','=','draft')]}">
<field nolabel="1" name="survey_request_ids" attrs="{'readonly': [('state', '=', 'done')]}" />
</group>
<group string="Internal Notes" attrs="{'invisible':[('state','=','draft')]}">
<field nolabel="1" name="note_action"
groups="base.group_hr_manager" placeholder="Appraisal Summary..."/>
</group>
<group string="Public Notes" attrs="{'invisible':[('state','=','draft')]}">
<field nolabel="1" name="note_summary" placeholder="Action Plan..."/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_hr_evaluation_tree">
<field name="name">hr_evaluation.evaluation.tree</field>
<field name="model">hr_evaluation.evaluation</field>
<field name="arch" type="xml">
<tree decoration-info="state == 'draft'" decoration-muted="state in('done','cancel')" string="Appraisal"
decoration-bf="message_needaction == True">
<field name="employee_id"/>
<field name="plan_id"/>
<field name="date"/>
<field name="rating"/>
<field name="state"/>
<field name="message_needaction" invisible="1"/>
</tree>
</field>
</record>
<record id="hr_evaluation.evaluation_search" model="ir.ui.view">
<field name="name">hr_evaluation.evaluation_search</field>
<field name="model">hr_evaluation.evaluation</field>
<field name="arch" type="xml">
<search string="Search Appraisal">
<field name="date"/>
<field name="employee_id"/>
<field name="plan_id"/>
<field name="state"/>
<filter string="Pending" domain="[('state','=','wait')]" help="Appraisal that are in Plan In Progress state"/>
<filter string="In progress" domain="[('state','=','progress')]" help="Appraisal that are in waiting appreciation state"/>
<separator/>
<filter string="Important Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/>
<group expand='0' string='Group by...'>
<filter string='Employee' domain="[]" context="{'group_by' : 'employee_id'}" />
<filter string='Plan' domain="[]" context="{'group_by' : 'plan_id'}" />
<filter string='Status' domain="[]" context="{'group_by' : 'state'}" />
<filter string='Appraisals Month' domain="[]" context="{'group_by' : 'date'}" help="Appraisals by Month" />
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="open_view_hr_evaluation_tree">
<field name="name">Appraisal</field>
<field name="res_model">hr_evaluation.evaluation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="hr_evaluation.evaluation_search"/>
<field name="context">{"search_default_next_month":1}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new appraisal.
</p><p>
Each employee may be assigned an Appraisal Plan. Such a plan
defines the frequency and the way you manage your periodic
personnel evaluation. You will be able to define steps and
attach interviews to each step. Odoo manages all kinds of
evaluations: bottom-up, top-down, self-evaluation and final
evaluation by the manager.
</p>
</field>
</record>
<menuitem name="Appraisals" parent="menu_hr_evaluation_root" id="menu_open_view_hr_evaluation_tree"
action="open_view_hr_evaluation_tree" groups="base.group_hr_user"/>
<record model="ir.ui.view" id="view_hr_evaluation_interview_form">
<field name="name">hr_evaluation.interview.form</field>
<field name="model">hr.evaluation.interview</field>
<field name="arch" type="xml">
<form string="Interview Appraisal">
<header>
<button string="Cancel Survey" name="survey_req_cancel" type="object"
states="draft,waiting_answer" class="oe_left"/>
<button string="Print Survey" name="action_print_survey" type="object" states='waiting_answer,done' attrs="{'readonly':[('survey_id','=',False)]}"/>
<button string="Send Request" name="survey_req_waiting_answer" type="object"
states="draft" class="oe_highlight"/>
<button string="Answer Survey" class="oe_highlight" name="action_start_survey" type="object" states='waiting_answer' attrs="{'readonly':[('request_id','=',False)]}"/>
<button string="Done" name="survey_req_done" type="object"
states="waiting_answer"/>
<field name="state" widget="statusbar" statusbar_visible="waiting_answer,done"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button string="Send Reminder Email" name="%(mail.action_email_compose_message_wizard)d" type="action"
states="waiting_answer"
context="{'default_body': 'Hello,\n\nKindly post your response for the survey interview.\n\nThanks',
'default_subject': 'Reminder to fill up Survey' }"/>
</div>
<group>
<group>
<field name="evaluation_id" string="Appraisal"/>
<field name="phase_id"/>
<field name="user_to_review_id" readonly="1"/>
</group>
<group>
<field name="user_id" string="Interviewer" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'base.group_hr_manager']}"/>
<field name="deadline"/>
</group>
<group>
<field name="request_id"/>
<field name="survey_id" domain="[('res_model','=','hr_evaluation')]" readonly="1"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_hr_evaluation_interview_tree">
<field name="name">hr_evaluation.interview.tree</field>
<field name="model">hr.evaluation.interview</field>
<field name="arch" type="xml">
<tree string="Interview Appraisal" decoration-bf="message_needaction == True">
<field name="deadline" string="Deadline Date"/>
<field name="survey_id" domain="[('res_model','=','hr_evaluation')]"/>
<field name="user_id" string="Interviewer"/>
<field name="user_to_review_id"/>
<field name="request_id" readonly="1" invisible="True"/>
<button name="action_start_survey" string="Answer Survey" type="object" icon="gtk-execute" attrs="{'readonly':[('request_id','=',False)]}"/>
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(mail.action_email_compose_message_wizard)d" string="Send Reminder Email" icon="terp-mail-message-new" type="action" states="waiting_answer"/>
<field name="state"/>
<field name="message_needaction" invisible="1"/>
<button string="Send Request" name="survey_req_waiting_answer" states="draft" type="object" icon="gtk-yes" />
<button string="Done" name="survey_req_done" states="waiting_answer" type="object" icon="gtk-jump-to" />
</tree>
</field>
</record>
<record id="view_hr_evaluation_interview_search" model="ir.ui.view">
<field name="name">view_hr_evaluation_interview_search</field>
<field name="model">hr.evaluation.interview</field>
<field name="arch" type="xml">
<search string="Search Appraisal">
<field name="user_to_review_id"/>
<field name="user_id" string="Interviewer"/>
<field name="deadline"/>
<field name="state"/>
<filter string="To Do" name="todo" domain="[('state','=','waiting_answer')]"/>
<separator/>
<filter string="Important Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/>
<group expand="0" string="Group By">
<filter string="Interviewer" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Status" name="group_state" domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record id="view_evaluation_calendar" model="ir.ui.view">
<field name="name">Interviews</field>
<field name="model">hr.evaluation.interview</field>
<field name="arch" type="xml">
<calendar string="Interview Request" color="user_to_review_id" date_start="deadline">
<field name="request_id"/>
</calendar>
</field>
</record>
<record model="ir.actions.act_window" id="action_hr_evaluation_interview_tree">
<field name="name">Interviews</field>
<field name="res_model">hr.evaluation.interview</field>
<field name="view_type">form</field>
<field name="view_id" eval="False"/>
<field name="domain" eval="False"/> <!-- Force empty -->
<field name="context">{"search_default_todo":1,"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_hr_evaluation_interview_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new interview request related to a personal evaluation.
</p><p>
Interview requests are usually generated automatically by
Odoo according to an employee's appraisal plan. Each user
receives automatic emails and requests to evaluate their
colleagues periodically.
</p>
</field>
</record>
<record model="ir.actions.act_window.view" id="hr_evaluation_interview_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_hr_evaluation_interview_tree"/>
<field name="act_window_id" ref="action_hr_evaluation_interview_tree"/>
</record>
<record model="ir.actions.act_window.view" id="hr_evaluation_interview_form">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_hr_evaluation_interview_form"/>
<field name="act_window_id" ref="action_hr_evaluation_interview_tree"/>
</record>
<record model="ir.actions.act_window.view" id="action_view_evaluation_calendar">
<field name="sequence" eval="3"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="view_evaluation_calendar"/>
<field name="act_window_id" ref="action_hr_evaluation_interview_tree"/>
</record>
<menuitem name="Interviews" parent="menu_hr_evaluation_root" id="menu_open_hr_evaluation_interview_requests"
action="action_hr_evaluation_interview_tree"/>
<!-- Email Compose message Action-->
<act_window
id="evaluation_reminders" name="Appraisal Reminders"
res_model="mail.compose.message"
src_model="hr.evaluation.interview"
view_type="form" view_mode="form"
target="new" multi="True"
key2="client_action_multi"
context="{'default_composition_mode': 'mass_mail',
'default_body': 'Hello,\n\nKindly post your response for the survey interview.\n\nThanks',
'default_subject': 'Reminder to fill up Survey'}"/>
<record id="hr_evaluation_interview_action_from_department" model="ir.actions.act_window">
<field name="name">Interview Requests</field>
<field name="res_model">hr.evaluation.interview</field>
<field name="view_type">form</field>
<field name="view_id" eval="False"/>
<field name="context">{'search_default_state': 'waiting_answer'}</field>
<field name="domain">[('user_to_review_id.department_id', '=', active_id)]</field>
<field name="search_view_id" ref="view_hr_evaluation_interview_search"/>
</record>
<record id="hr_appraisal_action_from_department" model="ir.actions.act_window">
<field name="name">Appraisal to start</field>
<field name="res_model">hr_evaluation.evaluation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="hr_evaluation.evaluation_search"/>
<field name="context">{'search_default_state': 'draft'}</field>
<field name="domain">[('employee_id.department_id', '=', active_id)]</field>
</record>
</data>
</openerp>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-4
View File
@@ -1,4 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import hr_evaluation_report
@@ -1,78 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from openerp import tools
from openerp.osv import fields, osv
class hr_evaluation_report(osv.Model):
_name = "hr.evaluation.report"
_description = "Evaluations Statistics"
_auto = False
_columns = {
'create_date': fields.datetime('Create Date', readonly=True),
'delay_date': fields.float('Delay to Start', digits=(16, 2), readonly=True),
'overpass_delay': fields.float('Overpassed Deadline', digits=(16, 2), readonly=True),
'deadline': fields.date("Deadline", readonly=True),
'request_id': fields.many2one('survey.user_input', 'Request ID', readonly=True),
'closed': fields.date("Close Date", readonly=True), # TDE FIXME master: rename into date_close
'plan_id': fields.many2one('hr_evaluation.plan', 'Plan', readonly=True),
'employee_id': fields.many2one('hr.employee', "Employee", readonly=True),
'rating': fields.selection([
('0', 'Significantly bellow expectations'),
('1', 'Did not meet expectations'),
('2', 'Meet expectations'),
('3', 'Exceeds expectations'),
('4', 'Significantly exceeds expectations'),
], "Overall Rating", readonly=True),
'nbr': fields.integer('# of Requests', readonly=True), # TDE FIXME master: rename into nbr_requests
'state': fields.selection([
('draft', 'Draft'),
('wait', 'Plan In Progress'),
('progress', 'Final Validation'),
('done', 'Done'),
('cancel', 'Cancelled'),
], 'Status', readonly=True),
}
_order = 'create_date desc'
_depends = {
'hr.evaluation.interview': ['evaluation_id', 'id', 'request_id'],
'hr_evaluation.evaluation': [
'create_date', 'date', 'date_close', 'employee_id', 'plan_id',
'rating', 'state',
],
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'hr_evaluation_report')
cr.execute("""
create or replace view hr_evaluation_report as (
select
min(l.id) as id,
s.create_date as create_date,
s.employee_id,
l.request_id,
s.plan_id,
s.rating,
s.date as deadline,
s.date_close as closed,
count(l.*) as nbr,
s.state,
avg(extract('epoch' from age(s.create_date,CURRENT_DATE)))/(3600*24) as delay_date,
avg(extract('epoch' from age(s.date,CURRENT_DATE)))/(3600*24) as overpass_delay
from
hr_evaluation_interview l
LEFT JOIN
hr_evaluation_evaluation s on (s.id=l.evaluation_id)
GROUP BY
s.create_date,
s.state,
s.employee_id,
s.date,
s.date_close,
l.request_id,
s.rating,
s.plan_id
)
""")
@@ -1,99 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_evaluation_report_pivot" model="ir.ui.view">
<field name="name">hr.evaluation.report.pivot</field>
<field name="model">hr.evaluation.report</field>
<field name="arch" type="xml">
<pivot string="Appraisal Analysis" disable_linking="True">
<field name="employee_id" type="row"/>
<field name="create_date" interval="month" type="col"/>
<field name="nbr" type="measure"/>
</pivot>
</field>
</record>
<record id="view_evaluation_report_graph" model="ir.ui.view">
<field name="name">hr.evaluation.report.graph</field>
<field name="model">hr.evaluation.report</field>
<field name="arch" type="xml">
<graph string="Appraisal Analysis">
<field name="employee_id" type="row"/>
<field name="create_date" interval="month" type="col"/>
<field name="nbr" type="measure"/>
</graph>
</field>
</record>
<record id="view_evaluation_report_search" model="ir.ui.view">
<field name="name">hr.evaluation.report.search</field>
<field name="model">hr.evaluation.report</field>
<field name="arch" type="xml">
<search string="Appraisal Analysis">
<filter string="In Progress" domain="[('state', '=' ,'wait')]" help = "In progress Evaluations"/>
<filter string="Final Validation" domain="[('state','=','progress')]" help = "Final Validation Evaluations"/>
<filter string="Done" domain="[('state','=','done')]"/>
<field name="employee_id"/>
<field name="plan_id"/>
<group expand="0" string="Extended Filters...">
<field name="rating"/>
<field name="deadline"/>
<field name="state"/>
<field name="create_date"/>
</group>
<group expand="1" string="Group By">
<filter string="Employee" name="employee" context="{'group_by':'employee_id'}"/>
<filter string="Plan" context="{'group_by':'plan_id'}"/>
<filter string="Appreciation" context="{'group_by':'rating'}"/>
<filter string="Status" context="{'group_by':'state'}"/>
<separator/>
<filter string="Month" context="{'group_by':'create_date:month'}" help="Creation Month"/>
</group>
</search>
</field>
</record>
<record id="action_evaluation_report_all" model="ir.actions.act_window">
<field name="name">Appraisal Analysis</field>
<field name="res_model">hr.evaluation.report</field>
<field name="view_type">form</field>
<field name="view_mode">pivot,graph</field>
<field name="context">{'search_default_year':1,'search_default_month':1,'search_default_employee':1}</field>
<field name="search_view_id" ref="view_evaluation_report_search"/>
</record>
<record id="action_evaluation_report_filtered" model="ir.actions.act_window">
<field name="name">Appraisal Analysis</field>
<field name="res_model">hr.evaluation.report</field>
<field name="view_type">form</field>
<field name="view_mode">pivot,graph</field>
<field name="context">{
'search_default_year':1,
'search_default_month':1,
'search_default_employee':1,
'search_default_department_id': [active_id],
'default_department_id': active_id
}
</field>
<field name="search_view_id" ref="view_evaluation_report_search"/>
</record>
<record model="ir.actions.act_window.view" id="action_evaluation_view_report_pivot">
<field name="sequence" eval="2"/>
<field name="view_mode">pivot</field>
<field name="view_id" ref="view_evaluation_report_pivot"/>
<field name="act_window_id" ref="action_evaluation_report_all"/>
</record>
<record model="ir.actions.act_window.view" id="action_evaluation_view_report_graph">
<field name="sequence" eval="2"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="view_evaluation_report_graph"/>
<field name="act_window_id" ref="action_evaluation_report_all"/>
</record>
<menuitem id="menu_hr_evaluation_report" parent="menu_hr_evaluation_root" sequence="99"
name="Reports" action="action_evaluation_report_all" groups="base.group_hr_manager"/>
</data>
</openerp>
@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<!-- make Employee users Survey users -->
<record id="base.group_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('base.group_survey_user'))]"/>
</record>
<record id="survey.menu_surveys" model="ir.ui.menu">
<field eval="[(4,ref('base.group_hr_manager'))]" name="groups_id"/>
</record>
<record id="survey.menu_surveys_configuration" model="ir.ui.menu">
<field eval="[(4,ref('base.group_hr_manager'))]" name="groups_id"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_comp_rule" model="ir.rule">
<field name="name">Evaluation Plan multi company rule</field>
<field name="model_id" ref="model_hr_evaluation_plan"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="hr_evaluation_plan_phase_comp_rule" model="ir.rule">
<field name="name">Evaluation Plan Phase multi company rule</field>
<field name="model_id" ref="model_hr_evaluation_plan_phase"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="hr_employee_interview" model="ir.rule">
<field name="name">Employee Interview</field>
<field ref="model_hr_evaluation_interview" name="model_id"/>
<field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field>
<field eval="False" name="global"/>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="hr_employee_interview_hr" model="ir.rule">
<field name="name">Employee Interview - HR</field>
<field ref="model_hr_evaluation_interview" name="model_id"/>
<field name="domain_force">[(1,'=',1)]</field>
<field eval="False" name="global"/>
<field name="groups" eval="[(4, ref('base.group_hr_user'))]"/>
</record>
</data>
</openerp>
@@ -1,25 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_evaluation_evaluation_user,hr_evaluation.evaluation.user,model_hr_evaluation_evaluation,base.group_hr_user,1,1,1,1
access_hr_evaluation_evaluation_employee,hr_evaluation.evaluation.employee,model_hr_evaluation_evaluation,base.group_user,1,1,1,0
access_hr_evaluation_plan_user,hr_evaluation.plan.user,model_hr_evaluation_plan,base.group_hr_user,1,1,1,1
access_hr_evaluation_plan_phase_user,hr_evaluation.plan.phase.user,model_hr_evaluation_plan_phase,base.group_hr_user,1,1,1,1
access_hr_evaluation_interview_user,hr.evaluation.interview.user,model_hr_evaluation_interview,base.group_hr_user,1,1,1,1
access_hr_evaluation_interview_employee,hr.evaluation.interview.employee,model_hr_evaluation_interview,base.group_user,1,1,1,0
access_hr_evaluation_report,hr.evaluation.report,model_hr_evaluation_report,base.group_hr_manager,1,1,1,1
access_survey_hr_manager,survey.hr.manager,survey.model_survey_survey,base.group_hr_manager,1,1,1,1
access_survey_question_hr_manager,survey.question,survey.model_survey_question,base.group_hr_manager,1,1,1,1
access_survey_question_column_heading_hr_manager,survey.question.column.heading,survey.model_survey_label,base.group_hr_manager,1,1,1,1
access_survey_response_hr_manager,survey.response,survey.model_survey_user_input,base.group_hr_manager,1,1,1,1
access_survey_response_line_hr_manager,survey.response.line,survey.model_survey_user_input_line,base.group_hr_manager,1,1,1,1
access_survey_question_hr_user,survey.question.hr.user,survey.model_survey_question,base.group_hr_user,1,1,1,0
access_survey_page_hr_user,survey.page.hr.user,survey.model_survey_page,base.group_hr_user,1,1,1,1
access_survey_response_hr_user,survey.response.hr.user,survey.model_survey_user_input,base.group_hr_user,1,1,1,0
access_survey_question_column_heading_hr_user,survey.question.column.heading.hr.user,survey.model_survey_label,base.group_hr_user,1,1,1,0
access_survey_response_line_hr_user,survey.response.line.hr.user,survey.model_survey_user_input_line,base.group_hr_user,1,1,1,0
access_calendar_attendee_survey_user,base.calendar.calendar.attendee.survey.user,calendar.model_calendar_attendee,base.group_survey_user,1,1,1,0
access_survey_hr_employee,survey.hr.employee,survey.model_survey_survey,base.group_user,1,1,0,0
access_survey_page_hr_employee,survey.page.hr.employee,survey.model_survey_page,base.group_user,1,0,0,0
access_survey_question_hr_employee,survey.question.employee,survey.model_survey_question,base.group_user,1,0,0,0
access_survey_response_hr_employee,survey.response.employee,survey.model_survey_user_input,base.group_user,1,1,1,0
access_survey_question_column_heading_hr_employee,survey.question.column.heading.employee,survey.model_survey_label,base.group_user,1,0,0,0
access_survey_response_line_hr_employee,survey.response.line.employee,survey.model_survey_user_input_line,base.group_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_evaluation_evaluation_user hr_evaluation.evaluation.user model_hr_evaluation_evaluation base.group_hr_user 1 1 1 1
3 access_hr_evaluation_evaluation_employee hr_evaluation.evaluation.employee model_hr_evaluation_evaluation base.group_user 1 1 1 0
4 access_hr_evaluation_plan_user hr_evaluation.plan.user model_hr_evaluation_plan base.group_hr_user 1 1 1 1
5 access_hr_evaluation_plan_phase_user hr_evaluation.plan.phase.user model_hr_evaluation_plan_phase base.group_hr_user 1 1 1 1
6 access_hr_evaluation_interview_user hr.evaluation.interview.user model_hr_evaluation_interview base.group_hr_user 1 1 1 1
7 access_hr_evaluation_interview_employee hr.evaluation.interview.employee model_hr_evaluation_interview base.group_user 1 1 1 0
8 access_hr_evaluation_report hr.evaluation.report model_hr_evaluation_report base.group_hr_manager 1 1 1 1
9 access_survey_hr_manager survey.hr.manager survey.model_survey_survey base.group_hr_manager 1 1 1 1
10 access_survey_question_hr_manager survey.question survey.model_survey_question base.group_hr_manager 1 1 1 1
11 access_survey_question_column_heading_hr_manager survey.question.column.heading survey.model_survey_label base.group_hr_manager 1 1 1 1
12 access_survey_response_hr_manager survey.response survey.model_survey_user_input base.group_hr_manager 1 1 1 1
13 access_survey_response_line_hr_manager survey.response.line survey.model_survey_user_input_line base.group_hr_manager 1 1 1 1
14 access_survey_question_hr_user survey.question.hr.user survey.model_survey_question base.group_hr_user 1 1 1 0
15 access_survey_page_hr_user survey.page.hr.user survey.model_survey_page base.group_hr_user 1 1 1 1
16 access_survey_response_hr_user survey.response.hr.user survey.model_survey_user_input base.group_hr_user 1 1 1 0
17 access_survey_question_column_heading_hr_user survey.question.column.heading.hr.user survey.model_survey_label base.group_hr_user 1 1 1 0
18 access_survey_response_line_hr_user survey.response.line.hr.user survey.model_survey_user_input_line base.group_hr_user 1 1 1 0
19 access_calendar_attendee_survey_user base.calendar.calendar.attendee.survey.user calendar.model_calendar_attendee base.group_survey_user 1 1 1 0
20 access_survey_hr_employee survey.hr.employee survey.model_survey_survey base.group_user 1 1 0 0
21 access_survey_page_hr_employee survey.page.hr.employee survey.model_survey_page base.group_user 1 0 0 0
22 access_survey_question_hr_employee survey.question.employee survey.model_survey_question base.group_user 1 0 0 0
23 access_survey_response_hr_employee survey.response.employee survey.model_survey_user_input base.group_user 1 1 1 0
24 access_survey_question_column_heading_hr_employee survey.question.column.heading.employee survey.model_survey_label base.group_user 1 0 0 0
25 access_survey_response_line_hr_employee survey.response.line.employee survey.model_survey_user_input_line base.group_user 1 1 1 0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

@@ -1,674 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Appraisal form -->
<record model="survey.survey" id="appraisal_form">
<field name="title">Employee Appraisal Form</field>
<field name="stage_id" ref="survey.stage_permanent" />
<field name="auth_required" eval="True" />
<field name="users_can_go_back" eval="True" />
<field name="description">&lt;p&gt; &lt;/p&gt;</field>
<field name="thank_you_message">&lt;p&gt; &lt;/p&gt;</field>
</record>
<!-- Page 1 -->
<record model="survey.page" id="appraisal_1">
<field name="title">Employee Appraisal Form</field>
<field name="survey_id" ref="appraisal_form" />
<field name="sequence">1</field>
<field name="description">&lt;h2&gt;Overall Purpose Of Employee Appraisal&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;To initiate a clear and open communication of performance expectations
&lt;li&gt;To assist employees in their professional growth, through the identification of strengths and opportunities for
development&lt;/ul&gt;
&lt;h2&gt;At the outset of the appraisal time period&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;It is the joint responsibility of the employee and the supervisor (appraiser) to establish a feasible work plan for the
coming year, including major employee responsibilities and corresponding benchmarks against which results will be
evaluated.
&lt;li&gt;Critical or key elements of performance and professional development needs (if any), should also be noted at this time&lt;/ul&gt;
&lt;h2&gt;At the conclusion of the appraisal time period&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;The employee will be responsible for completing a draft of the Appraisal Form as a tool for self-appraisal and a starting
point for the supervisor’s evaluation. The employee can add examples of achievements for each criterion.
Once the form had been filled, the employee send it to his supervisor.
&lt;li&gt;It is the primary responsibility of the supervisor to gather the necessary input from the appropriate sources of feedback
(internal and/or external customers, peers). In case of collaboration with Odoo SA Belgium, the supervisor must
receive completed evaluation form from the employee's Belgian project manager.
&lt;li&gt;The supervisor synthesizes and integrates all input into the completed appraisal. He motivates his evaluation in the ad
hoc fields.
&lt;li&gt;The employee may choose to offer comments or explanation regarding the completed review.
&lt;li&gt;The supervisor send the form to the HR department in India and in Belgium&lt;/ul&gt;</field>
</record>
<record model="survey.question" id="appraisal_1_1">
<field name="page_id" ref="appraisal_1" />
<field name="sequence">1</field>
<field name="question">Name</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="appraisal_1_2">
<field name="page_id" ref="appraisal_1" />
<field name="sequence">2</field>
<field name="question">Position Title</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="appraisal_1_3">
<field name="page_id" ref="appraisal_1" />
<field name="sequence">3</field>
<field name="question">Appraisal for Period</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="appraisal_1_4">
<field name="page_id" ref="appraisal_1" />
<field name="sequence">4</field>
<field name="question">Date of review</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="appraisal_1_5">
<field name="page_id" ref="appraisal_1" />
<field name="sequence">5</field>
<field name="question">Appraiser</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<!-- Page 2 -->
<record model="survey.page" id="appraisal_2">
<field name="title">Work Plan</field>
<field name="survey_id" ref="appraisal_form" />
<field name="sequence">2</field>
<field name="description">&lt;p&gt; &lt;/p&gt;</field>
</record>
<record model="survey.question" id="appraisal_2_1">
<field name="page_id" ref="appraisal_2" />
<field name="sequence">1</field>
<field name="question">Objectives</field>
<field name="type">free_text</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="appraisal_2_2">
<field name="page_id" ref="appraisal_2" />
<field name="sequence">2</field>
<field name="question">Results</field>
<field name="type">free_text</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="appraisal_2_3">
<field name="page_id" ref="appraisal_2" />
<field name="sequence">3</field>
<field name="question">Additional Comments</field>
<field name="type">free_text</field>
</record>
<!-- Page 3 -->
<record model="survey.page" id="appraisal_3">
<field name="title">Employee Performance in Key Areas</field>
<field name="survey_id" ref="appraisal_form" />
<field name="sequence">3</field>
<field name="description">The appraiser should rate the employee’s major work accomplishments and performance according to the metric provided
below:&lt;ol&gt;
&lt;li&gt; Significantly exceeds standards and expectations required of the position
&lt;li&gt; Exceeds standards and expectations
&lt;li&gt; Meet standards and expectations
&lt;li&gt; Did not meet standards and expectations
&lt;li&gt; Significantly below standards and expectations&lt;/ol&gt;</field>
</record>
<record model="survey.question" id="appraisal_3_1">
<field name="page_id" ref="appraisal_3" />
<field name="sequence">1</field>
<field name="question">Subject</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.label" id="acol_3_1_1">
<field name="question_id" ref="appraisal_3_1"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="acol_3_1_2">
<field name="question_id" ref="appraisal_3_1"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="acol_3_1_3">
<field name="question_id" ref="appraisal_3_1"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="acol_3_1_4">
<field name="question_id" ref="appraisal_3_1"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="acol_3_1_5">
<field name="question_id" ref="appraisal_3_1"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="arow_3_1_1">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">1</field>
<field name="value">Ability to cope with multidisciplinarity of team</field>
</record>
<record model="survey.label" id="arow_3_1_2">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">2</field>
<field name="value">Enthusiasm &amp; implication toward projects/assignments</field>
</record>
<record model="survey.label" id="arow_3_1_3">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">3</field>
<field name="value">Compliance to internal rules and processes (timesheets completion, etc.)</field>
</record>
<record model="survey.label" id="arow_3_1_4">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">4</field>
<field name="value">Team spirit: ability to work efficiently with peers, manage the conflicts with diplomacy</field>
</record>
<record model="survey.label" id="arow_3_1_5">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">5</field>
<field name="value">Initiative and self autonomy</field>
</record>
<record model="survey.label" id="arow_3_1_6">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">6</field>
<field name="value">Ability to follow and complete work as instructed</field>
</record>
<record model="survey.label" id="arow_3_1_7">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">7</field>
<field name="value">Decision making</field>
</record>
<record model="survey.label" id="arow_3_1_8">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">8</field>
<field name="value">Customer commitment</field>
</record>
<record model="survey.label" id="arow_3_1_9">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">9</field>
<field name="value">Communication skills (written &amp; verbally): clearness, concision, exactitude</field>
</record>
<record model="survey.label" id="arow_3_1_10">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">10</field>
<field name="value">Technical skills regarding to the job requirements</field>
</record>
<record model="survey.label" id="arow_3_1_11">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">11</field>
<field name="value">Analytical and synthetic mind</field>
</record>
<record model="survey.label" id="arow_3_1_12">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">12</field>
<field name="value">Promptness and attendance record</field>
</record>
<record model="survey.label" id="arow_3_1_13">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">13</field>
<field name="value">Adaptability: Ability to adapt oneself to organizational changes while keeping efficiency</field>
</record>
<record model="survey.label" id="arow_3_1_14">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">14</field>
<field name="value">Creativity and forward looking aptitude</field>
</record>
<record model="survey.label" id="arow_3_1_15">
<field name="question_id_2" ref="appraisal_3_1"/>
<field name="sequence">15</field>
<field name="value">Time management: projects/tasks are completed on time</field>
</record>
<record model="survey.question" id="appraisal_3_2">
<field name="page_id" ref="appraisal_3" />
<field name="sequence">2</field>
<field name="question">Supervisors only</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="acol_3_2_1">
<field name="question_id" ref="appraisal_3_2"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="acol_3_2_2">
<field name="question_id" ref="appraisal_3_2"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="acol_3_2_3">
<field name="question_id" ref="appraisal_3_2"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="acol_3_2_4">
<field name="question_id" ref="appraisal_3_2"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="acol_3_2_5">
<field name="question_id" ref="appraisal_3_2"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="arow_3_2_1">
<field name="question_id_2" ref="appraisal_3_2"/>
<field name="sequence">1</field>
<field name="value">Results of the bottom-up survey and mitigation actions to face technical, organizational, structural and/or relational issues</field>
</record>
<record model="survey.label" id="arow_3_2_2">
<field name="question_id_2" ref="appraisal_3_2"/>
<field name="sequence">2</field>
<field name="value">Delegation: Ability to efficiently assign tasks to other people</field>
</record>
<record model="survey.label" id="arow_3_2_3">
<field name="question_id_2" ref="appraisal_3_2"/>
<field name="sequence">3</field>
<field name="value">Leadership: create a challenging and motivating work environment aligned with the company's strategy</field>
</record>
<record model="survey.label" id="arow_3_2_4">
<field name="question_id_2" ref="appraisal_3_2"/>
<field name="sequence">4</field>
<field name="value">Leadership: sustain subordinates in their professional growth</field>
</record>
<record model="survey.label" id="arow_3_2_5">
<field name="question_id_2" ref="appraisal_3_2"/>
<field name="sequence">5</field>
<field name="value">Ability to manage planning resources, risks, budgets and deadlines</field>
</record>
<!-- Page 4 -->
<record model="survey.page" id="appraisal_4">
<field name="title">Professional Development and Performance Plan</field>
<field name="survey_id" ref="appraisal_form" />
<field name="sequence">4</field>
<field name="description">&lt;p&gt;Identify professional, performance, or project objectives you recommend for employee’s continued career development
over the coming year.&lt;/p&gt;</field>
</record>
<record model="survey.question" id="appraisal_4_1">
<field name="page_id" ref="appraisal_4" />
<field name="sequence">1</field>
<field name="question">Professional Development Objectives</field>
<field name="type">free_text</field>
</record>
<record model="survey.question" id="appraisal_4_2">
<field name="page_id" ref="appraisal_4" />
<field name="sequence">2</field>
<field name="question">Personal Performance Objectives</field>
<field name="type">free_text</field>
</record>
<record model="survey.question" id="appraisal_4_3">
<field name="page_id" ref="appraisal_4" />
<field name="sequence">3</field>
<field name="question">Project Objectives</field>
<field name="type">free_text</field>
</record>
<!-- Page 5 -->
<record model="survey.page" id="appraisal_5">
<field name="title">Employee Comments</field>
<field name="survey_id" ref="appraisal_form" />
<field name="description">&lt;p&gt;&lt;/p&gt;</field>
<field name="sequence">5</field>
</record>
<record model="survey.question" id="appraisal_5_1">
<field name="page_id" ref="appraisal_5" />
<field name="sequence">1</field>
<field name="question">Use the following space to make any comments regarding the above performance evaluation.</field>
<field name="type">free_text</field>
</record>
<!-- Employee Opinion form -->
<record model="survey.survey" id="opinion_form">
<field name="title">Employee Opinion Form</field>
<field name="stage_id" ref="survey.stage_permanent" />
<field name="auth_required" eval="True" />
<field name="users_can_go_back" eval="True" />
<field name="description">&lt;p&gt; &lt;/p&gt;</field>
<field name="thank_you_message">&lt;p&gt; &lt;/p&gt;</field>
</record>
<!-- Page 1 -->
<record model="survey.page" id="opinion_1">
<field name="title">Appraisal Process</field>
<field name="survey_id" ref="opinion_form" />
<field name="sequence">1</field>
<field name="description">&lt;h2&gt;At the supervisor's appraisal date&lt;/h2&gt;
&lt;p&gt;His direct reports will be invited through Odoo to express a feedback on their supervisor's leadership and to give their opinion about their own engagement and effectiveness, the continuous improvement and openness in action in thecompany...&lt;/p&gt;
&lt;p&gt;The employees will send back their anonymous answers to Odoo. The data will be handled by the HR manager and a brief summary of the data will be sent to the concerned supervisor, to his team and to the supervisor's supervisor.&lt;/p&gt;
&lt;p&gt;The appraiser should rate the employee's major work accomplishments and performance according to the metric provided below
&lt;ol&gt;
&lt;li&gt;Significantly exceeds standards and expectations required of the position&lt;/li&gt;
&lt;li&gt;Exceeds standards and expectations&lt;/li&gt;
&lt;li&gt;Meet standards and expectations&lt;/li&gt;
&lt;li&gt;Did not meet standards and expectations&lt;/li&gt;
&lt;li&gt;Significantly below standards and expectations&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</field>
</record>
<record model="survey.question" id="opinion_1_1">
<field name="page_id" ref="opinion_1" />
<field name="sequence">1</field>
<field name="question">Name of your direct supervisor</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<record model="survey.question" id="opinion_1_2">
<field name="page_id" ref="opinion_1" />
<field name="sequence">2</field>
<field name="question">Date</field>
<field name="type">textbox</field>
<field name="constr_mandatory" eval="True" />
</record>
<!-- Page 2 -->
<record model="survey.page" id="opinion_2">
<field name="title">Evaluation</field>
<field name="survey_id" ref="opinion_form" />
<field name="sequence">2</field>
<field name="description">&lt;p&gt; &lt;/p&gt;</field>
</record>
<record model="survey.question" id="opinion_2_1">
<field name="page_id" ref="opinion_2" />
<field name="sequence">1</field>
<field name="question">Engagement</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="opcol_2_1_1">
<field name="question_id" ref="opinion_2_1"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="opcol_2_1_2">
<field name="question_id" ref="opinion_2_1"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="opcol_2_1_3">
<field name="question_id" ref="opinion_2_1"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="opcol_2_1_4">
<field name="question_id" ref="opinion_2_1"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="opcol_2_1_5">
<field name="question_id" ref="opinion_2_1"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="oprow_2_1_1">
<field name="question_id_2" ref="opinion_2_1"/>
<field name="sequence">1</field>
<field name="value">I am proud to tell others I work here</field>
</record>
<record model="survey.label" id="oprow_2_1_2">
<field name="question_id_2" ref="opinion_2_1"/>
<field name="sequence">2</field>
<field name="value">My job provides me with a sense of personal accomplishment</field>
</record>
<record model="survey.label" id="oprow_2_1_3">
<field name="question_id_2" ref="opinion_2_1"/>
<field name="sequence">3</field>
<field name="value">I would prefer to remain with this company even if a comparable job were available in another company</field>
</record>
<record model="survey.label" id="oprow_2_1_4">
<field name="question_id_2" ref="opinion_2_1"/>
<field name="sequence">4</field>
<field name="value">Taking everything into account, how satisfied are you with your current job?</field>
</record>
<record model="survey.label" id="oprow_2_1_5">
<field name="question_id_2" ref="opinion_2_1"/>
<field name="sequence">5</field>
<field name="value">I am willing to put in a great deal of effort beyond what is expected to help my workgroup succeed</field>
</record>
<record model="survey.question" id="opinion_2_2">
<field name="page_id" ref="opinion_2" />
<field name="sequence">2</field>
<field name="question">Leadership</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="opcol_2_2_1">
<field name="question_id" ref="opinion_2_2"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="opcol_2_2_2">
<field name="question_id" ref="opinion_2_2"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="opcol_2_2_3">
<field name="question_id" ref="opinion_2_2"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="opcol_2_2_4">
<field name="question_id" ref="opinion_2_2"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="opcol_2_2_5">
<field name="question_id" ref="opinion_2_2"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="oprow_2_2_1">
<field name="question_id_2" ref="opinion_2_2"/>
<field name="sequence">1</field>
<field name="value">Demonstrates genuine concern for me as a person</field>
</record>
<record model="survey.label" id="oprow_2_2_2">
<field name="question_id_2" ref="opinion_2_2"/>
<field name="sequence">2</field>
<field name="value">I consistently acquire new knowledge, skills or understanding through contact with my supervisor. He helps me growing my compete</field>
</record>
<record model="survey.label" id="oprow_2_2_3">
<field name="question_id_2" ref="opinion_2_2"/>
<field name="sequence">3</field>
<field name="value">Listens and takes into account all ideas and do his best to put in place the best of these</field>
</record>
<record model="survey.label" id="oprow_2_2_4">
<field name="question_id_2" ref="opinion_2_2"/>
<field name="sequence">4</field>
<field name="value">I believe the information that I get from the person I report to.</field>
</record>
<record model="survey.question" id="opinion_2_3">
<field name="page_id" ref="opinion_2" />
<field name="sequence">3</field>
<field name="question">Effectiveness</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="opcol_2_3_1">
<field name="question_id" ref="opinion_2_3"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="opcol_2_3_2">
<field name="question_id" ref="opinion_2_3"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="opcol_2_3_3">
<field name="question_id" ref="opinion_2_3"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="opcol_2_3_4">
<field name="question_id" ref="opinion_2_3"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="opcol_2_3_5">
<field name="question_id" ref="opinion_2_3"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="oprow_2_3_1">
<field name="question_id_2" ref="opinion_2_3"/>
<field name="sequence">1</field>
<field name="value">I'm efficient at work and my achievements are successful</field>
</record>
<record model="survey.label" id="oprow_2_3_2">
<field name="question_id_2" ref="opinion_2_3"/>
<field name="sequence">2</field>
<field name="value">I have enough work</field>
</record>
<record model="survey.label" id="oprow_2_3_3">
<field name="question_id_2" ref="opinion_2_3"/>
<field name="sequence">3</field>
<field name="value">I mostly work on value-added tasks for the company, the products or the services</field>
</record>
<record model="survey.question" id="opinion_2_4">
<field name="page_id" ref="opinion_2" />
<field name="sequence">4</field>
<field name="question">Continuous Improvement</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="opcol_2_4_1">
<field name="question_id" ref="opinion_2_4"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="opcol_2_4_2">
<field name="question_id" ref="opinion_2_4"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="opcol_2_4_3">
<field name="question_id" ref="opinion_2_4"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="opcol_2_4_4">
<field name="question_id" ref="opinion_2_4"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="opcol_2_4_5">
<field name="question_id" ref="opinion_2_4"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="oprow_2_4_1">
<field name="question_id_2" ref="opinion_2_4"/>
<field name="sequence">1</field>
<field name="value">My work contributes towards the continuous improvement of the company, our services or products</field>
</record>
<record model="survey.label" id="oprow_2_4_2">
<field name="question_id_2" ref="opinion_2_4"/>
<field name="sequence">2</field>
<field name="value">What I did several months ago is still of use to the company, the services or the products today</field>
</record>
<record model="survey.label" id="oprow_2_4_3">
<field name="question_id_2" ref="opinion_2_4"/>
<field name="sequence">3</field>
<field name="value">Overall, I believe the quality of products and/or services my workgroup delivers is improving</field>
</record>
<record model="survey.label" id="oprow_2_4_4">
<field name="question_id_2" ref="opinion_2_4"/>
<field name="sequence">4</field>
<field name="value">Our workgroup identifies and reduces waste of time in our activities and processes</field>
</record>
<record model="survey.question" id="opinion_2_5">
<field name="page_id" ref="opinion_2" />
<field name="sequence">5</field>
<field name="question">Openness</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="opcol_2_5_1">
<field name="question_id" ref="opinion_2_5"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="opcol_2_5_2">
<field name="question_id" ref="opinion_2_5"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="opcol_2_5_3">
<field name="question_id" ref="opinion_2_5"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="opcol_2_5_4">
<field name="question_id" ref="opinion_2_5"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="opcol_2_5_5">
<field name="question_id" ref="opinion_2_5"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="oprow_2_5_1">
<field name="question_id_2" ref="opinion_2_5"/>
<field name="sequence">1</field>
<field name="value">I know the company's values and live them</field>
</record>
<record model="survey.label" id="oprow_2_5_2">
<field name="question_id_2" ref="opinion_2_5"/>
<field name="sequence">2</field>
<field name="value">My best achievements have been communicated to the community, internally or to customers</field>
</record>
<record model="survey.question" id="opinion_2_6">
<field name="page_id" ref="opinion_2" />
<field name="sequence">6</field>
<field name="question">Miscellaneous</field>
<field name="type">matrix</field>
<field name="matrix_subtype">simple</field>
</record>
<record model="survey.label" id="opcol_2_6_1">
<field name="question_id" ref="opinion_2_6"/>
<field name="sequence">1</field>
<field name="value">1</field>
</record>
<record model="survey.label" id="opcol_2_6_2">
<field name="question_id" ref="opinion_2_6"/>
<field name="sequence">2</field>
<field name="value">2</field>
</record>
<record model="survey.label" id="opcol_2_6_3">
<field name="question_id" ref="opinion_2_6"/>
<field name="sequence">3</field>
<field name="value">3</field>
</record>
<record model="survey.label" id="opcol_2_6_4">
<field name="question_id" ref="opinion_2_6"/>
<field name="sequence">4</field>
<field name="value">4</field>
</record>
<record model="survey.label" id="opcol_2_6_5">
<field name="question_id" ref="opinion_2_6"/>
<field name="sequence">5</field>
<field name="value">5</field>
</record>
<record model="survey.label" id="oprow_2_6_1">
<field name="question_id_2" ref="opinion_2_6"/>
<field name="sequence">1</field>
<field name="value">Actions by Executive management show genuine interest in the well-being of employees</field>
</record>
<record model="survey.label" id="oprow_2_6_2">
<field name="question_id_2" ref="opinion_2_6"/>
<field name="sequence">2</field>
<field name="value">I have the same opportunity to succeed as others with similar experiences, performance and educational background</field>
</record>
<record model="survey.label" id="oprow_2_6_3">
<field name="question_id_2" ref="opinion_2_6"/>
<field name="sequence">3</field>
<field name="value">Compared to similar jobs in other companies where I could work, my total compensation...</field>
</record>
<record model="survey.label" id="oprow_2_6_4">
<field name="question_id_2" ref="opinion_2_6"/>
<field name="sequence">4</field>
<field name="value">I understand the company strategy and how my workgroup supports it</field>
</record>
<record model="survey.question" id="opinion_2_7">
<field name="page_id" ref="opinion_2" />
<field name="sequence">7</field>
<field name="question">Additional comments</field>
<field name="type">free_text</field>
</record>
</data>
</openerp>
@@ -1,6 +0,0 @@
# -
# !record {model: hr.employee, id: hr.employee_fp, view: False}:
# evaluation_plan_id: hr_evaluation_plan_managersevaluationplan0
# -
# !record {model: hr_evaluation.evaluation, id: hr_evaluation_evaluation_0, view: False}:
# plan_id: hr_evaluation.hr_evaluation_plan_managersevaluationplan0
@@ -1,103 +0,0 @@
# -
# I check that state of "Employee Evaluation" survey is Open.
# -
# !assert {model: survey.survey, id: appraisal_form, severity: error, string: Survey should be in 'open' state}:
# - state == 'open'
# -
# I start the evaluation process by click on "Start Evaluation" button.
# -
# !python {model: hr_evaluation.evaluation}: |
# self.button_plan_in_progress(cr, uid, [ref('hr_evaluation_evaluation_0')])
# -
# I check that state is "Plan in progress".
# -
# !assert {model: hr_evaluation.evaluation, id: hr_evaluation_evaluation_0, severity: error, string: Evaluation should be 'Plan in progress' state}:
# - state == 'wait'
# -
# I find a mistake on evaluation form. So I cancel the evaluation and again start it.
# -
# !python {model: hr_evaluation.evaluation}: |
# evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0') , context)
# self.button_cancel(cr, uid, [ref('hr_evaluation_evaluation_0')])
# assert evaluation.state == 'cancel', 'Evaluation should be in cancel state'
# self.button_draft(cr, uid, [ref('hr_evaluation_evaluation_0')])
# evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0') , context)
# assert evaluation.state == 'draft', 'Evaluation should be in draft state'
# self.button_plan_in_progress(cr, uid, [ref('hr_evaluation_evaluation_0')])
# -
# I check that state is "Plan in progress" and "Interview Request" record is created
# -
# !python {model: hr_evaluation.evaluation}: |
# interview_obj = self.pool.get('hr.evaluation.interview')
# evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0') , context)
# assert evaluation.state == 'wait', "Evaluation should be 'Plan in progress' state"
# interview_ids = interview_obj.search(cr, uid, [('evaluation_id','=', ref('hr_evaluation_evaluation_0'))])
# assert len(interview_ids), "Interview evaluation survey not created"
# -
# Give answer of the first page in "Employee Evaluation" survey.
# -
# !python {model: survey.question.wiz}: |
# name_wiz_obj=self.pool.get('survey.name.wiz')
# interview_obj = self.pool.get('hr.evaluation.interview')
# interview_ids = interview_obj.search(cr, uid, [('evaluation_id','=', ref('hr_evaluation_evaluation_0'))])
# assert len(interview_ids), "Interview evaluation survey not created"
# ctx = {'active_model':'hr.evaluation.interview', 'active_id': interview_ids[0], 'active_ids': [interview_ids], 'survey_id': ref("survey_2")}
# name_id = name_wiz_obj.create(cr, uid, {'survey_id': ref("survey_2")})
# ctx ["sur_name_id"] = name_id
# self.create(cr, uid, {str(ref("survey_question_2")) +"_" +str(ref("survey_answer_1")) + "_multi" :'tpa',
# str(ref("survey_question_2")) +"_" +str(ref("survey_answer_10")) + "_multi" :'application eng',
# str(ref("survey_question_2")) +"_" +str(ref("survey_answer_20")) + "_multi" :'3',
# str(ref("survey_question_2")) +"_" +str(ref("survey_answer_25")) + "_multi" :'2011-12-02 16:42:00',
# str(ref("survey_question_2")) +"_" +str(ref("survey_answer_43")) + "_multi" :'HR',
# }, context = ctx)
# -
# I close this Evaluation survey by giving answer of questions.
# -
# !python {model: hr_evaluation.evaluation}: |
# interview_obj = self.pool.get('hr.evaluation.interview')
# evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0'))
# interview_obj.survey_req_done(cr, uid, [r.id for r in evaluation.survey_request_ids])
# for survey in evaluation.survey_request_ids:
# interview = interview_obj.browse(cr, uid, survey.id, context)
# assert interview.state == "done", 'survey must be in done state'
# -
# I print the evaluation.
# -
# !python {model: hr_evaluation.evaluation}: |
# evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0'))
# self.pool.get('hr.evaluation.interview').action_print_survey(cr, uid, [r.id for r in evaluation.survey_request_ids])
# -
# I click on "Final Validation" button to finalise evaluation.
# -
# !python {model: hr_evaluation.evaluation}: |
# self.button_final_validation(cr, uid, [ref("hr_evaluation_evaluation_0")])
# -
# I check that state is "Waiting Appreciation".
# -
# !assert {model: hr_evaluation.evaluation, id: hr_evaluation_evaluation_0}:
# - state == 'progress'
# -
# Give Rating "Meet expectations" by selecting overall Rating.
# -
# !record {model: hr_evaluation.evaluation, id: hr_evaluation_evaluation_0}:
# rating: '2'
# -
# I close this Evaluation by click on "Done" button of this wizard.
# -
# !python {model: hr_evaluation.evaluation}: |
# self.button_done(cr, uid, [ref("hr_evaluation_evaluation_0")])
# -
# I check that state of Evaluation is done.
# -
# !assert {model: hr_evaluation.evaluation, id: hr_evaluation_evaluation_0, severity: error, string: Evaluation should be in done state}:
# - state == 'done'
# -
# Print Evaluations Statistics Report
# -
# !python {model: hr.evaluation.report}: |
# import os, time
# from openerp import tools
# ctx={}
# data_dict={'state': 'done', 'rating': 2, 'employee_id': ref("hr.employee_fp")}
# from openerp.tools import test_reports
# test_reports.try_report_action(cr, uid, 'hr_evaluation_evaluation_0',wiz_data=data_dict, context=ctx, our_module='hr_evaluation')