[FIX] Partial fix of 'hr_evaluation', which is broken by the new 'survey' + code cleaning and simplification
bzr revid: rim@openerp.com-20140211153524-kxupg07ns5dny658
This commit is contained in:
parent
60e4340cee
commit
fbbe8631c9
|
@ -27,7 +27,9 @@
|
|||
'sequence': 31,
|
||||
'website': 'http://www.openerp.com',
|
||||
'summary': 'Periodical Evaluations, Appraisals, Surveys',
|
||||
'images': ['images/hr_evaluation_analysis.jpeg','images/hr_evaluation.jpeg','images/hr_interview_requests.jpeg'],
|
||||
'images': ['images/hr_evaluation_analysis.jpeg',
|
||||
'images/hr_evaluation.jpeg',
|
||||
'images/hr_interview_requests.jpeg'],
|
||||
'depends': ['hr', 'calendar', 'survey'],
|
||||
'description': """
|
||||
Periodical Employees evaluation and appraisals
|
||||
|
@ -47,16 +49,17 @@ Key Features
|
|||
* 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.
|
||||
""",
|
||||
"demo": ["hr_evaluation_demo.xml"],
|
||||
"data": [
|
||||
'security/ir.model.access.csv',
|
||||
'security/hr_evaluation_security.xml',
|
||||
#'security/ir.model.access.csv',
|
||||
#'security/hr_evaluation_security.xml',
|
||||
'hr_evaluation_view.xml',
|
||||
'report/hr_evaluation_report_view.xml',
|
||||
'board_hr_evaluation_view.xml',
|
||||
'hr_evaluation_data.xml',
|
||||
'hr_evaluation_installer.xml',
|
||||
'survey_data_appraisal.xml',
|
||||
# 'hr_evaluation_data.xml',
|
||||
# 'hr_evaluation_installer.xml',
|
||||
],
|
||||
# "demo": ["hr_evaluation_demo.xml"],
|
||||
'test': [
|
||||
'test/test_hr_evaluation.yml',
|
||||
'test/hr_evalution_demo.yml',
|
||||
|
@ -65,5 +68,3 @@ Key Features
|
|||
'installable': True,
|
||||
'application': True,
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -27,7 +27,8 @@ import time
|
|||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class hr_evaluation_plan(osv.osv):
|
||||
|
||||
class hr_evaluation_plan(osv.Model):
|
||||
_name = "hr_evaluation.plan"
|
||||
_description = "Appraisal Plan"
|
||||
_columns = {
|
||||
|
@ -46,7 +47,7 @@ class hr_evaluation_plan(osv.osv):
|
|||
}
|
||||
|
||||
|
||||
class hr_evaluation_plan_phase(osv.osv):
|
||||
class hr_evaluation_plan_phase(osv.Model):
|
||||
_name = "hr_evaluation.plan.phase"
|
||||
_description = "Appraisal Plan Phase"
|
||||
_order = "sequence"
|
||||
|
@ -60,7 +61,7 @@ class hr_evaluation_plan_phase(osv.osv):
|
|||
('bottom-up', 'Bottom-Up Appraisal Requests'),
|
||||
('self', 'Self Appraisal Requests'),
|
||||
('final', 'Final Interview')], 'Action', required=True),
|
||||
'survey_id': fields.many2one('survey','Appraisal Form',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',
|
||||
|
@ -72,10 +73,9 @@ class hr_evaluation_plan_phase(osv.osv):
|
|||
'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_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('char')
|
||||
'email_subject': fields.text('Subject')
|
||||
}
|
||||
_defaults = {
|
||||
'sequence': 1,
|
||||
|
@ -98,15 +98,15 @@ Thanks,
|
|||
}
|
||||
|
||||
|
||||
class hr_employee(osv.osv):
|
||||
class hr_employee(osv.Model):
|
||||
_name = "hr.employee"
|
||||
_inherit = "hr.employee"
|
||||
|
||||
|
||||
_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)."),
|
||||
}
|
||||
|
||||
def run_employee_evaluation(self, cr, uid, automatic=False, use_new_cursor=False, context=None):
|
||||
now = parser.parse(datetime.now().strftime('%Y-%m-%d'))
|
||||
obj_evaluation = self.pool.get('hr_evaluation.evaluation')
|
||||
|
@ -126,8 +126,7 @@ class hr_employee(osv.osv):
|
|||
return True
|
||||
|
||||
|
||||
|
||||
class hr_evaluation(osv.osv):
|
||||
class hr_evaluation(osv.Model):
|
||||
_name = "hr_evaluation.evaluation"
|
||||
_inherit = "mail.thread"
|
||||
_description = "Employee Appraisal"
|
||||
|
@ -136,12 +135,10 @@ class hr_evaluation(osv.osv):
|
|||
'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"),
|
||||
'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 bellow expectations'),
|
||||
('1','Did not meet expectations'),
|
||||
('0', 'Significantly below expectations'),
|
||||
('1', 'Do not meet expectations'),
|
||||
('2', 'Meet expectations'),
|
||||
('3', 'Exceeds expectations'),
|
||||
('4', 'Significantly exceeds expectations'),
|
||||
|
@ -183,7 +180,6 @@ class hr_evaluation(osv.osv):
|
|||
return {'value': vals}
|
||||
|
||||
def button_plan_in_progress(self, cr, uid, ids, context=None):
|
||||
mail_message = self.pool.get('mail.message')
|
||||
hr_eval_inter_obj = self.pool.get('hr.evaluation.interview')
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -275,26 +271,27 @@ class hr_evaluation(osv.osv):
|
|||
return super(hr_evaluation, self).write(cr, uid, ids, vals, context=context)
|
||||
|
||||
|
||||
class survey_request(osv.osv):
|
||||
_inherit = "survey.request"
|
||||
_columns = {
|
||||
'is_evaluation': fields.boolean('Is Appraisal?'),
|
||||
}
|
||||
|
||||
|
||||
class hr_evaluation_interview(osv.osv):
|
||||
class hr_evaluation_interview(osv.Model):
|
||||
_name = 'hr.evaluation.interview'
|
||||
_inherits = {'survey.request': 'request_id'}
|
||||
_inherit = 'mail.thread'
|
||||
_rec_name = 'request_id'
|
||||
_description = 'Appraisal Interview'
|
||||
_columns = {
|
||||
'request_id': fields.many2one('survey.request','Request_id', ondelete='cascade', required=True),
|
||||
'request_id': fields.many2one('survey.user_input', 'Survey Request', ondelete='cascade', required=True),
|
||||
'user_to_review_id': fields.many2one('hr.employee', 'Employee to Interview'),
|
||||
'evaluation_id': fields.many2one('hr_evaluation.evaluation', 'Appraisal Form'),
|
||||
'user_id': fields.many2one('res.users', 'Interviewer'),
|
||||
'state': fields.selection([('draft', "Draft"),
|
||||
('waiting_answer', "In progress"),
|
||||
('done', "Done"),
|
||||
('cancel', "Cancelled")],
|
||||
string="State", required=True),
|
||||
# fields from request_id
|
||||
'survey_id': fields.related('request_id', 'survey_id', string="Appraisal Form", type="many2one", relation="survey.survey"),
|
||||
'deadline': fields.related('request_id', 'deadline', string="Deadline"),
|
||||
}
|
||||
_defaults = {
|
||||
'is_evaluation': True,
|
||||
'state': 'draft'
|
||||
}
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
|
@ -353,7 +350,7 @@ class hr_evaluation_interview(osv.osv):
|
|||
context = {}
|
||||
record = self.browse(cr, uid, ids, context=context)
|
||||
record = record and record[0]
|
||||
context.update({'survey_id': record.survey_id.id, 'response_id': [record.response.id], 'response_no':0,})
|
||||
context.update({'survey_id': record.survey_id.id, 'response_id': [record.response.id], 'response_no': 0})
|
||||
value = self.pool.get("survey").action_print_survey(cr, uid, ids, context=context)
|
||||
return value
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<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="survey_2" model="survey">
|
||||
<!-- <record id="survey_2" model="survey">
|
||||
<field name="title">Self Appraisal</field>
|
||||
<field name="max_response_limit">20</field>
|
||||
<field eval="[(6,0,[])]" name="users"/>
|
||||
|
@ -1153,6 +1153,7 @@ Once the form had been filled, the employee send it to his supervisor.
|
|||
<field name="question_id" ref="survey_question_6"/>
|
||||
<field eval="5" name="sequence"/>
|
||||
</record>
|
||||
-->
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
|
@ -1175,8 +1176,8 @@ Once the form had been filled, the employee send it to his supervisor.
|
|||
<field name="action">self</field>
|
||||
<field eval="0" name="send_anonymous_employee"/>
|
||||
<field eval="0" name="send_answer_employee"/>
|
||||
<field name="survey_id" ref="hr_evaluation.survey_2"/>
|
||||
<field eval="0" name="send_answer_manager"/>
|
||||
<!-- <field name="survey_id" ref="hr_evaluation.survey_2"/>
|
||||
--> <field eval="0" name="send_answer_manager"/>
|
||||
<field eval="0" name="wait"/>
|
||||
</record>
|
||||
</data>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<field name="model">hr_evaluation.plan</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Appraisal Plan" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
|
@ -37,6 +38,7 @@
|
|||
<field name="phase_ids"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -165,11 +167,9 @@
|
|||
</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>
|
||||
<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>
|
||||
|
@ -183,8 +183,8 @@
|
|||
<field nolabel="1" name="survey_request_ids" attrs="{'readonly': [('state', '=', 'done')]}">
|
||||
<form string="Interview Appraisal" version="7.0">
|
||||
<div class="oe_right oe_button_box">
|
||||
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
|
||||
<button string="Answer Survey" states="waiting_answer" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
<button string="Print Interview" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response_id','=',False)]}" />
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
|
@ -193,8 +193,8 @@
|
|||
<field name="user_id" string="Interviewer" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'base.group_hr_manager']}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date_deadline"/>
|
||||
<field name="response" readonly="1"/>
|
||||
<field name="deadline"/>
|
||||
<field name="request_id" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="4" string="Status" invisible="1">
|
||||
|
@ -230,7 +230,6 @@
|
|||
<field name="employee_id"/>
|
||||
<field name="plan_id"/>
|
||||
<field name="date"/>
|
||||
<!--field name="progress" widget="progressbar"/-->
|
||||
<field name="rating"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
|
@ -294,7 +293,7 @@
|
|||
attrs="{'readonly':[('survey_id','=',False)]}" class="oe_highlight"/>
|
||||
<button string="Send Request" name="survey_req_waiting_answer" type="object"
|
||||
states="draft" class="oe_highlight"/>
|
||||
<button string="Answer Survey" name="%(survey.action_view_survey_question_message)d" type="action"
|
||||
<button string="Answer Survey" name="#" type="action"
|
||||
states="waiting_answer" class="oe_highlight"
|
||||
context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}"
|
||||
attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
|
@ -316,8 +315,8 @@
|
|||
<field name="user_id" string="Interviewer" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'base.group_hr_manager']}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date_deadline"/>
|
||||
<field name="response" readonly="1"/>
|
||||
<field name="deadline"/>
|
||||
<field name="request_id" readonly="1"/>
|
||||
<field name="evaluation_id" string="Appraisal Plan"/>
|
||||
</group>
|
||||
</group>
|
||||
|
@ -331,12 +330,12 @@
|
|||
<field name="model">hr.evaluation.interview</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Interview Appraisal">
|
||||
<field name="date_deadline" string="Deadline Date"/>
|
||||
<field name="deadline" string="Deadline Date"/>
|
||||
<field name="survey_id"/>
|
||||
<field name="user_id" string="Interviewer"/>
|
||||
<field name="user_to_review_id"/>
|
||||
<field name="response" readonly="1" invisible="True"/>
|
||||
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response, 'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
<field name="request_id" readonly="1" invisible="True"/>
|
||||
<button name="#" string="Answer Survey" type="action" states="waiting_answer" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response, 'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" 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"/>
|
||||
|
@ -351,7 +350,7 @@
|
|||
<field name="model">hr.evaluation.interview</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Appraisal">
|
||||
<field name="date_deadline"/>
|
||||
<field name="deadline"/>
|
||||
<filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','waiting_answer')]"/>
|
||||
<field name="user_to_review_id"/>
|
||||
<field name="user_id" string="Interviewer"/>
|
||||
|
@ -368,7 +367,7 @@
|
|||
<field name="name">Interview Requests</field>
|
||||
<field name="model">hr.evaluation.interview</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="Interview Request" color="user_to_review_id" date_start="date_deadline">
|
||||
<calendar string="Interview Request" color="user_to_review_id" date_start="deadline">
|
||||
<field name="request_id"/>
|
||||
</calendar>
|
||||
</field>
|
||||
|
@ -379,8 +378,7 @@
|
|||
<field name="res_model">hr.evaluation.interview</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" eval="False"/>
|
||||
<field name="domain">[('is_evaluation' ,'=', True)]</field>
|
||||
<field name="context">{'default_is_evaluation': True, "search_default_todo":1,"search_default_user_id":uid}</field>
|
||||
<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">
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
from openerp import tools
|
||||
from openerp.osv import fields, osv
|
||||
|
||||
class hr_evaluation_report(osv.osv):
|
||||
|
||||
class hr_evaluation_report(osv.Model):
|
||||
_name = "hr.evaluation.report"
|
||||
_description = "Evaluations Statistics"
|
||||
_auto = False
|
||||
|
@ -32,7 +33,7 @@ class hr_evaluation_report(osv.osv):
|
|||
'overpass_delay': fields.float('Overpassed Deadline', digits=(16, 2), readonly=True),
|
||||
'day': fields.char('Day', size=128, readonly=True),
|
||||
'deadline': fields.date("Deadline", readonly=True),
|
||||
'request_id': fields.many2one('survey.request', 'Request_id', readonly=True),
|
||||
'request_id': fields.many2one('survey.user_input', 'Request_id', readonly=True),
|
||||
'closed': fields.date("closed", readonly=True),
|
||||
'year': fields.char('Year', size=4, readonly=True),
|
||||
'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),
|
||||
|
@ -57,6 +58,7 @@ class hr_evaluation_report(osv.osv):
|
|||
], 'Status', readonly=True),
|
||||
}
|
||||
_order = 'create_date desc'
|
||||
|
||||
def init(self, cr):
|
||||
tools.drop_view_if_exists(cr, 'hr_evaluation_report')
|
||||
cr.execute("""
|
||||
|
|
|
@ -47,7 +47,6 @@ sent mails with personal token for the invitation of the survey.
|
|||
],
|
||||
'demo': ['data/survey_demo_user.xml',
|
||||
'data/survey_demo_feedback.xml',
|
||||
'data/survey_demo_appraisal.xml',
|
||||
'data/survey.user_input.csv',
|
||||
'data/survey.user_input_line.csv'],
|
||||
'installable': True,
|
||||
|
|
Loading…
Reference in New Issue