[REM] hr_evaluation: deprecated by hr_appraisal
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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')
|
||||
@@ -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>
|
||||
@@ -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','<>','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
@@ -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
|
||||
|
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"><p> </p></field>
|
||||
<field name="thank_you_message"><p> </p></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"><h2>Overall Purpose Of Employee Appraisal</h2>
|
||||
<ul><li>To initiate a clear and open communication of performance expectations
|
||||
<li>To assist employees in their professional growth, through the identification of strengths and opportunities for
|
||||
development</ul>
|
||||
<h2>At the outset of the appraisal time period</h2>
|
||||
<ul><li>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.
|
||||
<li>Critical or key elements of performance and professional development needs (if any), should also be noted at this time</ul>
|
||||
<h2>At the conclusion of the appraisal time period</h2>
|
||||
<ul><li>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.
|
||||
<li>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.
|
||||
<li>The supervisor synthesizes and integrates all input into the completed appraisal. He motivates his evaluation in the ad
|
||||
hoc fields.
|
||||
<li>The employee may choose to offer comments or explanation regarding the completed review.
|
||||
<li>The supervisor send the form to the HR department in India and in Belgium</ul></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"><p> </p></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:<ol>
|
||||
<li> Significantly exceeds standards and expectations required of the position
|
||||
<li> Exceeds standards and expectations
|
||||
<li> Meet standards and expectations
|
||||
<li> Did not meet standards and expectations
|
||||
<li> Significantly below standards and expectations</ol></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 & 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 & 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"><p>Identify professional, performance, or project objectives you recommend for employee’s continued career development
|
||||
over the coming year.</p></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"><p></p></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"><p> </p></field>
|
||||
<field name="thank_you_message"><p> </p></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"><h2>At the supervisor's appraisal date</h2>
|
||||
<p>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...</p>
|
||||
<p>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.</p>
|
||||
<p>The appraiser should rate the employee's major work accomplishments and performance according to the metric provided below
|
||||
<ol>
|
||||
<li>Significantly exceeds standards and expectations required of the position</li>
|
||||
<li>Exceeds standards and expectations</li>
|
||||
<li>Meet standards and expectations</li>
|
||||
<li>Did not meet standards and expectations</li>
|
||||
<li>Significantly below standards and expectations</li>
|
||||
</ol></p></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"><p> </p></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')
|
||||
Reference in New Issue
Block a user