添加功能

This commit is contained in:
李鹏宇
2026-07-02 11:11:04 +08:00
parent f331cbd3df
commit 325d470fb0
@@ -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):