[MERGE, IMP] hr_recruitment: Improve data and merge with mma branch

bzr revid: psi@tinyerp.com-20120419124715-s12gtskxrd8fu2xz
This commit is contained in:
Purnendu Singh (OpenERP)
2012-04-19 18:17:15 +05:30
3 changed files with 50 additions and 25 deletions
+35 -7
View File
@@ -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">
+9 -17
View File
@@ -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>