From 91f86b41e97ee32d971783a11a1dee1117e85893 Mon Sep 17 00:00:00 2001 From: Asmita Hase Date: Mon, 27 Jan 2025 15:26:42 +0530 Subject: [PATCH 1/2] fix: fetch shift even if previous shift is not the same as current shift (cherry picked from commit 38719473e5cdb56921687c21b02aadfd9dbe64a8) --- hrms/hr/doctype/employee_checkin/employee_checkin.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/hrms/hr/doctype/employee_checkin/employee_checkin.js b/hrms/hr/doctype/employee_checkin/employee_checkin.js index 891b21dbaf..9c604a0594 100644 --- a/hrms/hr/doctype/employee_checkin/employee_checkin.js +++ b/hrms/hr/doctype/employee_checkin/employee_checkin.js @@ -9,14 +9,12 @@ frappe.ui.form.on("Employee Checkin", { add_fetch_shift_button(frm) { if (frm.doc.attendace) return; frm.add_custom_button(__("Fetch Shift"), function () { - const previous_shift = frm.doc.shift; frappe.call({ method: "fetch_shift", doc: frm.doc, freeze: true, freeze_message: __("Fetching Shift"), callback: function () { - if (previous_shift === frm.doc.shift) return; frm.dirty(); frm.save(); frappe.show_alert({ From ece9ae849f99e5801e6683e0fb601053a41af45f Mon Sep 17 00:00:00 2001 From: Asmita Hase Date: Tue, 28 Jan 2025 00:43:40 +0530 Subject: [PATCH 2/2] chore: test bulk fetch shift if shift settings change for the same shift (cherry picked from commit 21066361525951a72d2a7a5075e307c6ddbcb5aa) --- .../employee_checkin/test_employee_checkin.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/hrms/hr/doctype/employee_checkin/test_employee_checkin.py b/hrms/hr/doctype/employee_checkin/test_employee_checkin.py index d16a2851da..556431ac3f 100644 --- a/hrms/hr/doctype/employee_checkin/test_employee_checkin.py +++ b/hrms/hr/doctype/employee_checkin/test_employee_checkin.py @@ -492,6 +492,34 @@ def test_bulk_fetch_shift(self): # shift does not change since attendance is already marked self.assertEqual(log2.shift, shift1.name) + def test_bulk_fetch_shift_if_shift_settings_change_for_the_same_shift(self): + emp1 = make_employee("bulkemp1@example.com", company="_Test Company") + emp2 = make_employee("bulkemp2@example.com", company="_Test Company") + + # 8 - 12, + shift = setup_shift_type(shift_type="Test Bulk Shift") + date = getdate() + make_shift_assignment(shift.name, emp1, date) + make_shift_assignment(shift.name, emp2, date) + + timestamp = datetime.combine(date, get_time("08:00:00")) + # shift actual start is `current date 07:00:00` + log1 = make_checkin(emp1, timestamp) + self.assertEqual(log1.shift_actual_start, datetime.combine(date, get_time("07:00:00"))) + log2 = make_checkin(emp2, timestamp) + self.assertEqual(log2.shift_actual_start, datetime.combine(date, get_time("07:00:00"))) + + # change shift settings like check in buffer from 60 minutes to 120 minutes + # so now shift actual start is `current date 06:00:00` + shift.begin_check_in_before_shift_start_time = 120 + shift.save() + bulk_fetch_shift([log1.name, log2.name]) + # shift changes according to the new assignment + log1.reload() + self.assertEqual(log1.shift_actual_start, datetime.combine(date, get_time("06:00:00"))) + log2.reload() + self.assertEqual(log2.shift_actual_start, datetime.combine(date, get_time("06:00:00"))) + def make_n_checkins(employee, n, hours_to_reverse=1): logs = [make_checkin(employee, now_datetime() - timedelta(hours=hours_to_reverse, minutes=n + 1))]