diff --git a/yuthon_wechat/models/hr_attendance_detail.py b/yuthon_wechat/models/hr_attendance_detail.py index b7e7e04c0..c02a8086f 100644 --- a/yuthon_wechat/models/hr_attendance_detail.py +++ b/yuthon_wechat/models/hr_attendance_detail.py @@ -337,23 +337,23 @@ class HrAttendanceDetail(models.Model): planning_end_time = planning_id.end_datetime if planning_id.department_id.name == '保安部': # 白班上班区间 - start_time = datetime.datetime.combine(current_data, datetime.time(6, 0)) - end_time = datetime.datetime.combine(current_data, datetime.time(9, 0)) + start_time = datetime.datetime.combine(current_data, datetime.time(6, 0))+ datetime.timedelta(hours=8) + end_time = datetime.datetime.combine(current_data, datetime.time(9, 0))+ datetime.timedelta(hours=8) # 白班下班区间 - start_time1 = datetime.datetime.combine(current_data, datetime.time(2, 0)) - end_time1 = datetime.datetime.combine(current_data, datetime.time(4, 0)) + start_time1 = datetime.datetime.combine(current_data, datetime.time(2, 0))+ datetime.timedelta(hours=8) + end_time1 = datetime.datetime.combine(current_data, datetime.time(4, 0))+ datetime.timedelta(hours=8) # 中班上班区间 - start_time2 = datetime.datetime.combine(current_data, datetime.time(14, 0)) - end_time2 = datetime.datetime.combine(current_data, datetime.time(17, 0)) + start_time2 = datetime.datetime.combine(current_data, datetime.time(14, 0))+ datetime.timedelta(hours=8) + end_time2 = datetime.datetime.combine(current_data, datetime.time(17, 0))+ datetime.timedelta(hours=8) # 中班下班区间 - start_time3 = datetime.datetime.combine(current_data, datetime.time(22, 0)) - end_time3 = datetime.datetime.combine(current_data, datetime.time(1, 0)) + start_time3 = datetime.datetime.combine(current_data, datetime.time(22, 0))+ datetime.timedelta(hours=8) + end_time3 = datetime.datetime.combine(current_data, datetime.time(1, 0))+ datetime.timedelta(hours=8) # 夜班上班区间 - start_time4 = datetime.datetime.combine(current_data, datetime.time(22, 0)) - end_time4 = datetime.datetime.combine(current_data, datetime.time(1, 0)) + start_time4 = datetime.datetime.combine(current_data, datetime.time(22, 0))+ datetime.timedelta(hours=8) + end_time4 = datetime.datetime.combine(current_data, datetime.time(1, 0))+ datetime.timedelta(hours=8) # 夜班下班区间 - start_time5 = datetime.datetime.combine(current_data, datetime.time(6, 0)) - end_time5 = datetime.datetime.combine(current_data, datetime.time(9, 0)) + start_time5 = datetime.datetime.combine(current_data, datetime.time(6, 0))+ datetime.timedelta(hours=8) + end_time5 = datetime.datetime.combine(current_data, datetime.time(9, 0))+ datetime.timedelta(hours=8) if checkin_time: if start_time<= checkin_time <=end_time and not attendance_obj.check_in and planning_id.template_id.planning_name == '白班': attendance_obj.sudo().write({ @@ -365,9 +365,9 @@ class HrAttendanceDetail(models.Model): "check_out": checkin_time, "is_early_card": planning_end_time> checkin_time, }) - elif start_time2 <= checkin_time <= end_time2 and not attendance_obj.check_out and planning_id.template_id.planning_name == '中班': + elif start_time2 <= checkin_time <= end_time2 and not attendance_obj.check_in and planning_id.template_id.planning_name == '中班': attendance_obj.sudo().write({ - "check_out": checkin_time, + "check_in": checkin_time, "is_late_card": checkin_time > planning_start_time }) elif start_time3 <= checkin_time <= end_time3 and not attendance_obj.check_out and planning_id.template_id.planning_name == '中班': @@ -375,9 +375,9 @@ class HrAttendanceDetail(models.Model): "check_out": checkin_time, "is_early_card": planning_end_time > checkin_time, }) - elif start_time4 <= checkin_time <= end_time4 and not attendance_obj.check_out and planning_id.template_id.planning_name == '夜班': + elif start_time4 <= checkin_time <= end_time4 and not attendance_obj.check_in and planning_id.template_id.planning_name == '夜班': attendance_obj.sudo().write({ - "check_out": checkin_time, + "check_in": checkin_time, "is_late_card": checkin_time > planning_start_time }) elif start_time5 <= checkin_time <= end_time5 and not attendance_obj.check_out and planning_id.template_id.planning_name == '夜班': @@ -391,20 +391,20 @@ class HrAttendanceDetail(models.Model): attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True}) elif planning_id.role_id.name == '工程部': # 白班和白值上班区间 - start_time = datetime.datetime.combine(current_data, datetime.time(7, 0)) - end_time = datetime.datetime.combine(current_data, datetime.time(10, 0)) + start_time = datetime.datetime.combine(current_data, datetime.time(7, 0))+ datetime.timedelta(hours=8) + end_time = datetime.datetime.combine(current_data, datetime.time(10, 0))+ datetime.timedelta(hours=8) # 白班和白值下班区间 - start_time1 = datetime.datetime.combine(current_data, datetime.time(16, 0)) - end_time1 = datetime.datetime.combine(current_data, datetime.time(19, 0)) + start_time1 = datetime.datetime.combine(current_data, datetime.time(16, 0))+ datetime.timedelta(hours=8) + end_time1 = datetime.datetime.combine(current_data, datetime.time(19, 0))+ datetime.timedelta(hours=8) # 白值值班打卡区间 - start_time2 = datetime.datetime.combine(current_data, datetime.time(11,30)) - end_time2 = datetime.datetime.combine(current_data, datetime.time(13, 30)) + start_time2 = datetime.datetime.combine(current_data, datetime.time(11,30))+ datetime.timedelta(hours=8) + end_time2 = datetime.datetime.combine(current_data, datetime.time(13, 30))+ datetime.timedelta(hours=8) # 中夜上班区间 中夜下班区间跟白班上班区间一样 - start_time3 = datetime.datetime.combine(current_data, datetime.time(13, 0)) - end_time3 = datetime.datetime.combine(current_data, datetime.time(16, 0)) + start_time3 = datetime.datetime.combine(current_data, datetime.time(13, 0))+ datetime.timedelta(hours=8) + end_time3 = datetime.datetime.combine(current_data, datetime.time(16, 0))+ datetime.timedelta(hours=8) # 中夜值班打卡区间 - start_time4 = datetime.datetime.combine(current_data, datetime.time(20, 0)) - end_time4 = datetime.datetime.combine(current_data, datetime.time(23, 0)) + start_time4 = datetime.datetime.combine(current_data, datetime.time(20, 0))+ datetime.timedelta(hours=8) + end_time4 = datetime.datetime.combine(current_data, datetime.time(23, 0))+ datetime.timedelta(hours=8) if planning_id: if checkin_time: if start_time<= checkin_time <=end_time and not attendance_obj.check_in and (planning_id.template_id.planning_name in ['白班','白值']): @@ -422,9 +422,9 @@ class HrAttendanceDetail(models.Model): "check_in": checkin_time, "is_late_card": checkin_time > planning_start_time }) - elif start_time<= checkin_time <=end_time and not attendance_obj.check_in and planning_id.template_id.planning_name == '中夜': + elif start_time<= checkin_time <=end_time and not attendance_obj.check_out and planning_id.template_id.planning_name == '中夜': attendance_obj.sudo().write({ - "check_in": checkin_time, + "check_out": checkin_time, "is_early_card":checkin_time > planning_start_time }) elif planning_id.template_id.planning == '白值' and start_time2 <= checkin_time <= end_time2: @@ -446,27 +446,27 @@ class HrAttendanceDetail(models.Model): attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True}) elif planning_id.role_id.name == '联安粮储': # 白班上班区间 - start_time = datetime.datetime.combine(current_data, datetime.time(7, 0)) - end_time = datetime.datetime.combine(current_data, datetime.time(10, 0)) + start_time = datetime.datetime.combine(current_data, datetime.time(7, 0))+ datetime.timedelta(hours=8) + end_time = datetime.datetime.combine(current_data, datetime.time(10, 0))+ datetime.timedelta(hours=8) # 白班下班区间 - start_time1 = datetime.datetime.combine(current_data, datetime.time(15, 0)) - end_time1 = datetime.datetime.combine(current_data, datetime.time(18, 0)) + start_time1 = datetime.datetime.combine(current_data, datetime.time(15, 0))+ datetime.timedelta(hours=8) + end_time1 = datetime.datetime.combine(current_data, datetime.time(18, 0))+ datetime.timedelta(hours=8) # 白值上班 - start_time2 = datetime.datetime.combine(current_data, datetime.time(8,0 )) - end_time2 = datetime.datetime.combine(current_data, datetime.time(10, 0)) + start_time2 = datetime.datetime.combine(current_data, datetime.time(8,0 ))+ datetime.timedelta(hours=8) + end_time2 = datetime.datetime.combine(current_data, datetime.time(10, 0))+ datetime.timedelta(hours=8) # 白值下班 - start_time4 = datetime.datetime.combine(current_data, datetime.time(4, 0)) - end_time4 = datetime.datetime.combine(current_data, datetime.time(7, 0)) + start_time4 = datetime.datetime.combine(current_data, datetime.time(4, 0))+ datetime.timedelta(hours=8) + end_time4 = datetime.datetime.combine(current_data, datetime.time(7, 0))+ datetime.timedelta(hours=8) # 白值打卡区间、 - start_time3 = datetime.datetime.combine(current_data, datetime.time(11, 30)) - end_time3 = datetime.datetime.combine(current_data, datetime.time(13, 30)) + start_time3 = datetime.datetime.combine(current_data, datetime.time(11, 30))+ datetime.timedelta(hours=8) + end_time3 = datetime.datetime.combine(current_data, datetime.time(13, 30))+ datetime.timedelta(hours=8) if planning_id: if start_time<= checkin_time <=end_time and not attendance_obj.check_in and planning_id.template_id.planning_name == '白班': attendance_obj.sudo().write({ "check_in": checkin_time, "is_late_card": checkin_time > planning_start_time }) - elif start_time1<= checkin_time <=end_time1 and not attendance_obj.check_in and planning_id.template_id.planning_name == '白班': + elif start_time1<= checkin_time <=end_time1 and not attendance_obj.check_out and planning_id.template_id.planning_name == '白班': attendance_obj.sudo().write({ "check_out": checkin_time, "is_early_card": planning_end_time > checkin_time, @@ -476,14 +476,13 @@ class HrAttendanceDetail(models.Model): "check_in": checkin_time, "is_late_card": checkin_time > planning_start_time, }) - elif start_time4<= checkin_time <=end_time4 and not attendance_obj.check_in and planning_id.template_id.planning_name == '白值': + elif start_time4<= checkin_time <=end_time4 and not attendance_obj.check_out and planning_id.template_id.planning_name == '白值': attendance_obj.sudo().write({ - "check_in": checkin_time, + "check_out": checkin_time, "is_early_card": planning_end_time > checkin_time, }) - elif start_time3<= checkin_time <=end_time3 and not attendance_obj.check_in and planning_id.template_id.planning_name == '白值': + elif start_time3<= checkin_time <=end_time3 and planning_id.template_id.planning_name == '白值': attendance_obj.sudo().write({ - "sch_check_out_time": sch_checkin_time, "noon_duty": checkin_time, }) if (attendance_obj.is_early_card or attendance_obj.is_late_card or