@@ -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
|
||||
|
||||
Reference in New Issue
Block a user