odoo18/addons_extensions/hr_recruitment_extended/models/res_partner.py

50 lines
2.5 KiB
Python

from odoo import models, fields, api, _
class ResPartner(models.Model):
_inherit = 'res.partner'
contact_type = fields.Selection([('internal','In-House'),('external','Client-Side')], required=True, default='internal')
company_id = fields.Many2one('res.company', default=lambda self: self.env.user.company_id)
# Vendor Statistics Fields
total_positions_requested = fields.Integer(compute='_compute_vendor_statistics', string='Positions Requested')
total_submitted = fields.Integer(compute='_compute_vendor_statistics', string='Total Submitted')
total_hired = fields.Integer(compute='_compute_vendor_statistics', string='Total Hired')
total_rejected = fields.Integer(compute='_compute_vendor_statistics', string='Total Rejected')
job_recruitment_ids = fields.One2many('hr.job.recruitment', 'requested_by', string='Job Requests')
@api.depends('contact_type')
def _compute_vendor_statistics(self):
for partner in self:
if partner.contact_type == 'external':
# Get all job recruitments requested by this vendor
job_recruitments = self.env['hr.job.recruitment'].search([
('requested_by', '=', partner.id)
])
partner.total_positions_requested = sum(job_recruitments.mapped('no_of_recruitment'))
partner.total_submitted = sum(job_recruitments.mapped('no_of_submissions'))
partner.total_hired = sum(job_recruitments.mapped('no_of_hired_employee'))
partner.total_rejected = sum(job_recruitments.mapped('no_of_refused_submissions'))
else:
partner.total_positions_requested = 0
partner.total_submitted = 0
partner.total_hired = 0
partner.total_rejected = 0
def action_create_job_request(self):
"""Action to create a new job request from vendor"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': _('Create Job Request'),
'res_model': 'hr.job.recruitment',
'view_mode': 'form',
'target': 'current',
'context': {
'default_requested_by': self.id,
'default_recruitment_type': 'external',
'default_address_id': self.id if self.is_company else (self.parent_id.id if self.parent_id else False),
}
}