From 98960bd0d39d413ea1d0c09bb41103d2d36596de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Tue, 3 Dec 2024 17:21:46 +0800 Subject: [PATCH] pengyuthon wechat --- yuthon_hr_attendance/models/card_approval.py | 19 ++++++++++--------- yuthon_hr_attendance/models/hr_attendance.py | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/yuthon_hr_attendance/models/card_approval.py b/yuthon_hr_attendance/models/card_approval.py index f0c5565b2..3f3be6ea4 100644 --- a/yuthon_hr_attendance/models/card_approval.py +++ b/yuthon_hr_attendance/models/card_approval.py @@ -49,19 +49,20 @@ class CardApprovals(models.Model): record.name = f"{record.users_id.name}补卡" def confirm_approval(self): - calendar_attendances = self.env['resource.calendar'].search([]) - min_hour_from = min(att.hour_from for att in calendar_attendances) - if min_hour_from == 8: - min_hour_from = 9 - max_hour_to = max(att.hour_to for att in calendar_attendances) + min_hour_from = self.users_id.employee_id.resource_id.calendar_id.attendance_ids[0].hour_from + min_hour = int(min_hour_from) + min_minute = int(min_hour_from * 10 % min_hour_from) + max_hour_to = self.users_id.employee_id.resource_id.calendar_id.attendance_ids[-1].hour_to + max_hour = int(max_hour_to) + max_minute = int(max_hour_to * 10 % max_hour_to) for rec in self: if rec.replacement_time == 'work': - rec.attendance_id.check_in = rec.attendance_id.check_in.replace(hour=min_hour_from) + rec.attendance_id.check_in = rec.attendance_id.check_in.replace(hour=min_hour, minute=min_minute) - timedelta(hours=8) if rec.replacement_time == 'quitting': - rec.attendance_id.check_out = rec.attendance_id.check_in.replace(hour=max_hour_to) + rec.attendance_id.check_out = rec.attendance_id.check_in.replace(hour=max_hour, minute=max_minute) - timedelta(hours=8) if rec.replacement_time == 'all': - rec.attendance_id.check_in = rec.attendance_id.check_in.replace(hour=min_hour_from) - rec.attendance_id.check_out = rec.attendance_id.check_in.replace(hour=max_hour_to) + rec.attendance_id.check_in = rec.attendance_id.check_in.replace(hour=min_hour, minute=min_minute) - timedelta(hours=8) + rec.attendance_id.check_out = rec.attendance_id.check_in.replace(hour=max_hour, minute=max_minute) - timedelta(hours=8) rec.attendance_id.is_approval = True # @api.onchange('is_issues') diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index 17c862dac..4b630242a 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -59,23 +59,23 @@ class HrAttendance(models.Model): record.is_no_card = False record.is_late_card = False record.is_early_card = False - calendar_attendances = self.env['resource.calendar.attendance'].search([]) - min_hour_from = min(att.hour_from for att in calendar_attendances) - if min_hour_from == 8: - min_hour_from = 9 - max_hour_to = max(att.hour_to for att in calendar_attendances) - # 迟到 晚打卡 大于上班时间 + min_hour_from = record.employee_id.resource_id.calendar_id.attendance_ids[0].hour_from + min_hour = int(min_hour_from) + min_minute = int(min_hour_from * 10 % min_hour_from) + if record.check_in: check_in = record.check_in + timedelta(hours=8) - will_datetime_start = check_in.replace(hour=int(min_hour_from), - minute=int((min_hour_from % 1) * 100), second=0) + will_datetime_start = check_in.replace(hour=min_hour, minute=min_minute) record.is_late_card = check_in > will_datetime_start else: record.is_no_card = True - # 早退,小于下班时间 + + max_hour_to = record.employee_id.resource_id.calendar_id.attendance_ids[-1].hour_to + max_hour = int(max_hour_to) + max_minute = int(max_hour_to * 10 % max_hour_to) if record.check_out: check_out = record.check_out + timedelta(hours=8) - will_datetime_end = check_out.replace(hour=int(max_hour_to), minute=int((min_hour_from % 1) * 100), second=0) + will_datetime_end = check_out.replace(hour=max_hour, minute=max_minute) record.is_early_card = will_datetime_end > check_out else: record.is_no_card = True