Merge pull request !4658 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-08-20 01:23:03 +00:00
committed by Gitee
@@ -129,6 +129,35 @@ class HrAttendance(models.Model):
print('------------------------------修改源码后期优化')
# raise exceptions.ValidationError(_('"Check Out" time cannot be earlier than "Check In" time.'))
@api.constrains('check_in', 'check_out', 'employee_id')
def _check_validity(self):
"""重写验证方法,移除未签退记录的检查"""
for attendance in self:
last_attendance_before_check_in = self.env['hr.attendance'].search([
('employee_id', '=', attendance.employee_id.id),
('check_in', '<=', attendance.check_in),
('id', '!=', attendance.id),
], order='check_in desc', limit=1)
if last_attendance_before_check_in and last_attendance_before_check_in.check_out and last_attendance_before_check_in.check_out > attendance.check_in:
raise exceptions.ValidationError(_(
"Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s",
empl_name=attendance.employee_id.name,
datetime=format_datetime(self.env, attendance.check_in, dt_format=False)
))
if attendance.check_out:
last_attendance_before_check_out = self.env['hr.attendance'].search([
('employee_id', '=', attendance.employee_id.id),
('check_in', '<', attendance.check_out),
('id', '!=', attendance.id),
], order='check_in desc', limit=1)
if last_attendance_before_check_out and last_attendance_before_check_in != last_attendance_before_check_out:
raise exceptions.ValidationError(_(
"Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s",
empl_name=attendance.employee_id.name,
datetime=format_datetime(self.env, last_attendance_before_check_out.check_in, dt_format=False)
))
#考勤异常提醒
def card_remind(self):
menu_id = self.env['ir.ui.menu'].search([('name', '=', '我的异常')])