添加功能
This commit is contained in:
@@ -2742,6 +2742,10 @@ class YuthonVacationReports(models.Model):
|
||||
def _has_pending_hr_workflow(self, employee_id, month_date):
|
||||
"""
|
||||
检查员工在指定月份是否存在未办结的人力资源相关流程(请假、加班、外出等)
|
||||
检查员工在指定月份是否存在未办结的人力资源相关流程(请假、加班、外出等)
|
||||
搜索条件保留 users_ids 包含当前用户(不管是自己的流程还是需要审批的),
|
||||
找到后再判断员工是否是流程的当事人(请假人/加班人/外出人/补卡人),
|
||||
如果员工只是审批人(盖章),不算未办结,不阻止确认。
|
||||
:param employee_id: hr.employee.id
|
||||
:param month_date: 月份任一天(用于计算当月起止)
|
||||
:return: (bool, str) 是否有未办结流程, 提示文字
|
||||
@@ -2749,11 +2753,13 @@ class YuthonVacationReports(models.Model):
|
||||
month_start = month_date.replace(day=1)
|
||||
month_end = (month_start + relativedelta(months=1) - relativedelta(days=1))
|
||||
|
||||
# 先找到员工对应的 user
|
||||
user = self.env['hr.employee'].sudo().browse(employee_id).user_id
|
||||
employee = self.env['hr.employee'].sudo().browse(employee_id)
|
||||
user = employee.user_id
|
||||
if not user:
|
||||
return False, ''
|
||||
pending = self.env['soong.workflow.record'].sudo().search_count([
|
||||
|
||||
# 查找当月考勤分组下 users_ids 包含当前用户的未办结流程
|
||||
pending_records = self.env['soong.workflow.record'].sudo().search([
|
||||
('users_ids', 'in', user.id),
|
||||
('approvals_group_id.name', '=', '考勤'),
|
||||
('reclaim_state', '=', False),
|
||||
@@ -2761,8 +2767,39 @@ class YuthonVacationReports(models.Model):
|
||||
('workflow_happen_date', '>=', month_start),
|
||||
('workflow_happen_date', '<=', month_end),
|
||||
])
|
||||
if pending:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
for record in pending_records:
|
||||
workflow_name = record.workflow_id.name
|
||||
# 获取业务记录
|
||||
biz_record = self.env[record.res_model].sudo().browse(record.res_id)
|
||||
if not biz_record.exists():
|
||||
continue
|
||||
|
||||
# 根据流程类型判断当事人字段
|
||||
if workflow_name == '请假':
|
||||
if hasattr(biz_record, 'users_id') and biz_record.users_id:
|
||||
if biz_record.users_id == employee.user_id:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
elif workflow_name == '加班':
|
||||
if hasattr(biz_record, 'employee_ids') and biz_record.employee_ids:
|
||||
if employee in biz_record.employee_ids:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
elif workflow_name == '外出':
|
||||
if hasattr(biz_record, 'employee_ids') and biz_record.employee_ids:
|
||||
if employee in biz_record.employee_ids:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
elif workflow_name == '补卡':
|
||||
if hasattr(biz_record, 'users_id') and biz_record.users_id:
|
||||
if biz_record.users_id == employee.user_id:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
else:
|
||||
# 其他考勤类型:如果员工是业务记录的 users_id 或在 employee_ids 中也算当事人
|
||||
if hasattr(biz_record, 'users_id') and biz_record.users_id:
|
||||
if biz_record.users_id == employee.user_id:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
if hasattr(biz_record, 'employee_ids') and biz_record.employee_ids:
|
||||
if employee in biz_record.employee_ids:
|
||||
return True, '该月考勤相关流程尚未完结,暂不允许确认'
|
||||
|
||||
return False, ''
|
||||
|
||||
class VacationLeaveLine(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user