diff --git a/addons/hr_recruitment/data/mail_message_subtype_data.xml b/addons/hr_recruitment/data/mail_message_subtype_data.xml index b255f071f7b..2de5edbc9ac 100644 --- a/addons/hr_recruitment/data/mail_message_subtype_data.xml +++ b/addons/hr_recruitment/data/mail_message_subtype_data.xml @@ -19,7 +19,6 @@ Applicant Hired hr.applicant - Applicant hired diff --git a/addons/hr_recruitment/data/mail_templates.xml b/addons/hr_recruitment/data/mail_templates.xml index 15217bf188b..a4f41f9deb9 100644 --- a/addons/hr_recruitment/data/mail_templates.xml +++ b/addons/hr_recruitment/data/mail_templates.xml @@ -2,10 +2,7 @@ diff --git a/addons/hr_recruitment/models/hr_applicant.py b/addons/hr_recruitment/models/hr_applicant.py index c869ac1f912..1eb3328a92e 100644 --- a/addons/hr_recruitment/models/hr_applicant.py +++ b/addons/hr_recruitment/models/hr_applicant.py @@ -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 diff --git a/addons/hr_recruitment_skills/models/hr_applicant.py b/addons/hr_recruitment_skills/models/hr_applicant.py index 8a13610bac2..6035872f0d9 100644 --- a/addons/hr_recruitment_skills/models/hr_applicant.py +++ b/addons/hr_recruitment_skills/models/hr_applicant.py @@ -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 = []