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()