添加功能

This commit is contained in:
zhouzhou
2024-11-16 17:32:25 +08:00
parent 720ce6f8d5
commit c744e91f4e
39 changed files with 424 additions and 47 deletions
+5 -1
View File
@@ -12,7 +12,7 @@
'category': 'Human Resources/Attendances',
'sequence': 240,
'website': 'https://www.pengyuthon.com',
'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'soong_workflow','yuthon_issue','planning'],
'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'soong_workflow','yuthon_issue','planning','calendar'],
'data': [
'security/ir.model.access.csv',
# 'security/approval_attendance.xml',
@@ -20,6 +20,10 @@
# 'views/inherit_hr_employee_views.xml',
'views/hr_attendance_views.xml',
'views/resource_calendar_leaves_views.xml',
'views/yuthon_adjustments_approval_views.xml',
'views/yuthon_duty_arrangement_views.xml',
'views/yuthon_duty_summary_views.xml',
'views/yuthon_duty_setting_views.xml',
# 'views/attendance_iot_datas.xml',
# 'views/attendance_iot_manager_views.xml',
# 'views/attendance_iot_views.xml',
@@ -41,4 +41,11 @@
<field name="prefix">ZB%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
</record>
<record id="seq_adjustments_approval" model="ir.sequence">
<field name="name">值班调休申请序号</field>
<field name="code">adjustments_approval</field>
<field name="prefix">TX%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
</record>
</odoo>
+4 -1
View File
@@ -22,6 +22,9 @@ from . import card_approval
from . import planning_template_inherit
from . import overtime_page
from . import inherit_planning_role
from . import yuthon_duty_summary
from . import yuthon_adjustments_approval
from . import yuthon_duty_arrangement
from . import yuthon_duty_setting
+1 -1
View File
@@ -15,7 +15,7 @@ class CardApprovals(models.Model):
code = fields.Char(string="编号",default=lambda self: self.env['ir.sequence'].next_by_code('overtime_approval'))
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="部门")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
reason_application = fields.Html(string="申请事由")
replacement_time = fields.Datetime(string="补卡时间")
+1 -1
View File
@@ -16,7 +16,7 @@ class DutyApprovals(models.Model):
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
users_id = fields.Many2one('res.users', string="申请人",default=lambda self: self.env.user.id)
duty_ids = fields.One2many('duty.approval.line','duty_id',string="值班人明细")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
reason_application = fields.Char(string="事由")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
@api.depends('date_start', 'date_end')
+1 -1
View File
@@ -17,7 +17,7 @@ class GoApprovals(models.Model):
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
reason_application = fields.Char(string="事由")
go_approval_ids = fields.One2many('go.approvals.line', 'go_approval_id', string="外出详情")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
@api.onchange('is_issues')
@@ -18,7 +18,7 @@ class OvertimeApprovals(models.Model):
default=lambda self: self._default_user_lines())
reason_application = fields.Char(string="事由")
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
details = fields.Text(string="加班说明")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
@@ -24,7 +24,7 @@ class RemoveHolidayApprovals(models.Model):
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
date_end = fields.Datetime(string="结束时间")
reason_application = fields.Html(string="申请事由")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
@api.onchange('is_issues')
@@ -0,0 +1,39 @@
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
from odoo.exceptions import UserError
class YuthonAdjustmentsApproval(models.Model):
_name = 'yuthon.adjustments.approval'
_inherit = ['soong.workflow.mixin']
_description = '值班调休审批'
_rec_name = 'name'
yuthon_company = fields.Selection(related='users_id.employee_id.yuthon_company', string="公司")
name = fields.Char(string="标题")
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('adjustments_approval'))
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="部门")
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
reason_application = fields.Html(string="申请事由")
replacement_time = fields.Datetime(string="值班时间")
documents_ids = fields.Many2many('ir.attachment', string="附件")
active = fields.Boolean('Active', default=True, tracking=True)
@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("已经创建了相关的上会记录,不能取消勾选")
@@ -0,0 +1,49 @@
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
from odoo.exceptions import UserError
class YuthonDutyArrangement(models.Model):
_name = 'yuthon.duty.arrangement'
_description = '值班安排'
_order = 'start_time desc'
_rec_name = 'employee_id'
employee_id = fields.Many2one('hr.employee', string='员工',
domain=lambda self: [('department_id.name', '=', '仓储组')])
start_time = fields.Datetime(string="开始时间")
end_time = fields.Datetime(string="结束时间")
remind = fields.Selection([('fifteen', '提醒-15分钟'), ('thirty', '提醒-30分钟'), ('one_hour', '提醒-1小时'),
('two_hour', '提醒-2小时')], string='提醒')
remarks = fields.Text(string='备注')
is_photo = fields.Boolean(string='拍照回传1', compute='_compute_is_photo')
is_photo_two = fields.Boolean(string='拍照回传2', compute='_compute_is_photo')
is_photo_three = fields.Boolean(string='拍照回传3', compute='_compute_is_photo')
photo_id = fields.Many2one('documents.document', string="文件1")
photo_id_two = fields.Many2one('documents.document', string="文件2")
photo_id_three = fields.Many2one('documents.document', string="文件3")
duration = fields.Datetime(string='时长1')
duration_two = fields.Datetime(string='时长2')
duration_three = fields.Datetime(string='时长3')
is_abnormal = fields.Boolean(string='是否异常')
@api.model_create_multi
def create(self, vals_list):
performance_records = super().create(vals_list)
for performance in performance_records:
self.env['yuthon.duty.summary'].create({
'employee_id': performance.employee_id.id,
'duty_arrangement_id': performance.id,
})
return performance_records
@api.depends('duration', 'duration_two', 'duration_three')
def _compute_is_photo(self):
for record in self:
record.is_photo = bool(record.duration)
record.is_photo_two = bool(record.duration_two)
record.is_photo_three = bool(record.duration_three)
@api.onchange('duration')
def bottom_auto_schedule(self):
pass
@@ -0,0 +1,8 @@
from odoo import api, fields, models, tools, _
class YuthonDutySetting(models.Model):
_name = 'yuthon.duty.setting'
_description = '值班说明配置'
reason_application = fields.Html(string="说明")
@@ -0,0 +1,19 @@
from odoo import api, fields, models, tools, _
class YuthonDutySummary(models.Model):
_name = 'yuthon.duty.summary'
_description = '值班汇总'
employee_id = fields.Many2one('hr.employee', string='员工')
duty_weekdays = fields.Float(string='周一至周五值班次数')
subtotal_weekdays = fields.Float(string='小计')
duty_weekends = fields.Float(string='周六日值班次数(不调休)')
subtotal_weekends = fields.Float(string='小计')
duty_weekends_leave = fields.Float(string='周六日值班次数(调休)')
subtotal_weekends_leave = fields.Float(string='小计')
total_duty_shifts = fields.Float(string='值班合计')
holidays = fields.Float(string='节假日值班费(元)')
total = fields.Float(string='总合计')
remake = fields.Text(string='备注')
duty_arrangement_id = fields.Many2one('yuthon.duty.arrangement', string='关联值班安排')
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="yuthon_duty_summary_report_template">
</template>
</odoo>
@@ -10,3 +10,7 @@ access_go_approvals_line,go.approvals.line,model_go_approvals_line,base.group_us
access_overtime_user_line,overtime.user.line,model_overtime_user_line,base.group_user,1,1,1,1
access_duty_approval_line,duty.approval.line,model_duty_approval_line,base.group_user,1,1,1,1
access_overtime_page,overtime.page,model_overtime_page,base.group_user,1,1,1,1
access_yuthon_duty_summary,yuthon.duty.summary,model_yuthon_duty_summary,base.group_user,1,1,1,1
access_yuthon_adjustments_approval,yuthon.adjustments.approval,model_yuthon_adjustments_approval,base.group_user,1,1,1,1
access_yuthon_duty_arrangement,yuthon.duty.arrangement,model_yuthon_duty_arrangement,base.group_user,1,1,1,1
access_yuthon_duty_setting,yuthon.duty.setting,model_yuthon_duty_setting,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_overtime_user_line overtime.user.line model_overtime_user_line base.group_user 1 1 1 1
11 access_duty_approval_line duty.approval.line model_duty_approval_line base.group_user 1 1 1 1
12 access_overtime_page overtime.page model_overtime_page base.group_user 1 1 1 1
13 access_yuthon_duty_summary yuthon.duty.summary model_yuthon_duty_summary base.group_user 1 1 1 1
14 access_yuthon_adjustments_approval yuthon.adjustments.approval model_yuthon_adjustments_approval base.group_user 1 1 1 1
15 access_yuthon_duty_arrangement yuthon.duty.arrangement model_yuthon_duty_arrangement base.group_user 1 1 1 1
16 access_yuthon_duty_setting yuthon.duty.setting model_yuthon_duty_setting base.group_user 1 1 1 1
+2 -7
View File
@@ -12,7 +12,6 @@
</tree>
</field>
</record>
<record id="card_approval_form" model="ir.ui.view">
<field name="name">card.approval.actions</field>
<field name="model">card.approval</field>
@@ -30,6 +29,8 @@
</group>
<group>
<field name="actual_punch"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<group string="审批事项">
@@ -38,14 +39,8 @@
<field name="code"/>
<field name="reason_application"/>
<field name="documents_ids" widget="preview_many2many"/>
<field name="is_issues"/>
</group>
</group>
<notebook>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
</field>
+1 -3
View File
@@ -37,6 +37,7 @@
<group>
<field name="reason_application"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<notebook>
@@ -53,9 +54,6 @@
</tree>
</field>
</page>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
+1 -3
View File
@@ -38,6 +38,7 @@
<group>
<field name="reason_application"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<notebook>
@@ -52,9 +53,6 @@
</tree>
</field>
</page>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -40,6 +40,7 @@
<field name="users_id"/>
<field name="details"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<notebook>
@@ -57,9 +58,6 @@
</tree>
</field>
</page>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -35,17 +35,13 @@
<field name="date"/>
<field name="code"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<group string="审批事由">
<field name="name"/>
<field name="reason_application"/>
</group>
<notebook>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
</field>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_yuthon_adjustments_approval_tree" model="ir.ui.view">
<field name="name">yuthon.adjustments.approval.tree</field>
<field name="model">yuthon.adjustments.approval</field>
<field name="arch" type="xml">
<tree string="值班调休审批">
<field name="name"/>
<field name="users_id"/>
<field name="yuthon_company"/>
<field name="department_id"/>
</tree>
</field>
</record>
<record id="view_yuthon_adjustments_approval_form" model="ir.ui.view">
<field name="name">yuthon.adjustments.approval.form</field>
<field name="model">yuthon.adjustments.approval</field>
<field name="arch" type="xml">
<form string="值班调休审批">
<sheet>
<group string="个人信息" col="2">
<group>
<field name="users_id"/>
<field name="yuthon_company"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="replacement_time"/>
<field name="department_id"/>
</group>
</group>
<group string="审批事项">
<group>
<field name="name"/>
<field name="code"/>
<field name="reason_application"/>
<field name="documents_ids" widget="preview_many2many"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_yuthon_adjustments_approval_action" model="ir.actions.act_window">
<field name="name">调休审批</field>
<field name="res_model">yuthon.adjustments.approval</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_yuthon_duty_arrangement_tree" model="ir.ui.view">
<field name="name">yuthon.duty.arrangement.tree</field>
<field name="model">yuthon.duty.arrangement</field>
<field name="arch" type="xml">
<tree string="值班安排"
decoration-danger="is_abnormal">
<header>
<button name="bottom_auto_schedule" type="object" string="自动排班" class="oe_highlight"/>
</header>
<field name="employee_id"/>
<field name="start_time"/>
<field name="end_time"/>
<field name="remind"/>
<field name="is_photo"/>
<field name="is_photo_two"/>
<field name="is_photo_three"/>
<field name="is_abnormal"/>
</tree>
</field>
</record>
<record id="view_yuthon_duty_arrangement_form" model="ir.ui.view">
<field name="name">yuthon.duty.arrangement.form</field>
<field name="model">yuthon.duty.arrangement</field>
<field name="arch" type="xml">
<form string="值班安排">
<sheet>
<div class="oe_title">
<label for="employee_id"/>
<h1>
<field name="employee_id" required='1'/>
</h1>
</div>
<group col="2">
<group>
<field name="start_time"/>
<field name="is_abnormal"/>
</group>
<group>
<field name="end_time"/>
<field name="remind"/>
</group>
</group>
<group>
<field name="remarks"/>
</group>
<group col="3" string="值班照片信息">
<group>
<field name="is_photo"/>
<field name="is_photo_two"/>
<field name="is_photo_three"/>
</group>
<group>
<field name="photo_id"/>
<field name="photo_id_two"/>
<field name="photo_id_three"/>
</group>
<group>
<field name="duration"/>
<field name="duration_two"/>
<field name="duration_three"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_yuthon_duty_arrangement_search" model="ir.ui.view">
<field name="name">yuthon.duty.arrangement.search</field>
<field name="model">yuthon.duty.arrangement</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
</search>
</field>
</record>
<record id="view_duty_calendar_event_calendar" model="ir.ui.view">
<field name="name">yuthon.duty.arrangement.calendar</field>
<field name="model">yuthon.duty.arrangement</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="待办事项"
date_start="start_time"
date_stop="end_time"
event_open_popup="true"
event_limit="5"
quick_create="false"
quick_create_view_id="%(yuthon_hr_attendance.view_yuthon_duty_arrangement_form)d">
</calendar>
</field>
</record>
<record id="view_yuthon_duty_arrangement_action" model="ir.actions.act_window">
<field name="name">值班安排</field>
<field name="res_model">yuthon.duty.arrangement</field>
<field name="view_mode">tree,form,calendar,search</field>
</record>
</odoo>
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_yuthon_duty_setting_tree" model="ir.ui.view">
<field name="name">yuthon.duty.setting.tree</field>
<field name="model">yuthon.duty.setting</field>
<field name="arch" type="xml">
<tree string="值班说明">
<field name="reason_application"/>
</tree>
</field>
</record>
<record id="view_yuthon_duty_setting_form" model="ir.ui.view">
<field name="name">yuthon.duty.setting.form</field>
<field name="model">yuthon.duty.setting</field>
<field name="arch" type="xml">
<form string="值班说明">
<sheet>
<group>
<field name="reason_application"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_yuthon_duty_setting" model="ir.actions.act_window">
<field name="name">值班说明</field>
<field name="res_model">yuthon.duty.setting</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_yuthon_duty_summary_tree" model="ir.ui.view">
<field name="name">yuthon.duty.summary.tree</field>
<field name="model">yuthon.duty.summary</field>
<field name="arch" type="xml">
<tree string="值班汇总" editable="bottom">
<field name="employee_id" required='1'/>
<field name="duty_weekdays"/>
<field name="subtotal_weekdays"/>
<field name="duty_weekends"/>
<field name="subtotal_weekends"/>
<field name="duty_weekends_leave"/>
<field name="subtotal_weekends_leave"/>
<field name="total_duty_shifts"/>
<field name="holidays"/>
<field name="total"/>
<field name="remake"/>
</tree>
</field>
</record>
<record id="yuthon_duty_summary_report_actions" model="ir.actions.report">
<field name="name">值班汇总打印</field>
<field name="model">yuthon.duty.summary</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">yuthon_hr_attendance.yuthon_duty_summary_report_template</field>
<field name="report_file">yuthon_hr_attendance.yuthon_duty_summary_report_template</field>
<field name="print_report_name">'%s-值班汇总'%</field>
<field name="binding_model_id" ref="model_yuthon_duty_summary"/>
<field name="binding_type">report</field>
</record>
<record id="view_yuthon_duty_summary_action" model="ir.actions.act_window">
<field name="name">值班汇总</field>
<field name="res_model">yuthon.duty.summary</field>
<field name="view_mode">tree</field>
</record>
</odoo>
+1
View File
@@ -21,6 +21,7 @@
'data/publish_applicant_setting_data.xml',
'security/ir.model.access.csv',
'security/job_lv_security_group.xml',
'security/hr_job_company_security_group.xml',
'views/yuthon_hr_employee_views.xml',
'views/yuthon_hr_department_views.xml',
'views/yuthon_job_lv_views.xml',
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="inherit_hr_job_views_rule" model="ir.rule">
<field name="name">岗位编制公司过滤</field>
<field name="model_id" ref="model_hr_job"/>
<field name="domain_force">[('yuthon_company', '=', user.employee_id.yuthon_company)]</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
</odoo>
@@ -16,7 +16,7 @@ class YuthonAppointmentApproval(models.Model):
entrant_illustrate = fields.Text(string="录入说明")
documents_ids = fields.Many2many('documents.document', string="附件")
appointment_result_ids = fields.One2many('yuthon.appointment.result.line', 'appointment_result_id', string="聘任结果")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
# 聘任结果
judge_team_leader = fields.Many2one('hr.employee', string="评审小组组长")
@@ -14,7 +14,7 @@ class YuthonInterviewApproval(models.Model):
department_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='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'),
('thlc', '天河粮储'), ('tctj', '天投城建')], string="公司")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
@@ -28,12 +28,12 @@ class YuthonLeavingApproval(models.Model):
application_data = fields.Date(string="申请日期")
notice_documents_ids= fields.Many2many('documents.document', string="辞职申请")
resignation_reason = fields.Text(string="辞职原因")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
is_leaving = fields.Boolean(string="同意离职", default=False)
is_leaving = fields.Boolean(string="同意离职")
leaving_date = fields.Date(string="工作期限")
handover_person = fields.Many2one("hr.employee", string="交接人")
is_handover = fields.Boolean(string="交接完成", default=False)
is_handover = fields.Boolean(string="交接完成")
@api.onchange('is_issues')
def _onchange_is_issues(self):
@@ -80,7 +80,7 @@ class YuthonMessageLogin(models.Model):
driving_license_validity = fields.Date(string='有效期')
resignation_id = fields.Many2one('documents.document', string='离职证明')
medical_exam_cost = fields.Float(string='体检费用(含乙肝)')
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
login_document_id = fields.Many2one('ir.attachment', string="简历附件")
@@ -41,7 +41,7 @@ class YuthonOnboardApproval(models.Model):
details_personal_information_form_id = fields.Many2one('yuthon.message.login', string="个人信息表详情")
details_recruitment_needs_form_id = fields.Many2one('yuthon.recruitment.approval', string="招聘需求详情")
details_interview_form_id = fields.Many2many('yuthon.interview.approval', string="面试详情")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
# 合同
contracted_status = fields.Selection([('first', '首'
@@ -13,7 +13,7 @@ class YuthonPrepareApproval(models.Model):
department_id = fields.Many2one("hr.department", string="部门",)
name = fields.Char(string='标题')
reason = fields.Html(string="正文")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
adjust_information_ids = fields.One2many('prepare.approval.line', 'prepare_approval_id', string="关联调整信息")
@@ -25,7 +25,7 @@ class YuthonReassignmentApproval(models.Model):
place_of_work = fields.Char(string="工作地点")
use_user_type = fields.Selection(related="employee_id.use_user_type", string="聘用形式")
person_attributes = fields.Selection([('in', '编制内'), ('out', '编制外')], string="人员属性")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
#异动信息
@@ -14,7 +14,7 @@ class YuthonRecruitmentApproval(models.Model):
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_recruitment_approval_code'))
reason = fields.Html(string="正文")
recruitment_ids = fields.One2many('hr.job', 'recruitment_approval_id', string="招聘申请")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
@@ -22,7 +22,7 @@ class YuthonRegularizationPrepareApproval(models.Model):
trial_end_date = fields.Date(string="试用期结束日期")
parent_id = fields.Many2one(related='employee_id.parent_id',string="直线上级")
business_leader = fields.Char(string="业务线上级")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
# 转正考核
job_coach = fields.Char(string="工作指导人一")
@@ -17,7 +17,7 @@ class YuthonRewardApproval(models.Model):
entrant_date = fields.Date(string="录入日期")
entrant_illustrate = fields.Text(string="录入说明")
notice_documents_ids = fields.Many2many('documents.document', string="附件")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
reward_results_ids = fields.One2many('yuthon.reward.punishment.details', 'reward_punishment_id', string="奖罚明细")
@@ -17,7 +17,7 @@ class YuthonServiceApproval(models.Model):
job_id = fields.Many2one('hr.job', string="岗位")
reason_issuance = fields.Char(string="开证原因")
issue_text = fields.Html(string="正文")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
@api.onchange('is_issues')
@@ -27,7 +27,7 @@ class YutransferApproval(models.Model):
notification_change_id = fields.Many2one("hr.employee", string="告知人员")
handover_reason = fields.Text(string="移交原因")
notice_documents_ids = fields.Many2many('documents.document', string="附件")
is_issues = fields.Boolean(string='是否上会', default=False)
is_issues = fields.Boolean(string='是否上会')
related_issues_id = fields.Many2one('issue.library', string="关联议题")
transfer_ids = fields.One2many('yuthon.transfer.infor.detail.lines', 'transfer_id')
@@ -43,8 +43,5 @@
</div>
</div>
</t>
</template>
</odoo>
+22 -2
View File
@@ -396,10 +396,20 @@
parent="hr_attendance_root_board"
action="hr_attendance.hr_attendance_action"
sequence="4"/>
<menuitem id="menu_hr_attendance_duty_summary_board"
name="值班安排"
parent="hr_attendance_root_board"
action="yuthon_hr_attendance.view_yuthon_duty_arrangement_action"
sequence="8"/>
<menuitem id="menu_hr_attendance_summary_root_board"
name="值班汇总"
parent="hr_attendance_root_board"
action="yuthon_hr_attendance.view_yuthon_duty_summary_action"
sequence="12"/>
<menuitem id="menu_hr_attendance_approval_request_board"
name="流程"
parent="hr_attendance_root_board"
sequence="5"/>
sequence="15"/>
<menuitem id="menu_hr_attendance_scheme_request_board"
name="考勤方案"
parent="menu_hr_attendance_approval_request_board"
@@ -435,10 +445,15 @@
parent="menu_hr_attendance_approval_request_board"
sequence="13"
action="yuthon_hr_attendance.approval_request_card"/>
<menuitem id="menu_adjustments_approval_board"
name="值班调休申请"
parent="menu_hr_attendance_approval_request_board"
sequence="15"
action="yuthon_hr_attendance.view_yuthon_adjustments_approval_action"/>
<menuitem id="attendance_resources_setting_root_board"
name="配置"
parent="hr_attendance_root_board"
sequence="9"/>
sequence="99"/>
<menuitem id="menu_hr_plan_set_role_board"
name="班次名称"
parent="attendance_resources_setting_root_board"
@@ -459,6 +474,11 @@
parent="attendance_resources_setting_root_board"
sequence="4"
action="yuthon_hr_attendance.view_overtime_page_action"/>
<menuitem id="menu_yuthon_duty_setting_board"
name="值班说明配置"
parent="attendance_resources_setting_root_board"
sequence="7"
action="yuthon_hr_attendance.action_yuthon_duty_setting"/>
<!--假期管理-->
<menuitem id="holiday_manage_menu_root_board"
name="假期管理"