加班审批

This commit is contained in:
李鹏宇
2024-07-11 14:18:28 +08:00
parent 0ed9884f64
commit 68ca9df2e7
3 changed files with 57 additions and 16 deletions
+1
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from . import inherit_approval_category
from . import inherit_approval_request
from . import overtime_approval
from . import tianhe_construction_business_approval
from . import tianhe_process_change_approval
from . import tianhe_contentious_matter_approval
@@ -54,9 +54,8 @@ class ApprovalRequest(models.Model):
], string="用章类别")
creation_time = fields.Datetime(string='创建时间', default=lambda self: fields.Datetime.now())
department_id = fields.Many2one('hr.department', related="request_owner_id.employee_id.department_id", string="申请人部门")
overtime_department_id = fields.Many2one('hr.department', string="加班部门")
approval_request_ids = fields.One2many('approval.request.line', 'approval_request_id', string="审批明细行")
overtime_user_ids = fields.One2many('overtime.user.line', 'approval_request_id', string="审批明细行")
class ApprovalRequestLine(models.Model):
@@ -101,19 +100,5 @@ class ApprovalRequestLine(models.Model):
# 加班
class OvertimeUserLine(models.Model):
_name = 'overtime.user.line'
_rec_name = 'approval_request_id'
approval_request_id = fields.Many2one('approval.request', string="关联审批单")
user_id = fields.Many2one('res.users', string="请假人员")
start_time = fields.Datetime(string="开始时间")
end_time = fields.Datetime(string="结束时间")
overtime_hours = fields.Float(string="加班时长")
type_overtime = fields.Selection([('work', '工作日',), ('rest', '休息日',), ('holiday', '节假日')],
string="加班类型", default="work")
compensation_mode = fields.Selection([('salary', '薪资',), ('rest', '调休',)], string="补偿方式")
is_male_pay = fields.Boolean(string="加班餐费")
user_attendance = fields.Char(string="考勤信息")
@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools, _
from datetime import datetime, time, timedelta
class OvertimeApprovals(models.Model):
_inherit = 'approval.request'
_description = "加班审批"
overtime_department_id = fields.Many2one('hr.department', string="加班部门")
overtime_user_ids = fields.One2many('overtime.user.line', 'approval_request_id', string="审批明细行")
@api.onchange('overtime_department_id')
def onchange_overtime_users(self):
if self.approval_category_name == 'overtime_approval':
users_data_list = []
default_datetime = datetime.combine(datetime.now().date(), time(hour=17, minute=30)) - timedelta(hours=8),
for over in self:
if not over.overtime_department_id:
users_data_list.append((0, 0, {
'approval_request_id': over.id,
'user_id': over.request_owner_id.id,
'start_time': default_datetime[0],
'type_overtime': 'work',
'compensation_mode': 'salary',
}))
else:
employee_ids = self.env['hr.employee'].search([('department_id', '=', self.overtime_department_id.id)])
for user in employee_ids:
users_data_list.append((0, 0, {
'approval_request_id': over.id,
'user_id': user.user_id.id,
'start_time': default_datetime[0],
'type_overtime': 'work',
'compensation_mode': 'salary',
}))
over.overtime_user_ids = users_data_list
class OvertimeUserLine(models.Model):
_name = 'overtime.user.line'
_rec_name = 'approval_request_id'
_description = "加班明细行"
default_date = datetime.combine(datetime.now().date(), time(hour=17, minute=30))
approval_request_id = fields.Many2one('approval.request', string="关联审批单")
user_id = fields.Many2one('res.users', string="请假人员")
start_time = fields.Datetime(string="开始时间", default=default_date)
end_time = fields.Datetime(string="结束时间")
overtime_hours = fields.Float(string="加班时长")
type_overtime = fields.Selection([('work', '工作日',), ('rest', '休息日',), ('holiday', '节假日')],
string="加班类型", default="work")
compensation_mode = fields.Selection([('salary', '薪资',), ('rest', '调休',)], string="补偿方式", default="salary")
is_male_pay = fields.Boolean(string="加班餐费")
user_attendance = fields.Char(string="考勤信息")