添加功能
This commit is contained in:
@@ -16,7 +16,9 @@
|
||||
'soong_workflow', 'yuthon_issue', 'planning', 'calendar'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'security/attendance_security_group.xml',
|
||||
'data/attendance_code_data.xml',
|
||||
'data/attendance_role_groups_data.xml',
|
||||
'data/attendance_time_data.xml',
|
||||
'views/hr_attendance_views.xml',
|
||||
'views/resource_calendar_leaves_views.xml',
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="applicant_tage_attendance_sequence1" model="soong.user.role">
|
||||
<field name="name">运行班排班计划管理员</field>
|
||||
<field name="user_type">departmental_role</field>
|
||||
</record>
|
||||
<record id="applicant_tage_attendance_sequence2" model="soong.user.role">
|
||||
<field name="name">高压班排班计划管理员</field>
|
||||
<field name="user_type">departmental_role</field>
|
||||
</record>
|
||||
<record id="applicant_tage_attendance_sequence3" model="soong.user.role">
|
||||
<field name="name">综合班排班计划管理员</field>
|
||||
<field name="user_type">departmental_role</field>
|
||||
</record>
|
||||
<record id="applicant_tage_teamA_sequence" model="soong.user.role">
|
||||
<field name="name">班组A排班计划管理员</field>
|
||||
<field name="user_type">departmental_role</field>
|
||||
</record>
|
||||
<record id="applicant_tage_teamB_sequence2" model="soong.user.role">
|
||||
<field name="name">班组B排班计划管理员</field>
|
||||
<field name="user_type">departmental_role</field>
|
||||
</record>
|
||||
<record id="applicant_tage_teamC_sequence3" model="soong.user.role">
|
||||
<field name="name">班组C排班计划管理员</field>
|
||||
<field name="user_type">departmental_role</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -10,6 +10,7 @@ from . import card_approval
|
||||
from . import planning_template_inherit
|
||||
from . import overtime_page
|
||||
from . import inherit_planning_role
|
||||
from . import inherit_hr_employee
|
||||
from . import yuthon_shift_planning
|
||||
from . import yuthon_run_planning
|
||||
from . import duty_approval
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class YuthonHrEmployee(models.Model):
|
||||
_inherit = "hr.employee"
|
||||
|
||||
user_role_ids_changed = fields.Boolean(compute='_compute_user_roles')
|
||||
|
||||
@api.depends('user_role_ids')
|
||||
def _compute_user_roles(self):
|
||||
group_mapping = {
|
||||
'运行班排班计划管理员': 'group_property_run_admin',
|
||||
'高压班排班计划管理员': 'group_property_hv_admin',
|
||||
'综合班排班计划管理员': 'group_property_integrated_admin',
|
||||
'班组A排班计划管理员': 'group_property_class_a_admin',
|
||||
'班组B排班计划管理员': 'group_property_class_b_admin',
|
||||
'班组C排班计划管理员': 'group_property_class_c_admin',
|
||||
}
|
||||
old_users_ids = self.user_role_ids
|
||||
for employee in self:
|
||||
for role in employee.user_role_ids:
|
||||
group_id = group_mapping.get(role.name)
|
||||
if group_id:
|
||||
group = self.env.ref('yuthon_hr_attendance.' + group_id, raise_if_not_found=False)
|
||||
if group:
|
||||
# 未知因素屏蔽选择值
|
||||
group.write({'users': [(4, employee.user_id.id)]})
|
||||
self.user_role_ids = old_users_ids
|
||||
self.user_role_ids_changed = True
|
||||
@@ -12,6 +12,8 @@ class YuthonShiftPlanning(models.Model):
|
||||
planning_a_ids = fields.One2many('yuthon.shift.planning.a.line', 'shift_planning_id', string='关联A组')
|
||||
planning_b_ids = fields.One2many('yuthon.shift.planning.b.line', 'shift_planning_id', string='关联B组')
|
||||
planning_c_ids = fields.One2many('yuthon.shift.planning.c.line', 'shift_planning_id', string='关联C组')
|
||||
planning_ever_white_ids = fields.One2many('yuthon.shift.ever.white.line', 'shift_planning_id', string='关联常白班')
|
||||
planning_ever_night_ids = fields.One2many('yuthon.shift.ever.night.line', 'shift_planning_id', string='关联常夜班')
|
||||
|
||||
def confirm(self):
|
||||
start_date = datetime.now().replace(day=1) # 获取本月第一天零点
|
||||
@@ -23,7 +25,7 @@ class YuthonShiftPlanning(models.Model):
|
||||
planning_groups = {
|
||||
'planning_a_ids': range(len(role)), # 默认顺序: 早 -> 中 -> 夜
|
||||
'planning_b_ids': [1, 2, 0], # 中 -> 夜 -> 早
|
||||
'planning_c_ids': [2, 1, 0] # 夜 -> 中 -> 早
|
||||
'planning_c_ids': [2, 0, 1] # 夜 -> 早 -> 中
|
||||
}
|
||||
|
||||
for planning_group, role_order in planning_groups.items():
|
||||
@@ -64,6 +66,9 @@ class YuthonShiftPlanningALine(models.Model):
|
||||
employee_id = fields.Many2one('hr.employee', string='人员',
|
||||
domain=lambda self: [('department_id.name', 'in', ['保安部', '班组A', '班组B','班组C'])])
|
||||
sequence = fields.Integer(string='序号')
|
||||
regular_holidays = fields.Selection([('one', '星期一'), ('two', '星期二'), ('three', '星期三'),
|
||||
('four', '星期四'), ('five', '星期五'), ('six', '星期六'),
|
||||
('seven', '星期日')], string='固定休息日')
|
||||
shift_planning_id = fields.Many2one('yuthon.shift.planning', string='关联排班安排')
|
||||
|
||||
|
||||
@@ -74,6 +79,9 @@ class YuthonShiftPlanningBLine(models.Model):
|
||||
employee_id = fields.Many2one('hr.employee', string='人员',
|
||||
domain=lambda self: [('department_id.name', 'in', ['保安部', '班组A', '班组B','班组C'])])
|
||||
sequence = fields.Integer(string='序号')
|
||||
regular_holidays = fields.Selection([('one', '星期一'), ('two', '星期二'), ('three', '星期三'),
|
||||
('four', '星期四'), ('five', '星期五'), ('six', '星期六'),
|
||||
('seven', '星期日')], string='固定休息日')
|
||||
shift_planning_id = fields.Many2one('yuthon.shift.planning', string='关联排班安排')
|
||||
|
||||
|
||||
@@ -84,6 +92,35 @@ class YuthonShiftPlanningCLine(models.Model):
|
||||
employee_id = fields.Many2one('hr.employee', string='人员',
|
||||
domain=lambda self: [('department_id.name', 'in', ['保安部', '班组A', '班组B','班组C'])])
|
||||
sequence = fields.Integer(string='序号')
|
||||
regular_holidays = fields.Selection([('one', '星期一'), ('two', '星期二'), ('three', '星期三'),
|
||||
('four', '星期四'), ('five', '星期五'), ('six', '星期六'),
|
||||
('seven', '星期日')], string='固定休息日')
|
||||
shift_planning_id = fields.Many2one('yuthon.shift.planning', string='关联排班安排')
|
||||
|
||||
|
||||
class YuthonShiftEverWhiteLine(models.Model):
|
||||
_name = 'yuthon.shift.ever.white.line'
|
||||
_description = '常白班'
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='人员',
|
||||
domain=lambda self: [('department_id.name', 'in', ['保安部', '班组A', '班组B','班组C'])])
|
||||
sequence = fields.Integer(string='序号')
|
||||
regular_holidays = fields.Selection([('one', '星期一'), ('two', '星期二'), ('three', '星期三'),
|
||||
('four', '星期四'), ('five', '星期五'), ('six', '星期六'),
|
||||
('seven', '星期日')], string='固定休息日')
|
||||
shift_planning_id = fields.Many2one('yuthon.shift.planning', string='关联排班安排')
|
||||
|
||||
|
||||
class YuthonShiftEverNightLine(models.Model):
|
||||
_name = 'yuthon.shift.ever.night.line'
|
||||
_description = '常夜班'
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='人员',
|
||||
domain=lambda self: [('department_id.name', 'in', ['保安部', '班组A', '班组B','班组C'])])
|
||||
sequence = fields.Integer(string='序号')
|
||||
regular_holidays = fields.Selection([('one', '星期一'), ('two', '星期二'), ('three', '星期三'),
|
||||
('four', '星期四'), ('five', '星期五'), ('six', '星期六'),
|
||||
('seven', '星期日')], string='固定休息日')
|
||||
shift_planning_id = fields.Many2one('yuthon.shift.planning', string='关联排班安排')
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="module_category_attendance" model="ir.module.category">
|
||||
<field name="name">排班计划权限</field>
|
||||
</record>
|
||||
<record id="group_property_run_admin" model="res.groups">
|
||||
<field name="name">运行班排班计划管理员</field>
|
||||
<field name="category_id" ref="module_category_attendance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record id="group_property_hv_admin" model="res.groups">
|
||||
<field name="name">高压班排班计划管理员</field>
|
||||
<field name="category_id" ref="module_category_attendance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record id="group_property_integrated_admin" model="res.groups">
|
||||
<field name="name">综合班排班计划管理员</field>
|
||||
<field name="category_id" ref="module_category_attendance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record id="group_property_class_a_admin" model="res.groups">
|
||||
<field name="name">班组A排班计划管理员</field>
|
||||
<field name="category_id" ref="module_category_attendance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record id="group_property_class_b_admin" model="res.groups">
|
||||
<field name="name">班组B排班计划管理员</field>
|
||||
<field name="category_id" ref="module_category_attendance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record id="group_property_class_c_admin" model="res.groups">
|
||||
<field name="name">班组C排班计划管理员</field>
|
||||
<field name="category_id" ref="module_category_attendance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -21,4 +21,6 @@ access_yuthon_run_planning,yuthon.run.planning,model_yuthon_run_planning,base.gr
|
||||
access_yuthon_engineering_run_line,engineering.run.line,model_yuthon_engineering_run_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
|
||||
access_yuthon_other_line,yuthon.other.line,model_yuthon_other_line,base.group_user,1,1,1,1
|
||||
access_yuthon_other_line,yuthon.other.line,model_yuthon_other_line,base.group_user,1,1,1,1
|
||||
access_yuthon_shift_ever_white_line,shift.ever.white.line,model_yuthon_shift_ever_white_line,base.group_user,1,1,1,1
|
||||
access_yuthon_shift_ever_night_line,shift.ever.night.line,model_yuthon_shift_ever_night_line,base.group_user,1,1,1,1
|
||||
|
@@ -114,4 +114,10 @@
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('employee_id.department_id.name','in',['工程部', '运行班', '高压班','综合班'])]]</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,form</field>
|
||||
<field name="domain">[('employee_id.department_id.name','in',['仓储组', '综合组','保管组', '机安组', '1库', '2库', '3库', '联安粮库'])]]</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -9,19 +9,83 @@
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_planning_slot_form1" model="ir.actions.act_window">
|
||||
<field name="name">保安部排班计划</field>
|
||||
<record id="hr_planning_slot_inherit_form" model="ir.ui.view">
|
||||
<field name="name">planning.slot.form.inherit</field>
|
||||
<field name="model">planning.slot</field>
|
||||
<field name="inherit_id" ref="planning.planning_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//label[@for='allocated_hours']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//div[@class='o_row']" position="replace">
|
||||
<field name="allocated_hours" string="已分配时间"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_planning_slot_all_form1" model="ir.actions.act_window">
|
||||
<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, 'search_default_group_by_resource': 1,
|
||||
'search_default_group_by_department': 1}
|
||||
</field>
|
||||
<field name="domain">[('department_id.name', 'in', ['保安部', '班组A', '班组A', '班组C'])]</field>
|
||||
</record>
|
||||
<record id="action_planning_slot_all_form2" model="ir.actions.act_window">
|
||||
<field name="name">班组A</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>
|
||||
<field name="domain">[('department_id.name', '=', '班组A')]</field>
|
||||
</record>
|
||||
<record id="action_planning_slot_all_form3" model="ir.actions.act_window">
|
||||
<field name="name">班组B</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', '=', '班组B')]</field>
|
||||
</record>
|
||||
<record id="action_planning_slot_all_form4" model="ir.actions.act_window">
|
||||
<field name="name">班组C</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', '=', '班组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="domain">[('department_id.name', 'in', ['工程部','高压班','运行班','综合班')]]</field>
|
||||
<field name="context">
|
||||
{'planning_expand_resource': 1, 'planning_expand_role': 1, 'search_default_group_by_resource': 1,
|
||||
'search_default_group_by_department': 1}
|
||||
</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','in',['工程部', '运行班', '高压班','综合班'])]]</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>
|
||||
</record>
|
||||
<record id="action_planning_slot_form5" 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>
|
||||
</odoo>
|
||||
@@ -30,6 +30,7 @@
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="employee_id"/>
|
||||
<field name="regular_holidays"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
@@ -38,6 +39,7 @@
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="employee_id"/>
|
||||
<field name="regular_holidays"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
@@ -46,6 +48,25 @@
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="employee_id"/>
|
||||
<field name="regular_holidays"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group string="常白班">
|
||||
<field name="planning_ever_white_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="employee_id"/>
|
||||
<field name="regular_holidays"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group string="常夜班">
|
||||
<field name="planning_ever_night_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="employee_id"/>
|
||||
<field name="regular_holidays"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
|
||||
@@ -27,12 +27,34 @@
|
||||
<menuitem id="menu_hr_plan_sources_board1"
|
||||
name="排班计划"
|
||||
parent="menu_hr_attendance_security_record_board"
|
||||
action="yuthon_hr_attendance.action_planning_slot_form1"
|
||||
sequence="3"/>
|
||||
<menuitem id="menu_hr_attendance_security_record"
|
||||
<menuitem id="menu_hr_plan_sources_guard_all_board"
|
||||
name="全部"
|
||||
parent="menu_hr_plan_sources_board1"
|
||||
action="yuthon_hr_attendance.action_planning_slot_all_form1"
|
||||
sequence="1"/>
|
||||
<menuitem id="menu_hr_plan_sources_guard_a_board"
|
||||
name="班组A"
|
||||
parent="menu_hr_plan_sources_board1"
|
||||
action="yuthon_hr_attendance.action_planning_slot_all_form2"
|
||||
groups="yuthon_hr_attendance.group_property_class_a_admin"
|
||||
sequence="5"/>
|
||||
<menuitem id="menu_hr_plan_sources_guard_b_board"
|
||||
name="班组B"
|
||||
parent="menu_hr_plan_sources_board1"
|
||||
action="yuthon_hr_attendance.action_planning_slot_all_form3"
|
||||
groups="yuthon_hr_attendance.group_property_class_b_admin"
|
||||
sequence="9"/>
|
||||
<menuitem id="menu_hr_plan_sources_guard_c_board"
|
||||
name="班组C"
|
||||
parent="menu_hr_plan_sources_board1"
|
||||
action="yuthon_hr_attendance.action_planning_slot_all_form4"
|
||||
groups="yuthon_hr_attendance.group_property_class_c_admin"
|
||||
sequence="15"/>
|
||||
<menuitem id="menu_hr_attendance_security_record1"
|
||||
name="考勤记录"
|
||||
parent="menu_hr_attendance_security_record_board"
|
||||
action="yuthon_hr_attendance.hr_attendance_action2"
|
||||
action="yuthon_hr_attendance.hr_attendance_action4"
|
||||
sequence="5"/>
|
||||
<menuitem id="menu_hr_attendance_planning_setting"
|
||||
name="配置"
|
||||
@@ -63,6 +85,30 @@
|
||||
parent="menu_hr_attendance_engineering_record_board"
|
||||
action="yuthon_hr_attendance.action_planning_slot_form2"
|
||||
sequence="3"/>
|
||||
<menuitem id="menu_hr_plan_sources_all_board"
|
||||
name="全部"
|
||||
parent="menu_hr_plan_sources_board3"
|
||||
action="yuthon_hr_attendance.action_planning_slot_form2"
|
||||
sequence="1"/>
|
||||
<menuitem id="menu_hr_plan_sources_all_board1"
|
||||
name="运行班"
|
||||
parent="menu_hr_plan_sources_board3"
|
||||
action="yuthon_hr_attendance.action_planning_slot_form3"
|
||||
groups="yuthon_hr_attendance.group_property_run_admin"
|
||||
sequence="3"/>
|
||||
<menuitem id="menu_hr_plan_sources_all_board2"
|
||||
name="高压班"
|
||||
parent="menu_hr_plan_sources_board3"
|
||||
action="yuthon_hr_attendance.action_planning_slot_form4"
|
||||
groups="yuthon_hr_attendance.group_property_hv_admin"
|
||||
sequence="5"/>
|
||||
<menuitem id="menu_hr_plan_sources_all_board3"
|
||||
name="综合班"
|
||||
parent="menu_hr_plan_sources_board3"
|
||||
action="yuthon_hr_attendance.action_planning_slot_form5"
|
||||
groups="yuthon_hr_attendance.group_property_integrated_admin"
|
||||
sequence="7"/>
|
||||
|
||||
<menuitem id="menu_hr_attendance_security_record2"
|
||||
name="考勤记录"
|
||||
parent="menu_hr_attendance_engineering_record_board"
|
||||
@@ -114,25 +160,30 @@
|
||||
name="粮库值班管理"
|
||||
parent="hr_attendance_root_board"
|
||||
sequence="9"/>
|
||||
<menuitem id="menu_hr_attendance_duty_plan_board"
|
||||
name="值班计划"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
action="yuthon_duty_plan.view_yuthon_duty_plan_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="menu_hr_attendance_duty_summary_board"
|
||||
name="值班安排"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
action="yuthon_duty_plan.view_yuthon_duty_arrangement_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="menu_hr_attendance_duty_plan_board"
|
||||
name="值班计划"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
action="yuthon_duty_plan.view_yuthon_duty_plan_action"
|
||||
sequence="3"/>
|
||||
<menuitem id="menu_hr_attendance_duty_record_board"
|
||||
name="值班记录"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
action="yuthon_hr_attendance.hr_attendance_action4"
|
||||
sequence="9"/>
|
||||
<menuitem id="menu_hr_attendance_summary_root_board"
|
||||
name="值班汇总"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
action="yuthon_duty_plan.view_yuthon_duty_summary_action"
|
||||
sequence="5"/>
|
||||
sequence="15"/>
|
||||
<menuitem id="menu_hr_attendance_duty_summary_flow_board"
|
||||
name="流程"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
sequence="9"/>
|
||||
sequence="19"/>
|
||||
<menuitem id="menu_adjustments_approval_board"
|
||||
name="值班调休"
|
||||
parent="menu_hr_attendance_duty_summary_flow_board"
|
||||
@@ -151,7 +202,7 @@
|
||||
<menuitem id="menu_yuthon_duty_summary_setting"
|
||||
name="配置"
|
||||
parent="menu_hr_attendance_duty_summary_menu_board"
|
||||
sequence="12"/>
|
||||
sequence="99"/>
|
||||
<menuitem id="menu_yuthon_duty_shows_board"
|
||||
name="值班说明"
|
||||
parent="menu_yuthon_duty_summary_setting"
|
||||
|
||||
Reference in New Issue
Block a user