添加功能
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
'wizard/hr_employee_wizard_views.xml',
|
||||
'views/inherit_hr_applicant_views.xml',
|
||||
'views/publish_applicant_setting_views.xml',
|
||||
'views/yuthon_job_postings_views.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': False,
|
||||
|
||||
@@ -7,5 +7,6 @@ from . import inherit_hr_job
|
||||
from . import inherit_hr_applicant
|
||||
from . import applicant_tage_setting
|
||||
from . import publish_applicant_setting
|
||||
from . import yuthon_job_postings
|
||||
|
||||
|
||||
|
||||
@@ -19,8 +19,12 @@ class HrApplicant(models.Model):
|
||||
tage_ids = fields.Many2many('applicant.tage.setting', string="应聘标签")
|
||||
is_interview_status = fields.Boolean(string="面试状态")
|
||||
|
||||
full_title = fields.Char(string="完整标题", compute="_compute_full_title")
|
||||
|
||||
|
||||
@api.depends('name')
|
||||
def _compute_full_title(self):
|
||||
for record in self:
|
||||
record.full_title = f"{record.name} 招聘需求表"
|
||||
|
||||
class HrJobType(models.Model):
|
||||
_name = "hr.job.type"
|
||||
|
||||
@@ -40,19 +40,10 @@ class HrJob(models.Model):
|
||||
years_of_service = fields.Integer(string="工作年限")
|
||||
competency_requirements = fields.Text(string="能力要求")
|
||||
other_notes = fields.Text(string="其他要求说明")
|
||||
function = fields.Text(string="岗位职责")
|
||||
|
||||
|
||||
|
||||
#招聘信息
|
||||
date_of_filing = fields.Date(string="申报日期")
|
||||
reason_recruitment = fields.Char(string="招聘事由")
|
||||
ideal_date = fields.Date(string="希望到岗日期")
|
||||
recruit_start_date = fields.Date(string="招聘开始日期")
|
||||
recruit_end_date = fields.Date(string="招聘截止日期")
|
||||
recruit_over_date = fields.Date(string="招聘结束日期")
|
||||
recruit_priority = fields.Selection([('high', '高'), ('middle', '中'), ('low', '低')], string="招聘优先级")
|
||||
place_work = fields.Char(string="工作地点")
|
||||
is_referral = fields.Boolean(string="允许员工推荐")
|
||||
job_description = fields.Text(string="招聘情况说明")
|
||||
publish_applicant_ids = fields.Many2many('publish.applicant.setting', string="招聘发布途径")
|
||||
|
||||
@api.depends('no_of_employee')
|
||||
def _compute_job_personnel(self):
|
||||
|
||||
@@ -10,4 +10,5 @@ access_yuthon_personal_skills_schedule,yuthon_personal_skills_schedule,model_yut
|
||||
access_yuthon_directly_detail_lines,yuthon_directly_detail_lines,model_yuthon_directly_detail_lines,base.group_user,1,1,1,1
|
||||
access_yuthon_recent_work_detail_line,yuthon_recent_work_detail_line,model_yuthon_recent_work_detail_line,base.group_user,1,1,1,1
|
||||
access_publish_applicant_setting,publish_applicant_setting,model_publish_applicant_setting,base.group_user,1,1,1,1
|
||||
access_applicant_tage_setting,applicant_tage_setting,model_applicant_tage_setting,base.group_user,1,1,1,1
|
||||
access_applicant_tage_setting,applicant_tage_setting,model_applicant_tage_setting,base.group_user,1,1,1,1
|
||||
access_yuthon_job_postings,yuthon_job_postings,model_yuthon_job_postings,base.group_user,1,1,1,1
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<form class="o_applicant_form">
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
<field name="full_title" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="4" string="基本信息">
|
||||
@@ -75,5 +75,16 @@
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_applicant_inherit_kanban" model="ir.ui.view">
|
||||
<field name="name">hr.applicant.inherit.kanban</field>
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="inherit_id" ref="hr_recruitment.hr_kanban_view_applicant"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@class='o_kanban_record_subtitle']" position="after">
|
||||
<div class="o_kanban_record_subtitle" invisible="context.get('search_default_tage_ids', False)">
|
||||
<field name="tage_ids"/>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -65,6 +65,9 @@
|
||||
<xpath expr="//field[@name='description']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//div[@class='oe_chatter']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='description']" position="after">
|
||||
<group col="3">
|
||||
<group>
|
||||
@@ -100,36 +103,6 @@
|
||||
<field name="other_notes"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='job_description_page']" position="after">
|
||||
<page string="招聘信息">
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="user_id" required="1" string="申报员"/>
|
||||
<field name="recruit_start_date"/>
|
||||
<field name="compiling_external"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date_of_filing"/>
|
||||
<field name="recruit_end_date"/>
|
||||
<field name="establishment_quotas"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reason_recruitment"/>
|
||||
<field name="recruit_over_date"/>
|
||||
<field name="place_work"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="ideal_date"/>
|
||||
<field name="recruit_priority"/>
|
||||
<field name="is_referral"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="job_description"/>
|
||||
<field name="publish_applicant_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="after">
|
||||
<field name="job_type_id"/>
|
||||
<field name="establishment_quotas"/>
|
||||
@@ -147,6 +120,9 @@
|
||||
<field name="is_enable"/>
|
||||
<field name="job_personnel"/>
|
||||
</div>
|
||||
<xpath expr="//field[@name='contract_type_id']" position="after">
|
||||
<field name="function"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -23,6 +23,7 @@ class HrApplicant(models.Model):
|
||||
for applicant in self:
|
||||
if not applicant.is_interview_status:
|
||||
applicant.is_interview_status = True
|
||||
|
||||
else:
|
||||
raise UserError('已提交面试申请')
|
||||
|
||||
@@ -33,6 +34,7 @@ class HrApplicant(models.Model):
|
||||
stage_self = stage_list.index(sta.stage_id.name)
|
||||
if stage_self == 0:
|
||||
sta.stage_id = self.env['hr.recruitment.stage'].search([('name', '=', stage_list[stage_self + 1])]).id
|
||||
|
||||
form_id = self.env.ref("yuthon_hr_employee_approval.view_yuthon_interview_approval_form").id
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
|
||||
@@ -17,6 +17,7 @@ class YuthonInterviewApproval(models.Model):
|
||||
employee_ids = fields.Many2many('hr.employee', string='面试官')
|
||||
applicant_ids = fields.One2many('hr.applicant', 'interview_approval_id', string='应聘面试信息')
|
||||
|
||||
|
||||
def test_submissions(self):
|
||||
# 得到标签顺序列表,用来判断下一个阶段
|
||||
stage_list = [stage.name for stage in self.env['hr.recruitment.stage'].search([])]
|
||||
@@ -33,7 +34,8 @@ class YuthonInterviewApproval(models.Model):
|
||||
else:
|
||||
# 已经是最后一个阶段,可以进行其他操作,例如发送通知等
|
||||
raise UserError('已经是最后一个阶段')
|
||||
|
||||
elif applicant.interview_results == 'fail':
|
||||
applicant.stage_id = failed_stage
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ class YuthonMessageLogin(models.Model):
|
||||
("spouse", "配偶"), ("spouse", "其他")], string="关系")
|
||||
|
||||
#附件
|
||||
one_inch_photo_id = fields.Many2one('documents.document',string='一寸照片')
|
||||
image_1920 = fields.Image("一寸照")
|
||||
id_card_id = fields.Many2one('documents.document',string='身份证')
|
||||
expirationDate = fields.Date(string='身份证有效期')
|
||||
residence_permit = fields.Char(string='居住证(非本市提供的办理证明,截图也可)')
|
||||
|
||||
@@ -26,20 +26,13 @@ class YuthonOnboardApproval(models.Model):
|
||||
|
||||
yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'),
|
||||
('thlc', '天河粮储'), ('tctj', '天投城建')], string="甲方")
|
||||
date_birth = fields.Date(string='出生年月')
|
||||
nation = fields.Selection(nation_list, string='民族')
|
||||
grades_id = fields.Many2one('yuthon.job.lv', string='职级')
|
||||
account = fields.Char(string='账号')
|
||||
bank = fields.Char(string='开户行')
|
||||
origin = fields.Char(string='籍贯')
|
||||
political = fields.Selection([('cpc_dang', '中共党员'), ('nld', '民盟'),
|
||||
('league_member', '共青团员'), ('people', '群众')], string="政治面貌")
|
||||
education = fields.Char(string='学历')
|
||||
onboard_time = fields.Date(string='入职时间')
|
||||
probation_period = fields.Selection([('zero', '0个月'), ('one', '1个月'),
|
||||
('two', '2个月'), ('three', '3个月'), ('year', '1年')], string='试用期')
|
||||
contract_start = fields.Date(string='合同开始日期')
|
||||
contract_end = fields.Date(string='合同结束日期')
|
||||
('two', '2个月'), ('three', '3个月'), ('year', '1年')], string='试用期结束时间')
|
||||
duration_employment = fields.Date(string='劳动合同期限')
|
||||
salary = fields.Float(string='基本工资')
|
||||
oter = fields.Text(string='其他约定')
|
||||
social_security = fields.Char(string='社保时长')
|
||||
|
||||
@@ -40,19 +40,12 @@
|
||||
<page string="应聘面试信息">
|
||||
<field name="applicant_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="company_id"/>
|
||||
<field name="company_id" column_invisible="1"/>
|
||||
<field name="job_id" column_invisible="1"/>
|
||||
<field name="name" string="岗位" column_invisible="1"/>
|
||||
<field name="partner_name" string="姓名" readonly="1"/>
|
||||
<field name="colleges" readonly="1"/>
|
||||
<field name="degree" readonly="1"/>
|
||||
<field name="major" readonly="1"/>
|
||||
<field name="years_of_service" readonly="1"/>
|
||||
<field name="original_position" readonly="1"/>
|
||||
<field name="previous_position" readonly="1"/>
|
||||
<field name="status_first" readonly="1"/>
|
||||
<field name="stage_id" readonly="1"/>
|
||||
<field name="interview_time" readonly="1"/>
|
||||
<field name="stage_id" readonly="1" />
|
||||
<field name="interview_time"/>
|
||||
<field name="room_id"/>
|
||||
<field name="interview_results"/>
|
||||
<button name="buttn_applicant_ids" type="object" string="详细信息"/>
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="col-12 text-center">
|
||||
<field name="image_1920" widget="image" class="oe_avatar" options="{'preview_image': 'image_128'}"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="名称"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
@@ -165,9 +167,6 @@
|
||||
</page>
|
||||
<page string="附件">
|
||||
<group col="2">
|
||||
<group colspan="2">
|
||||
<field name="one_inch_photo_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="id_card_id"/>
|
||||
<field name="social_security_id"/>
|
||||
|
||||
@@ -8,9 +8,6 @@
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="yuthon_company"/>
|
||||
<field name="date_birth"/>
|
||||
<field name="political"/>
|
||||
<field name="education"/>
|
||||
<field name="onboard_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -42,26 +39,26 @@
|
||||
<group>
|
||||
<field name="worker_name" required="1"/>
|
||||
<field name="documents_ids" widget="many2many_tags"/>
|
||||
<field name="date_birth"/>
|
||||
<field name="salary"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="nation"/>
|
||||
<field name="grades_id"/>
|
||||
<field name="origin"/>
|
||||
<field name="social_security"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="political"/>
|
||||
<field name="education"/>
|
||||
<field name="onboard_time"/>
|
||||
<field name="salary"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="probation_period"/>
|
||||
<field name="contract_start"/>
|
||||
<field name="contract_end"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<label for="duration_employment"/>
|
||||
<div>
|
||||
<field name="duration_employment" class="oe_inline"/>至
|
||||
<field name="duration_employment" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="account"/>
|
||||
|
||||
@@ -36,11 +36,16 @@
|
||||
parent="hr_recruitment_app_menu_board"
|
||||
action="hr_recruitment.action_hr_job"
|
||||
sequence="1"/>
|
||||
<menuitem id="hr_job_postings_menu_board"
|
||||
name="招聘信息"
|
||||
parent="hr_recruitment_app_menu_board"
|
||||
action="yuthon_hr_employee.yuthon_job_postings_action"
|
||||
sequence="3"/>
|
||||
<menuitem id="hr_recruitment_all_menu_board"
|
||||
name="全部申请"
|
||||
parent="hr_recruitment_app_menu_board"
|
||||
action="hr_recruitment.crm_case_categ0_act_job"
|
||||
sequence="3"/>
|
||||
sequence="5"/>
|
||||
<menuitem id="hr_recruitment_report_menu_board"
|
||||
name="报告"
|
||||
parent="hr_recruitment_menu_root_board"
|
||||
@@ -62,6 +67,7 @@
|
||||
<menuitem id="hr_recruitment_work_job_menu_board"
|
||||
name="工作岗位"
|
||||
parent="hr_recruitment_menu_root_board"
|
||||
action="hr.action_hr_job"
|
||||
sequence="3"/>
|
||||
<menuitem id="hr_process_work_job_menu_board"
|
||||
name="流程"
|
||||
@@ -87,21 +93,6 @@
|
||||
parent="hr_process_work_job_menu_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_message_login_action"
|
||||
sequence="9"/>
|
||||
<menuitem id="hr_recruit_post_menu_root_board"
|
||||
name="工作岗位"
|
||||
parent="hr_recruitment_work_job_menu_board"
|
||||
action="hr.action_hr_job"
|
||||
sequence="1"/>
|
||||
<menuitem id="hr_recruitment_stage_menu_board"
|
||||
name="阶段"
|
||||
parent="hr_recruitment_work_job_menu_board"
|
||||
action="hr_recruitment.hr_recruitment_stage_act"
|
||||
sequence="3"/>
|
||||
<menuitem id="hr_recruitment_employment_menu_board"
|
||||
name="就业类型"
|
||||
parent="hr_recruitment_work_job_menu_board"
|
||||
action="hr.hr_contract_type_action"
|
||||
sequence="6"/>
|
||||
<menuitem id="hr_recruitment_app2_menu_board"
|
||||
name="应用"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
@@ -121,21 +112,31 @@
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="yuthon_hr_employee.applicant_tage_setting_action"
|
||||
sequence="5"/>
|
||||
<menuitem id="hr_recruitment_stage_menu_board"
|
||||
name="阶段配置"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr_recruitment.hr_recruitment_stage_act"
|
||||
sequence="7"/>
|
||||
<menuitem id="hr_recruitment_employment_menu_board"
|
||||
name="就业类型配置"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr.hr_contract_type_action"
|
||||
sequence="9"/>
|
||||
<menuitem id="hr_recruitment_degree_menu_board"
|
||||
name="学历"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr_recruitment.hr_recruitment_degree_action"
|
||||
sequence="7"/>
|
||||
sequence="11"/>
|
||||
<menuitem id="hr_recruitment_reason_menu_board"
|
||||
name="拒绝原因"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr_recruitment.hr_applicant_refuse_reason_action"
|
||||
sequence="9"/>
|
||||
sequence="13"/>
|
||||
<menuitem id="hr_recruitment_label_menu_board"
|
||||
name="标签"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr_recruitment.hr_applicant_category_action"
|
||||
sequence="11"/>
|
||||
sequence="15"/>
|
||||
<!-- 人事 -->
|
||||
<menuitem id="hr_menu_root_board"
|
||||
name="人事管理"
|
||||
|
||||
Reference in New Issue
Block a user