[MERGE, IMP] hr_recruitment: Improve data and merge with mma branch
bzr revid: psi@tinyerp.com-20120419124715-s12gtskxrd8fu2xz
This commit is contained in:
@@ -69,11 +69,7 @@ class hr_recruitment_stage(osv.osv):
|
||||
'name': fields.char('Name', size=64, required=True, translate=True),
|
||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."),
|
||||
'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep tempy this field."),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16,
|
||||
help='The state is set to \'Draft\', when a case is created.\
|
||||
\nIf the case is in progress the state is set to \'Open\'.\
|
||||
\nWhen the case is over, the state is set to \'Done\'.\
|
||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', required=True, help="This state is related to this stage"),
|
||||
'requirements': fields.text('Requirements')
|
||||
}
|
||||
_defaults = {
|
||||
@@ -137,6 +133,31 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||
duration = float(ans.days)
|
||||
res[issue.id][field] = abs(float(duration))
|
||||
return res
|
||||
|
||||
def _get_state(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
for applicant in self.browse(cr, uid, ids, context=context):
|
||||
if applicant.stage_id:
|
||||
res[applicant.id] = applicant.stage_id.state
|
||||
return res
|
||||
|
||||
def _get_stage(self, cr, uid, ids, context=None):
|
||||
applicant_obj = self.pool.get('hr.applicant')
|
||||
result = {}
|
||||
for stage in self.browse(cr, uid, ids, context=context):
|
||||
if stage.state:
|
||||
applicant_ids = applicant_obj.search(cr, uid, [('state', '=', stage.state)], context=context)
|
||||
for applicant in applicant_obj.browse(cr, uid, applicant_ids, context=context):
|
||||
result[applicant.id] = True
|
||||
return result.keys()
|
||||
|
||||
def _save_state(self, cr, uid, applicant_id, field_name, field_value, arg, context=None):
|
||||
stage_ids = self.pool.get('hr.recruitment.stage').search(cr, uid, [('state', '=', field_value)], order='sequence', context=context)
|
||||
if stage_ids:
|
||||
return self.write(cr, uid, [applicant_id], {'stage_id': stage_ids[0]}, context=context)
|
||||
else:
|
||||
return cr.execute("""UPDATE hr_applicant SET state=%s WHERE id=%s""", (field_value, hr_applicant_id))
|
||||
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=128, required=True),
|
||||
@@ -150,7 +171,14 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||
'create_date': fields.datetime('Creation Date', readonly=True, select=True),
|
||||
'write_date': fields.datetime('Update Date', readonly=True),
|
||||
'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage'),
|
||||
'state': fields.related('stage_id','state', type='char', selection=AVAILABLE_STATES, string="State", store=True, readonly=True),
|
||||
'state': fields.function(_get_state, fnct_inv=_save_state, type='selection', selection=AVAILABLE_STATES, string="State", readonly=True,
|
||||
store = {
|
||||
'hr.applicant': (lambda self, cr, uid, ids, c={}: ids, ['stage_id'], 10),
|
||||
'hr.recruitment.stage': (_get_stage, ['state'], 10)
|
||||
}, help='The state is set to \'Draft\', when a case is created.\
|
||||
\nIf the case is in progress the state is set to \'Open\'.\
|
||||
\nWhen the case is over, the state is set to \'Done\'.\
|
||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
# Applicant Columns
|
||||
@@ -188,7 +216,7 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||
'active': lambda *a: 1,
|
||||
'user_id': lambda self, cr, uid, context: uid,
|
||||
'email_from': crm.crm_case. _get_default_email,
|
||||
'state': lambda *a: 'draft',
|
||||
'state': 'draft',
|
||||
'priority': lambda *a: '',
|
||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
||||
'color': 0,
|
||||
|
||||
@@ -37,29 +37,34 @@
|
||||
<field name="name">Doctoral Degree</field>
|
||||
<field name="sequence">4</field>
|
||||
</record>
|
||||
|
||||
<record model="hr.recruitment.stage" id="stage_job1">
|
||||
<field name="name">Initial Qualification</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="sequence">1</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job2">
|
||||
<field name="name">First Interview</field>
|
||||
<field name="state">open</field>
|
||||
<field name="sequence">2</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job3">
|
||||
<field name="name">Second Interview</field>
|
||||
<field name="state">open</field>
|
||||
<field name="sequence">3</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job4">
|
||||
<field name="name">Contract Proposed</field>
|
||||
<field name="state">pending</field>
|
||||
<field name="sequence">4</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job5">
|
||||
<field name="name">Contract Signed</field>
|
||||
<field name="state">done</field>
|
||||
<field name="sequence">5</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job6">
|
||||
<field name="name">Refused</field>
|
||||
<field name="state">cancel</field>
|
||||
<field name="sequence">6</field>
|
||||
</record>
|
||||
<record id="survey_job_0" model="survey">
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
<field name="department_id" invisible="context.get('invisible_department', True)"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward" groups="base.group_no_one"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause" groups="base.group_no_one"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -75,12 +75,12 @@
|
||||
<field name="arch" type="xml">
|
||||
<form layout="manual">
|
||||
<div class="oe_form_topbar">
|
||||
<button name="case_cancel" string="Refuse" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_pending" string="Pending" states="open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_cancel" string="Refuse" states="draft,open,pending" type="object" icon="gtk-cancel" groups="base.group_no_one"/>
|
||||
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward" groups="base.group_no_one"/>
|
||||
<button name="case_pending" string="Pending" states="open" type="object" icon="gtk-media-pause" groups="base.group_no_one"/>
|
||||
<button name="%(action_hr_recruitment_hired_employee)d" string="Hire" states="open,pending" type="action" icon="terp-partner"/>
|
||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
<div class="oe_right">
|
||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert" groups="base.group_no_one"/>
|
||||
<div class="oe_right" groups="base.group_no_one">
|
||||
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -145,15 +145,6 @@
|
||||
<field name="date_closed"/>
|
||||
<field name="date_open"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Status" groups="base.group_no_one"/>
|
||||
<group col="8" colspan="4" groups="base.group_no_one">
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
||||
<button name="case_cancel" string="Refuse" states="draft,open,pending" type="object" icon="gtk-cancel" />
|
||||
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward" />
|
||||
<button name="case_pending" string="Pending" states="open" type="object" icon="gtk-media-pause" />
|
||||
<button name="%(action_hr_recruitment_hired_employee)d" string="Hire" states="open,pending" type="action" icon="terp-partner"/>
|
||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
@@ -333,7 +324,7 @@
|
||||
<a string="Schedule Meeting" name="action_makeMeeting" type="object" icon="stock_calendar"/>
|
||||
<a t-if="record.survey.raw_value" name="action_print_survey" type="object" string="Print Interview" icon="gtk-print" />
|
||||
</div>
|
||||
<div class="oe_kanban_right">
|
||||
<div class="oe_kanban_right" groups="base.group_no_one">
|
||||
<a name="case_open" string="In Progress" states="draft,pending" type="object" icon="kanban-apply"/>
|
||||
<a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause"/>
|
||||
</div>
|
||||
@@ -373,6 +364,7 @@
|
||||
<field name="sequence" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="department_id" groups="base.group_extended"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user