53 lines
1.9 KiB
Python
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()
|