[IMP] hr_recruitment: automatically create employee
The action `Create Employee` on an applicant would open the form view with the fields pre-filled, but the employee would not be automatically created when leaving the view. task-3301176 closes odoo/odoo#120566 Related: odoo/enterprise#40835 Signed-off-by: Kevin Baptiste <kba@odoo.com>
This commit is contained in:
@@ -19,7 +19,6 @@
|
||||
<field name="name">Applicant Hired</field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="description">Applicant hired</field>
|
||||
</record>
|
||||
|
||||
<!-- Job-related subtypes for messaging / Chatter -->
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
<odoo><data noupdate="1">
|
||||
|
||||
<template id="applicant_hired_template">
|
||||
Applicant hired<br/>
|
||||
<ul>
|
||||
<li>Employee: <a href="#" t-att-data-oe-id="applicant.emp_id.id" data-oe-model="hr.employee"><t t-esc="applicant.emp_id.name"/></a></li>
|
||||
</ul>
|
||||
Employee created: <a href="#" t-att-data-oe-id="applicant.emp_id.id" data-oe-model="hr.employee"><t t-esc="applicant.emp_id.name"/></a>
|
||||
</template>
|
||||
|
||||
</data></odoo>
|
||||
|
||||
@@ -540,14 +540,10 @@ class Applicant(models.Model):
|
||||
self.ensure_one()
|
||||
self._check_interviewer_access()
|
||||
|
||||
contact_name = False
|
||||
if self.partner_id:
|
||||
address_id = self.partner_id.address_get(['contact'])['contact']
|
||||
contact_name = self.partner_id.display_name
|
||||
else:
|
||||
if not self.partner_id:
|
||||
if not self.partner_name:
|
||||
raise UserError(_('Please provide an applicant name.'))
|
||||
new_partner_id = self.env['res.partner'].create({
|
||||
self.partner_id = self.env['res.partner'].create({
|
||||
'is_company': False,
|
||||
'type': 'private',
|
||||
'name': self.partner_name,
|
||||
@@ -555,22 +551,26 @@ class Applicant(models.Model):
|
||||
'phone': self.partner_phone,
|
||||
'mobile': self.partner_mobile
|
||||
})
|
||||
self.partner_id = new_partner_id
|
||||
address_id = new_partner_id.address_get(['contact'])['contact']
|
||||
employee_data = {
|
||||
'default_name': self.partner_name or contact_name,
|
||||
'default_job_id': self.job_id.id,
|
||||
'default_job_title': self.job_id.name,
|
||||
'default_address_home_id': address_id,
|
||||
'default_department_id': self.department_id.id,
|
||||
'default_address_id': self.company_id.partner_id.id,
|
||||
'default_work_email': self.department_id.company_id.email or self.email_from, # To have a valid email address by default
|
||||
'default_work_phone': self.department_id.company_id.phone,
|
||||
'default_applicant_id': self.ids,
|
||||
|
||||
action = self.env['ir.actions.act_window']._for_xml_id('hr.open_view_employee_list')
|
||||
employee = self.env['hr.employee'].create(self._get_employee_create_vals())
|
||||
action['res_id'] = employee.id
|
||||
return action
|
||||
|
||||
def _get_employee_create_vals(self):
|
||||
self.ensure_one()
|
||||
address_id = self.partner_id.address_get(['contact'])['contact']
|
||||
return {
|
||||
'name': self.partner_name or self.partner_id.display_name,
|
||||
'job_id': self.job_id.id,
|
||||
'job_title': self.job_id.name,
|
||||
'address_home_id': address_id,
|
||||
'department_id': self.department_id.id,
|
||||
'address_id': self.company_id.partner_id.id,
|
||||
'work_email': self.department_id.company_id.email or self.email_from, # To have a valid email address by default
|
||||
'work_phone': self.department_id.company_id.phone,
|
||||
'applicant_id': self.ids,
|
||||
}
|
||||
dict_act_window = self.env['ir.actions.act_window']._for_xml_id('hr.open_view_employee_list')
|
||||
dict_act_window['context'] = employee_data
|
||||
return dict_act_window
|
||||
|
||||
def _update_employee_from_applicant(self):
|
||||
# This method is to be overriden
|
||||
|
||||
@@ -23,15 +23,14 @@ class HrApplicant(models.Model):
|
||||
for applicant in self:
|
||||
applicant.skill_ids = applicant.applicant_skill_ids.skill_id
|
||||
|
||||
def create_employee_from_applicant(self):
|
||||
self.ensure_one()
|
||||
action = super().create_employee_from_applicant()
|
||||
action['context']['default_employee_skill_ids'] = [(0, 0, {
|
||||
def _get_employee_create_vals(self):
|
||||
vals = super()._get_employee_create_vals()
|
||||
vals['employee_skill_ids'] = [(0, 0, {
|
||||
'skill_id': applicant_skill.skill_id.id,
|
||||
'skill_level_id': applicant_skill.skill_level_id.id,
|
||||
'skill_type_id': applicant_skill.skill_type_id.id,
|
||||
}) for applicant_skill in self.applicant_skill_ids]
|
||||
return action
|
||||
return vals
|
||||
|
||||
def _update_employee_from_applicant(self):
|
||||
vals_list = []
|
||||
|
||||
Reference in New Issue
Block a user