odoo18/addons_extensions/offer_letters/models/hr_applicant.py

53 lines
1.9 KiB
Python

from odoo import api, fields, models, _
class HRApplicant(models.Model):
_inherit = 'hr.applicant'
finalized_ctc = fields.Float(string='Finalized CTC', tracking=True)
offer_letter_ids = fields.One2many('offer.letter', 'candidate_id', string='Offer Letters')
current_offer_letter_id = fields.Many2one(
'offer.letter',
string='Current Offer Letter',
compute='_compute_current_offer_letter',
store=True,
)
offer_release_status = fields.Selection(
selection=[
('requested', 'Requested'),
('sent', 'Sent to Applicant'),
('accepted', 'Accepted'),
('rejected', 'Rejected'),
('expired', 'Expired'),
],
string='Offer Status',
related='current_offer_letter_id.state',
readonly=True,
store=False,
)
@api.depends('offer_letter_ids', 'offer_letter_ids.create_date', 'offer_letter_ids.state')
def _compute_current_offer_letter(self):
for applicant in self:
offer_letters = applicant.offer_letter_ids.sorted(
key=lambda offer: (offer.create_date or fields.Datetime.from_string('1970-01-01 00:00:00'), offer.id)
)
applicant.current_offer_letter_id = offer_letters[-1] if offer_letters else False
def action_request_offer_release(self):
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': _('Request Offer Release'),
'res_model': 'offer.release.request.wizard',
'view_mode': 'form',
'view_id': self.env.ref('offer_letters.view_offer_release_request_wizard_form').id,
'target': 'new',
'context': {
'default_applicant_id': self.id,
},
}
def action_send_offer(self):
return self.action_request_offer_release()