101 lines
4.6 KiB
Python
101 lines
4.6 KiB
Python
from setuptools.dist import sequence
|
|
|
|
from odoo import models, fields, api
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class YuthonInterviewApproval(models.Model):
|
|
_name = 'yuthon.interview.approval'
|
|
_description = '面试信息表'
|
|
_inherit = 'soong.workflow.mixin'
|
|
|
|
name = fields.Char(string='标题')
|
|
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
|
|
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
|
job_id = fields.Many2one('hr.job', string='应聘岗位')
|
|
departments_id = fields.Many2one("hr.department", string="应聘职务")
|
|
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_interview_approval_code'))
|
|
applicant_ids = fields.One2many('interview.approval.line', 'interview_approval_id', string='应聘面试信息')
|
|
is_issues = fields.Boolean(string='是否上会')
|
|
yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'),
|
|
('thlc', '天河粮储')], string="公司")
|
|
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
|
|
|
def scheduling_of_meetings(self):
|
|
form_id = self.env.ref("room.room_booking_view_form").id
|
|
employee_ids = []
|
|
for applicant in self.applicant_ids:
|
|
for employee_id in applicant.employee_ids:
|
|
employee_ids.append(employee_id.user_id.id)
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'name': '会议安排',
|
|
'res_model': 'room.booking',
|
|
"views": [[form_id, "form"]],
|
|
"context": {
|
|
'default_room_users_ids': [(6, 0, employee_ids)],
|
|
}
|
|
}
|
|
|
|
def put_interview_stage(self):
|
|
for rec in self.applicant_ids:
|
|
employee_id = self.env['hr.applicant'].search([('partner_name', '=',rec.name)])
|
|
employee_id.write({
|
|
'stage_id': rec.interview_stage_id.id})
|
|
|
|
def put_interview_wizard(self):
|
|
self.ensure_one()
|
|
application_list = []
|
|
for applicant in self.applicant_ids:
|
|
application_list.append((0, 0, {'name': applicant.name,
|
|
'applicant_time': applicant.interview_time,
|
|
'employee_ids': applicant.employee_ids.ids,
|
|
'stage_id': applicant.stage_id.id}))
|
|
return {
|
|
'name': '面试结果',
|
|
'type': 'ir.actions.act_window',
|
|
'view_mode': 'form',
|
|
'res_model': 'interview.approval.wizard',
|
|
'target': 'new',
|
|
'context': {'default_interview_approval_line_ids': application_list, }
|
|
}
|
|
|
|
@api.onchange('is_issues')
|
|
def _onchange_is_issues(self):
|
|
if self.is_issues:
|
|
issue_id = self.env['issue.library'].create({'name': self.name})
|
|
self.related_issues_id = issue_id.id
|
|
workflow_record_id = self.env["soong.workflow.record"].search([("res_model", "=", self._name), ("res_id", "=", self.id)])
|
|
self.env['issue.library.approval.line'].create({
|
|
'issue_library_id': issue_id.id,
|
|
'workflow_record_id': workflow_record_id.id,
|
|
'approval_type': workflow_record_id.workflow_id.id,
|
|
'code': self.code,
|
|
'approval_date': fields.Datetime.now(),
|
|
})
|
|
elif self.related_issues_id:
|
|
raise UserError("已经创建了相关的上会记录,不能取消勾选")
|
|
|
|
class InterviewApprovalLine(models.Model):
|
|
_name = 'interview.approval.line'
|
|
_description = '应聘面试信息'
|
|
|
|
interview_approval_id = fields.Many2one('yuthon.interview.approval', string="面试申请表关联")
|
|
name = fields.Char(string='姓名')
|
|
stage_id = fields.Many2one('hr.recruitment.stage', string='阶段')
|
|
interview_time = fields.Datetime(string='面试时间')
|
|
room_id = fields.Many2one('room.room', string='地点')
|
|
interview_stage_id = fields.Many2one('hr.recruitment.stage', string='面试结果')
|
|
tage_ids = fields.Many2many('applicant.tage.setting', string="应聘标签")
|
|
employee_ids = fields.Many2many('hr.employee', string='面试官')
|
|
evaluation = fields.Text(string='评价')
|
|
|
|
def button_applicant_ids(self):
|
|
self.ensure_one()
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'hr.applicant',
|
|
'res_id': self.id,
|
|
'view_mode': 'form',
|
|
'target': 'current',
|
|
} |