pengyuthon wechat
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
@@ -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"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user