48 lines
1.7 KiB
Python
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()
|