diff --git a/yuthon_hr_attendance/views/hr_attendance_views.xml b/yuthon_hr_attendance/views/hr_attendance_views.xml
index 689af4016..abde13f50 100644
--- a/yuthon_hr_attendance/views/hr_attendance_views.xml
+++ b/yuthon_hr_attendance/views/hr_attendance_views.xml
@@ -74,7 +74,7 @@
-
+
diff --git a/yuthon_hr_attendance/wizard/attendance_correct_wizard.py b/yuthon_hr_attendance/wizard/attendance_correct_wizard.py
index 5b6edf39b..988770a13 100644
--- a/yuthon_hr_attendance/wizard/attendance_correct_wizard.py
+++ b/yuthon_hr_attendance/wizard/attendance_correct_wizard.py
@@ -72,39 +72,43 @@ class AttendanceCorrectWizard(models.TransientModel):
self.attendance_id.write(values)
else:
- check_in_start = record.attendance_id.shift_id.template_id.check_in_start
- check_out_end = record.attendance_id.shift_id.template_id.check_out_end
- date = record.attendance_id.shift_id
+ shift = self.attendance_id.shift_id
+ check_in_start = shift.template_id.check_in_start
+ check_out_end = shift.template_id.check_out_end
+ # 提取小时和分钟
start_hour = int(check_in_start)
start_minute = int((check_in_start - start_hour) * 60)
end_hour = int(check_out_end)
end_minute = int((check_out_end - end_hour) * 60)
+ # 从 planning.slot 对象中获取日期
+ shift_date = shift.start_datetime.date() # 获取班次开始日期
# 拼接成 datetime 对象
- start_datetime = datetime.combine(date, datetime.min.time()).replace(
+ normal_check_in = datetime.combine(shift_date, datetime.min.time()).replace(
hour=start_hour, minute=start_minute, second=0, microsecond=0
- )
- end_datetime = datetime.combine(date, datetime.min.time()).replace(
+ ) - timedelta(hours=8)
+ normal_check_out = datetime.combine(shift_date, datetime.min.time()).replace(
hour=end_hour, minute=end_minute, second=0, microsecond=0
- )
- if record.attendance_id.shift_id.template_id.day2 == '次日':
- end_datetime = end_datetime + timedelta(days=1)
+ ) - timedelta(hours=8)
+ # 如果是次日班次,调整下班时间
+ if shift.template_id.day2 == '次日':
+ normal_check_out = normal_check_out + timedelta(days=1)
# 处理上班打卡
if not self.attendance_id.check_in:
- values['check_in'] = start_datetime
+ values['check_in'] = normal_check_in
values['is_check_in_red'] = True
values['is_no_card'] = False
- elif self.attendance_id.check_in > start_datetime:
- values['check_in'] = start_datetime
+ elif self.attendance_id.check_in > normal_check_in:
+ values['check_in'] = normal_check_in
values['is_check_in_red'] = True
values['is_late_card'] = False
# 处理下班打卡
if not self.attendance_id.check_out:
- values['check_out'] = end_datetime
+ values['check_out'] = normal_check_out
values['is_check_out_red'] = True
values['is_no_card'] = False
- elif self.attendance_id.check_out < end_datetime:
- values['check_out'] = end_datetime
+ elif self.attendance_id.check_out < normal_check_out:
+ values['check_out'] = normal_check_out
values['is_check_out_red'] = True
values['is_early_card'] = False
# 应用修改