odoo18/addons_extensions/recruitment_employee_bridge/models/hr_employee.py

48 lines
1.7 KiB
Python

from odoo import models
class HrEmployee(models.Model):
_inherit = "hr.employee"
def _find_existing_recruitment_records_for_bridge(self):
self.ensure_one()
applicant = self.env["hr.applicant"].sudo()
candidate = self.env["hr.candidate"].sudo()
contact_domain = []
if self.work_phone:
contact_domain.append(("partner_phone", "=", self.work_phone))
if self.work_email:
contact_domain.append(("email_from", "=", self.work_email))
if not contact_domain:
return applicant, candidate
domain = contact_domain[0] if len(contact_domain) == 1 else ["|"] + contact_domain
applicant = applicant.search(domain, limit=1, order="id desc")
if applicant:
return applicant, applicant.candidate_id
candidate = candidate.search(domain, limit=1, order="id desc")
return candidate.applicant_ids[:1], candidate
def _get_or_create_employee_bridge(self):
bridge = super()._get_or_create_employee_bridge()
for employee in self:
if bridge.applicant_id or bridge.candidate_id:
continue
applicant, candidate = employee._find_existing_recruitment_records_for_bridge()
vals = {}
if applicant:
vals["applicant_id"] = applicant.id
vals["candidate_id"] = applicant.candidate_id.id
elif candidate:
vals["candidate_id"] = candidate.id
if vals:
bridge.write(vals)
return bridge
def send_jod_form_to_employee(self):
self.ensure_one()
bridge = self._get_or_create_employee_bridge()
return bridge.action_send_jod_form()