添加功能

This commit is contained in:
zhouzhou
2024-09-26 09:07:04 +08:00
parent 03ac39a6a5
commit a483ba0d39
15 changed files with 73 additions and 101 deletions
+1
View File
@@ -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,
+1
View File
@@ -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"
+3 -12
View File
@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
10 access_yuthon_directly_detail_lines yuthon_directly_detail_lines model_yuthon_directly_detail_lines base.group_user 1 1 1 1
11 access_yuthon_recent_work_detail_line yuthon_recent_work_detail_line model_yuthon_recent_work_detail_line base.group_user 1 1 1 1
12 access_publish_applicant_setting publish_applicant_setting model_publish_applicant_setting base.group_user 1 1 1 1
13 access_applicant_tage_setting applicant_tage_setting model_applicant_tage_setting base.group_user 1 1 1 1
14 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"/>
+20 -19
View File
@@ -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="人事管理"