pengyuthon wechat

This commit is contained in:
李鹏宇
2024-12-04 09:14:20 +08:00
parent df8a653403
commit 03e0c0964b
20 changed files with 98 additions and 352 deletions
-2
View File
@@ -24,8 +24,6 @@
'views/inherit_planning_slot_views.xml',
'views/inherit_planning_slot_template_views.xml',
'views/yuthon_shift_planning_views.xml',
'views/yuthon_hv_planning_views.xml',
'views/yuthon_overall_planning_views.xml',
'views/yuthon_run_planning_views.xml',
'views/overtime_approval.xml',
'views/go_approval.xml',
-2
View File
@@ -13,7 +13,5 @@ from . import inherit_planning_role
from . import inherit_planning_slot_template
from . import inherit_planning_slot
from . import yuthon_shift_planning
from . import yuthon_hv_planning
from . import yuthon_overall_planning
from . import yuthon_run_planning
from . import duty_approval
@@ -62,14 +62,12 @@ class HrAttendance(models.Model):
min_hour_from = record.employee_id.resource_id.calendar_id.attendance_ids[0].hour_from
min_hour = int(min_hour_from)
min_minute = int(min_hour_from * 10 % min_hour_from)
if record.check_in:
check_in = record.check_in + timedelta(hours=8)
will_datetime_start = check_in.replace(hour=min_hour, minute=min_minute)
record.is_late_card = check_in > will_datetime_start
else:
record.is_no_card = True
max_hour_to = record.employee_id.resource_id.calendar_id.attendance_ids[-1].hour_to
max_hour = int(max_hour_to)
max_minute = int(max_hour_to * 10 % max_hour_to)
@@ -9,9 +9,9 @@ class PlanningRole(models.Model):
department_id = fields.Many2one('hr.department', string="部门")
def button_department_employee(self):
resource_list=[]
resource_list = []
for record in self:
child_ids = self.env['hr.department'].search([('parent_id', '=', record.department_id.id)])
child_ids = self.env['hr.department'].search([('parent_id', '=', record.department_id.id)])
if child_ids:
for child in child_ids:
employee_ids = self.env['hr.employee'].search([('department_id', '=', child.id)])
@@ -22,3 +22,15 @@ class PlanningRole(models.Model):
self.write({
'resource_ids': resource_list,
})
class PlanningSlotTemplate(models.Model):
_inherit = 'planning.slot.template'
department_id = fields.Many2one('hr.department', string="部门")
class InheritPlanningSlot(models.Model):
_inherit = 'planning.slot'
department_id = fields.Many2one('hr.department', string="部门")
@@ -1,8 +0,0 @@
from odoo import api, fields, models, tools
from odoo.exceptions import ValidationError
class InheritPlanningSlot(models.Model):
_inherit = 'planning.slot'
department_id = fields.Many2one('hr.department', string="部门")
@@ -1,8 +0,0 @@
from odoo import api, fields, models, tools
from odoo.exceptions import ValidationError
class PlanningSlotTemplate(models.Model):
_inherit = 'planning.slot.template'
department_id = fields.Many2one('hr.department', string="部门")
@@ -1,22 +0,0 @@
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
from odoo.exceptions import UserError
class YuthonHvPlanning(models.Model):
_name = 'yuthon.hv.planning'
_description = '高压班排班安排'
name = fields.Char(string='排班计划名称', required=True)
illustrate = fields.Char(string='排班说明', default='默认轮排到下个月')
engineering_hv_ids = fields.One2many('yuthon.engineering.hv.line', 'hv_planning_id', string='工程部运行班计划')
class YuthonEngineeringHvLine(models.Model):
_name = 'yuthon.engineering.hv.line'
_description = '工程部高压班计划明细'
employee_id = fields.Many2one('hr.employee', string='人员',
domain=lambda self: [('department_id.name', '=', '高压班')])
sequence = fields.Integer(string='序号')
hv_planning_id = fields.Many2one('yuthon.hv.planning', string='关联运行班排班计划')
@@ -1,22 +0,0 @@
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
from odoo.exceptions import UserError
class YuthonOverallPlanning(models.Model):
_name = 'yuthon.overall.planning'
_description = '综合班排班安排'
name = fields.Char(string='排班计划名称', required=True)
illustrate = fields.Char(string='排班说明', default='默认轮排到下个月')
overall_ids = fields.One2many('yuthon.engineering.overall.planning', 'overall_planning_id', string='综合排班计划')
class YuthonEngineeringOverallPlanning(models.Model):
_name = 'yuthon.engineering.overall.planning'
_description = '工程综合班排班安排'
employee_id = fields.Many2one('hr.employee', string='人员',
domain=lambda self: [('department_id.name', '=', '综合班')])
sequence = fields.Integer(string='序号')
overall_planning_id = fields.Many2one('yuthon.overall.planning', string='关联运行班排班计划')
@@ -1,5 +1,3 @@
from dateutils import years
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
from odoo.exceptions import UserError
@@ -7,12 +5,13 @@ from odoo.exceptions import UserError
class YuthonRunPlanning(models.Model):
_name = 'yuthon.run.planning'
_description = '运行班排班计划'
_description = '工程部排班计划'
name = fields.Char(string='排班计划名称', required=True)
illustrate = fields.Char(string='排班说明', default='默认轮排到下个月')
engineering_run_ids = fields.One2many('yuthon.engineering.run.line', 'engineering_planning_id',
string='关联运行班排班明细')
engineering_run_ids = fields.One2many('yuthon.engineering.run.line', 'engineering_planning_id', string='关联工程部排班明细')
high_run_ids = fields.One2many('yuthon.high.run.line', 'engineering_planning_id', string='关联工程部排班明细')
all_run_ids = fields.One2many('yuthon.all.run.line', 'engineering_planning_id', string='关联工程部排班明细')
def confirm(self):
today = datetime.today().date()
@@ -69,58 +68,30 @@ class YuthonRunPlanning(models.Model):
'sticky': False,
}
}
# employees = self.engineering_run_ids
# num_employees = len(employees)
# for employee in employees:
# current_date = start_date
# # 计算下个月的第一天
# if current_date.month == 12:
# next_month_start = datetime(current_date.year + 1, 1, 1, 0, 0, 0)
# else:
# next_month_start = datetime(current_date.year, current_date.month + 1, 1, 0, 0, 0)
#
# while current_date < next_month_start and current_date <= end_date:
# self.create_planning_slot(employee, role_a.id, self.get_role_template(role_a), current_date)
# current_date += timedelta(days=1)
#
# current_date = start_date
# while current_date <= end_date:
# current_employee = employees[(current_date - start_date).days % num_employees]
# self.create_planning_slot(current_employee, role_b.id, self.get_role_template(role_b), current_date)
# current_date += timedelta(days=1)
# def create_planning_slot(self, record, role, role_template, current_date):
# start_hour = int(role_template.start_time)
# start_minute = int(round((role_template.start_time - start_hour) * 60))
# end_hour = int(role_template.end_time)
# end_minute = int(round((role_template.end_time - end_hour) * 60))
#
# start_time = current_date.replace(hour=start_hour, minute=start_minute, second=0,
# microsecond=0) + timedelta(hours=16)
# if role_template.end_time < role_template.start_time:
# end_time = (current_date + timedelta(days=1)).replace(hour=end_hour, minute=end_minute, second=0,
# microsecond=0) + timedelta(hours=16)
# else:
# end_time = current_date.replace(hour=end_hour, minute=end_minute, second=0,
# microsecond=0) + timedelta(hours=16)
#
# self.env['planning.slot'].create({
# 'resource_id': record.employee_id.resource_id.id,
# 'role_id': role,
# 'start_datetime': start_time,
# 'end_datetime': end_time,
# 'allocated_hours': 8,
# })
#
# def get_role_template(self, role):
# return self.env['planning.slot.template'].search([('role_id', '=', role.id)], limit=1)
class YuthonEngineeringRunLine(models.Model):
_name = 'yuthon.engineering.run.line'
_description = '工程部运行班计划明细'
_description = '运行班计划明细'
employee_id = fields.Many2one('hr.employee', string='人员',
domain=lambda self: [('department_id.name', '=', '运行班')])
employee_id = fields.Many2one('hr.employee', string='人员',domain=lambda self: [('department_id.name', '=', '运行班')])
sequence = fields.Integer(string='序号')
engineering_planning_id = fields.Many2one('yuthon.run.planning', string='关联运行班排班计划')
engineering_planning_id = fields.Many2one('yuthon.run.planning', string='关联工程部排班计划')
class YuthonHighRunLine(models.Model):
_name = 'yuthon.high.run.line'
_description = '高压班计划明细'
employee_id = fields.Many2one('hr.employee', string='人员', domain=lambda self: [('department_id.name', '=', '高压班')])
sequence = fields.Integer(string='序号')
engineering_planning_id = fields.Many2one('yuthon.run.planning', string='关联工程部排班计划')
class YuthonAllRunLine(models.Model):
_name = 'yuthon.all.run.line'
_description = '综合班计划明细'
employee_id = fields.Many2one('hr.employee', string='人员', domain=lambda self: [('department_id.name', '=', '综合班')])
sequence = fields.Integer(string='序号')
engineering_planning_id = fields.Many2one('yuthon.run.planning', string='关联工程部排班计划')
@@ -4,7 +4,7 @@ from datetime import datetime, time, timedelta
class YuthonShiftPlanning(models.Model):
_name = 'yuthon.shift.planning'
_description = '排班安排'
_description = '保安部排班安排'
name = fields.Char(string='排班名称', required=True)
illustrate = fields.Char(string='排班说明', default='默认按ABC三组轮排到下个月')
@@ -8,15 +8,16 @@ access_attendance_scheme,attendance_scheme,model_attendance_scheme,base.group_us
access_go_approvals_line,go.approvals.line,model_go_approvals_line,base.group_user,1,1,1,1
access_overtime_user_line,overtime.user.line,model_overtime_user_line,base.group_user,1,1,1,1
access_overtime_page,overtime.page,model_overtime_page,base.group_user,1,1,1,1
access_duty_approval,duty.approval,model_duty_approval,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_yuthon_shift_planning,yuthon.shift.planning,model_yuthon_shift_planning,base.group_user,1,1,1,1
access_yuthon_shift_planning_a_line,yuthon.shift.planning.a.line,model_yuthon_shift_planning_a_line,base.group_user,1,1,1,1
access_yuthon_shift_planning_b_line,yuthon.shift.planning.b.line,model_yuthon_shift_planning_b_line,base.group_user,1,1,1,1
access_yuthon_shift_planning_c_line,yuthon.shift.planning.c.line,model_yuthon_shift_planning_c_line,base.group_user,1,1,1,1
access_yuthon_hv_planning,yuthon.hv.planning,model_yuthon_hv_planning,base.group_user,1,1,1,1
access_yuthon_engineering_hv_line,yuthon.engineering.hv.line,model_yuthon_engineering_hv_line,base.group_user,1,1,1,1
access_yuthon_yuthon_overall_planning,yuthon.overall.planning,model_yuthon_overall_planning,base.group_user,1,1,1,1
access_yuthon_engineering_overall_planning,engineering.overall.planning,model_yuthon_engineering_overall_planning,base.group_user,1,1,1,1
access_yuthon_run_planning,yuthon.run.planning,model_yuthon_run_planning,base.group_user,1,1,1,1
access_yuthon_engineering_run_line,engineering.run.line,model_yuthon_engineering_run_line,base.group_user,1,1,1,1
access_duty_approval,duty.approval,model_duty_approval,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_yuthon_high_run_line,high.run.line,model_yuthon_high_run_line,base.group_user,1,1,1,1
access_yuthon_all_run_line,all.run.line,model_yuthon_all_run_line,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
8 access_go_approvals_line go.approvals.line model_go_approvals_line base.group_user 1 1 1 1
9 access_overtime_user_line overtime.user.line model_overtime_user_line base.group_user 1 1 1 1
10 access_overtime_page overtime.page model_overtime_page base.group_user 1 1 1 1
11 access_duty_approval duty.approval model_duty_approval base.group_user 1 1 1 1
12 access_duty_approval_line duty.approval.line model_duty_approval_line base.group_user 1 1 1 1
13 access_yuthon_shift_planning yuthon.shift.planning model_yuthon_shift_planning base.group_user 1 1 1 1
14 access_yuthon_shift_planning_a_line yuthon.shift.planning.a.line model_yuthon_shift_planning_a_line base.group_user 1 1 1 1
15 access_yuthon_shift_planning access_yuthon_shift_planning_b_line yuthon.shift.planning yuthon.shift.planning.b.line model_yuthon_shift_planning model_yuthon_shift_planning_b_line base.group_user 1 1 1 1
16 access_yuthon_shift_planning_a_line access_yuthon_shift_planning_c_line yuthon.shift.planning.a.line yuthon.shift.planning.c.line model_yuthon_shift_planning_a_line model_yuthon_shift_planning_c_line base.group_user 1 1 1 1
17 access_yuthon_shift_planning_b_line access_yuthon_run_planning yuthon.shift.planning.b.line yuthon.run.planning model_yuthon_shift_planning_b_line model_yuthon_run_planning base.group_user 1 1 1 1
18 access_yuthon_shift_planning_c_line access_yuthon_engineering_run_line yuthon.shift.planning.c.line engineering.run.line model_yuthon_shift_planning_c_line model_yuthon_engineering_run_line base.group_user 1 1 1 1
19 access_yuthon_hv_planning access_yuthon_high_run_line yuthon.hv.planning high.run.line model_yuthon_hv_planning model_yuthon_high_run_line base.group_user 1 1 1 1
access_yuthon_engineering_hv_line yuthon.engineering.hv.line model_yuthon_engineering_hv_line base.group_user 1 1 1 1
access_yuthon_yuthon_overall_planning yuthon.overall.planning model_yuthon_overall_planning base.group_user 1 1 1 1
access_yuthon_engineering_overall_planning engineering.overall.planning model_yuthon_engineering_overall_planning base.group_user 1 1 1 1
20 access_yuthon_run_planning access_yuthon_all_run_line yuthon.run.planning all.run.line model_yuthon_run_planning model_yuthon_all_run_line base.group_user 1 1 1 1
21
22
23
@@ -103,24 +103,12 @@
<field name="name">全部考勤</field>
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('employee_id.department_id.name', '=', '保安部')]</field>
<field name="domain">[('employee_id.department_id.name','in',['保安部', '班组A', '班组B','班组C'])]</field>
</record>
<record id="hr_attendance_action3" model="ir.actions.act_window">
<field name="name">全部考勤</field>
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree</field>
<field name="domain">[('employee_id.department_id.name', '=', '运行班')]</field>
</record>
<record id="hr_attendance_action4" model="ir.actions.act_window">
<field name="name">全部考勤</field>
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree</field>
<field name="domain">[('employee_id.department_id.name' , '=' , '高压班')]</field>
</record>
<record id="hr_attendance_action5" model="ir.actions.act_window">
<field name="name">全部考勤</field>
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree</field>
<field name="domain">[('employee_id.department_id.name', '=', '综合班')]</field>
<field name="domain">[('employee_id.department_id.name','in',['工程部', '运行班', '高压班','综合班'])]]</field>
</record>
</odoo>
@@ -10,34 +10,18 @@
</field>
</record>
<record id="action_planning_slot_form1" model="ir.actions.act_window">
<field name="name">排班计划</field>
<field name="name">保安部排班计划</field>
<field name="res_model">planning.slot</field>
<field name="view_mode">gantt,calendar,tree,form,kanban,pivot,graph</field>
<field name="context">{'planning_expand_resource': 1, 'planning_expand_role': 1}</field>
<field name="domain">[('department_id.name','in',['保安部', '班组A', '班组B','班组C'])]</field>
</record>
<record id="action_planning_slot_form2" model="ir.actions.act_window">
<field name="name">排班计划</field>
<field name="name">工程部排班计划</field>
<field name="res_model">planning.slot</field>
<field name="view_mode">tree</field>
<field name="view_mode">gantt,calendar,tree,form,kanban,pivot,graph</field>
<field name="context">{'planning_expand_resource': 1, 'planning_expand_role': 1}</field>
<field name="domain">[('department_id.name', '=', '运行班')]</field>
</record>
<record id="action_planning_slot_form3" model="ir.actions.act_window">
<field name="name">排班计划</field>
<field name="res_model">planning.slot</field>
<field name="view_mode">tree</field>
<field name="view_mode">gantt,calendar,tree,form,kanban,pivot,graph</field>
<field name="context">{'planning_expand_resource': 1, 'planning_expand_role': 1}</field>
<field name="domain">[('department_id.name', '=', '高压班')]</field>
</record>
<record id="action_planning_slot_form4" model="ir.actions.act_window">
<field name="name">排班计划</field>
<field name="res_model">planning.slot</field>
<field name="view_mode">tree</field>
<field name="view_mode">gantt,calendar,tree,form,kanban,pivot,graph</field>
<field name="context">{'planning_expand_resource': 1, 'planning_expand_role': 1}</field>
<field name="domain">[('department_id.name', '=', '综合班')]</field>
<field name="domain">[('department_id.name','in',['工程部', '运行班', '高压班','综合班'])]]</field>
</record>
</odoo>
@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id ="view_yuthon_hv_planning_tree" model="ir.ui.view">
<field name="name">yuthon.hv.planning.tree</field>
<field name="model">yuthon.hv.planning</field>
<field name="arch" type="xml">
<tree string="排班安排">
<field name="name"/>
<field name="illustrate"/>
</tree>
</field>
</record>
<record id ="view_yuthon_hv_planning_form" model="ir.ui.view">
<field name="name">yuthon.hv.planning.form</field>
<field name="model">yuthon.hv.planning</field>
<field name="arch" type="xml">
<form string="排班安排">
<sheet>
<group>
<field name="name"/>
<field name="illustrate"/>
</group>
<group string="排班安排">
<field name="engineering_hv_ids" string=" ">
<tree editable="bottom">
<field name="hv_planning_id" column_invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="employee_id"/>
</tree>
</field>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_yuthon_hv_planning" model="ir.actions.act_window">
<field name="name">排班安排</field>
<field name="res_model">yuthon.hv.planning</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id ="view_yuthon_overall_planning_tree" model="ir.ui.view">
<field name="name">yuthon.overall.planning.tree</field>
<field name="model">yuthon.overall.planning</field>
<field name="arch" type="xml">
<tree string="排班安排">
<field name="name"/>
<field name="illustrate"/>
</tree>
</field>
</record>
<record id ="view_yuthon_overall_planning_form" model="ir.ui.view">
<field name="name">yuthon.overall.planning.form</field>
<field name="model">yuthon.overall.planning</field>
<field name="arch" type="xml">
<form string="排班安排">
<sheet>
<group>
<field name="name"/>
<field name="illustrate"/>
</group>
<group string="排班安排">
<field name="overall_ids" string=" ">
<tree editable="bottom">
<field name="overall_planning_id" column_invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="employee_id"/>
</tree>
</field>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_yuthon_overall_planning" model="ir.actions.act_window">
<field name="name">排班安排</field>
<field name="res_model">yuthon.overall.planning</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -23,9 +23,27 @@
<field name="name"/>
<field name="illustrate"/>
</group>
<group string="排班安排">
<group string="运行班安排">
<field name="engineering_run_ids" string=" ">
<tree editable="bottom" >
<tree editable="bottom">
<field name="engineering_planning_id" column_invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="employee_id"/>
</tree>
</field>
</group>
<group string="高压班安排">
<field name="high_run_ids" string=" ">
<tree editable="bottom">
<field name="engineering_planning_id" column_invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="employee_id"/>
</tree>
</field>
</group>
<group string="综合班安排">
<field name="all_run_ids" string=" ">
<tree editable="bottom">
<field name="engineering_planning_id" column_invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="employee_id"/>
+20 -100
View File
@@ -15,10 +15,6 @@
parent="hr_attendance_root_board"
action="yuthon_hr_attendance.hr_attendance_action_is_abnormal"
sequence="2"/>
<!-- <menuitem id="menu_hr_plan_arrange_board"-->
<!-- name="计划总览"-->
<!-- parent="menu_hr_attendance_plan_request_board"-->
<!-- sequence="1"/>-->
<menuitem id="menu_hr_attendance_security_record_board"
name="保安部计划"
parent="hr_attendance_root_board"
@@ -37,16 +33,11 @@
name="考勤记录"
parent="menu_hr_attendance_security_record_board"
action="yuthon_hr_attendance.hr_attendance_action2"
sequence="8"/>
<!-- <menuitem id="menu_hr_attendance_security_process_record"-->
<!-- name="流程"-->
<!-- parent="menu_hr_attendance_security_record_board"-->
<!-- action="yuthon_hr_attendance.hr_attendance_action2"-->
<!-- sequence="15"/>-->
sequence="5"/>
<menuitem id="menu_hr_attendance_planning_setting"
name="配置"
parent="menu_hr_attendance_security_record_board"
sequence="20"/>
sequence="7"/>
<menuitem id="menu_hr_attendance_planning_board"
name="班次名称"
parent="menu_hr_attendance_planning_setting"
@@ -57,15 +48,30 @@
parent="menu_hr_attendance_planning_setting"
action="yuthon_hr_attendance.action_planning_slot_template_form1"
sequence="3"/>
<menuitem id="menu_hr_attendance_engineering_record_board"
name="工程部计划"
parent="hr_attendance_root_board"
action="yuthon_hr_attendance.hr_attendance_action3"
sequence="7"/>
<menuitem id="menu_hr_attendance_hv_board"
name="排班安排"
parent="menu_hr_attendance_engineering_record_board"
action="yuthon_hr_attendance.action_yuthon_run_planning"
sequence="1"/>
<menuitem id="menu_hr_plan_sources_board3"
name="排班计划"
parent="menu_hr_attendance_engineering_record_board"
action="yuthon_hr_attendance.action_planning_slot_form2"
sequence="3"/>
<menuitem id="menu_hr_attendance_security_record2"
name="考勤记录"
parent="menu_hr_attendance_engineering_record_board"
action="yuthon_hr_attendance.hr_attendance_action3"
sequence="5"/>
<menuitem id="menu_hr_attendance_planning_setting1"
name="配置"
parent="menu_hr_attendance_engineering_record_board"
sequence="99"/>
sequence="7"/>
<menuitem id="menu_hr_attendance_planning_board1"
name="班次名称"
parent="menu_hr_attendance_planning_setting1"
@@ -77,93 +83,7 @@
action="yuthon_hr_attendance.action_planning_slot_template_form2"
sequence="3"/>
<menuitem id="menu_hr_attendance_engineering_run_board"
name="运行班"
parent="menu_hr_attendance_engineering_record_board"
sequence="1"/>
<menuitem id="menu_hr_attendance_security_run_record"
name="排班安排"
parent="menu_hr_attendance_engineering_run_board"
action="yuthon_hr_attendance.action_yuthon_run_planning"
sequence="1"/>
<menuitem id="menu_hr_plan_sources_board2"
name="排班计划"
parent="menu_hr_attendance_engineering_run_board"
action="yuthon_hr_attendance.action_planning_slot_form2"
sequence="3"/>
<menuitem id="menu_hr_attendance_security_record1"
name="考勤记录"
parent="menu_hr_attendance_engineering_run_board"
action="yuthon_hr_attendance.hr_attendance_action3"
sequence="5"/>
<!-- <menuitem id="menu_hr_attendance_security_process_record1"-->
<!-- name="流程"-->
<!-- parent="menu_hr_attendance_engineering_run_board"-->
<!-- action="yuthon_hr_attendance.hr_attendance_action2"-->
<!-- sequence="7"/>-->
<menuitem id="menu_hr_attendance_engineering_hv_board"
name="高压班"
parent="menu_hr_attendance_engineering_record_board"
sequence="3"/>
<menuitem id="menu_hr_attendance_hv_board"
name="排班安排"
parent="menu_hr_attendance_engineering_hv_board"
action="yuthon_hr_attendance.action_yuthon_hv_planning"
sequence="1"/>
<menuitem id="menu_hr_plan_sources_board3"
name="排班计划"
parent="menu_hr_attendance_engineering_hv_board"
action="yuthon_hr_attendance.action_planning_slot_form3"
sequence="5"/>
<menuitem id="menu_hr_attendance_security_record2"
name="考勤记录"
parent="menu_hr_attendance_engineering_hv_board"
action="yuthon_hr_attendance.hr_attendance_action4"
sequence="7"/>
<!-- <menuitem id="menu_hr_attendance_security_process_record2"-->
<!-- name="流程"-->
<!-- parent="menu_hr_attendance_engineering_hv_board"-->
<!-- action="yuthon_hr_attendance.hr_attendance_action3"-->
<!-- sequence="9"/>-->
<menuitem id="menu_hr_attendance_engineering_integrated_board"
name="综合班"
parent="menu_hr_attendance_engineering_record_board"
sequence="5"/>
<menuitem id="menu_hr_attendance_overall_record"
name="排班安排"
parent="menu_hr_attendance_engineering_integrated_board"
action="yuthon_hr_attendance.action_yuthon_overall_planning"
sequence="1"/>
<menuitem id="menu_hr_plan_sources_board4"
name="排班计划"
parent="menu_hr_attendance_engineering_integrated_board"
action="yuthon_hr_attendance.action_planning_slot_form4"
sequence="3"/>
<menuitem id="menu_hr_attendance_security_record3"
name="考勤记录"
parent="menu_hr_attendance_engineering_integrated_board"
action="yuthon_hr_attendance.hr_attendance_action5"
sequence="5"/>
<!-- <menuitem id="menu_hr_attendance_security_process_record3"-->
<!-- name="流程"-->
<!-- parent="menu_hr_attendance_engineering_integrated_board"-->
<!-- action="yuthon_hr_attendance.hr_attendance_action3"-->
<!-- sequence="9"/>-->
<!-- <menuitem id="menu_hr_plan_employee_board"-->
<!-- name="按角色分类"-->
<!-- parent="menu_hr_plan_arrange_board"-->
<!-- action="planning.planning_action_schedule_by_role"-->
<!-- sequence="3"/>-->
<!-- <menuitem id="menu_hr_my_plan_board"-->
<!-- name="我的计划"-->
<!-- parent="menu_hr_attendance_plan_request_board"-->
<!-- action="planning.planning_action_my_calendar"-->
<!-- sequence="3"/>-->
<!-- <menuitem id="menu_hr_plan_approval_board"-->
<!-- name="计划分析"-->
<!-- parent="menu_hr_attendance_plan_request_board"-->
<!-- action="planning.planning_report_action_analysis"-->
<!-- sequence="5"/>-->
<menuitem id="hr_attendance_record_root_board"
name="考勤记录"
parent="hr_attendance_root_board"
@@ -21,9 +21,9 @@
<field name="active">False</field>
</record>
<!-- 讨论 -->
<!-- <record id="mail.menu_root_discuss" model="ir.ui.menu">-->
<!-- <field name="active">False</field>-->
<!-- </record>-->
<record id="mail.menu_root_discuss" model="ir.ui.menu">
<field name="active">False</field>
</record>
<!-- 发票 -->
<record id="account.menu_finance" model="ir.ui.menu">
<field name="active">False</field>
@@ -53,9 +53,9 @@
<field name="active">False</field>
</record>
<!--计划 -->
<record id="planning.planning_menu_root" model="ir.ui.menu">
<field name="active">False</field>
</record>
<!-- <record id="planning.planning_menu_root" model="ir.ui.menu">-->
<!-- <field name="active">False</field>-->
<!-- </record>-->
<!--通知公告-->
<record id="yuthon_notice.yuthon_notice_menu_config_root" model="ir.ui.menu">
<field name="sequence">2</field>