Merge pull request !12668 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-08-18 10:59:43 +00:00
committed by Gitee
@@ -602,17 +602,30 @@ class HrAttendanceDetail(models.Model):
if check_in and start_datetime and check_in > start_datetime:
late_delta = (check_in - start_datetime).total_seconds() / 60
if is_tianhe_property:
# 天河物管:2分钟包容时间
if employee.late_allowed == 0:
if late_delta > 2:
is_late_card = True
else:
if attendance.is_late_allowed == False:
# 迟到超过10分钟 并且也算迟扣允许迟到次数 到
employee.late_allowed -= 1
attendance.is_late_allowed = True
if late_delta > 10:
# 天河物管:2分钟包容时间;每月最多3次宽容迟到(不再依赖 employee.late_allowed 字段)
if late_delta > 2:
# 统计当前月份该员工已使用的宽容迟到次数(is_late_allowed=True)
month_first = current_data.replace(day=1)
if current_data.month == 12:
month_last = current_data.replace(day=31)
else:
month_last = current_data.replace(month=current_data.month + 1, day=1) - timedelta(days=1)
used_count = self.env['hr.attendance'].search_count([
('employee_id', '=', employee.id),
('current_data', '>=', month_first),
('current_data', '<=', month_last),
('is_late_allowed', '=', True),
('id', '!=', attendance.id),
])
if used_count >= 3:
# 本月已满3次宽容,不再宽容,直接算迟到(黄色也不显示)
attendance.is_late_allowed = False
is_late_card = True
else:
if attendance.is_late_allowed == False:
attendance.is_late_allowed = True
if late_delta > 10:
is_late_card = True
# 迟到超过60分钟标记为旷工
if late_delta > 60: