From f166557f0463ff1443ac1508a4cbb569c2aba34b Mon Sep 17 00:00:00 2001 From: NguyenND Date: Wed, 29 Apr 2026 15:00:26 -0400 Subject: [PATCH] 04/29 Updated Time attendance export by building time frame --- routes/time_attendance_export.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/routes/time_attendance_export.py b/routes/time_attendance_export.py index 852e34f..dd0fb64 100644 --- a/routes/time_attendance_export.py +++ b/routes/time_attendance_export.py @@ -137,10 +137,15 @@ def _resolve_date_range(start_date_filter, end_date_filter, records, export_labe ) end_date = capped_end_date - # Preserve one extra calendar day so early-morning check-out records - # stored on Day N+1 remain available for overnight pairing detection. - # Display range is still controlled by dates_with_records (capped to end_date). - filtered_records = [r for r in records if r.attendance_date <= end_date + timedelta(days=1)] + # Apply both bounds: + # - Lower bound: exclude records before start_date (prevents historical data leaking in). + # - Upper bound (+1 day buffer): early-morning check-out records stored on Day N+1 + # must remain available for overnight pairing detection; the display range is + # still controlled by each export's sorted_dates (capped to end_date). + filtered_records = [ + r for r in records + if start_date <= r.attendance_date <= end_date + timedelta(days=1) + ] return start_date, end_date, filtered_records