From 477bbcc9e51fa2ab2de5369c8c21a84b406ece77 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 17:05:26 +0530 Subject: [PATCH] fix: IN time not captured in Attendance through Employee Checkin (backport #31029) (#31031) * fix: IN time not captured in Attendance through Employee Checkin (#31029) (cherry picked from commit 1b7ce9649b1cc1dce89e09f46a5235024c14b28d) # Conflicts: # erpnext/hr/doctype/employee_checkin/test_employee_checkin.py * fix: conflicts Co-authored-by: Rucha Mahabal --- erpnext/hr/doctype/employee_checkin/employee_checkin.py | 4 ++++ erpnext/hr/doctype/employee_checkin/test_employee_checkin.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/erpnext/hr/doctype/employee_checkin/employee_checkin.py b/erpnext/hr/doctype/employee_checkin/employee_checkin.py index f3cd864c908..58618b6358c 100644 --- a/erpnext/hr/doctype/employee_checkin/employee_checkin.py +++ b/erpnext/hr/doctype/employee_checkin/employee_checkin.py @@ -225,11 +225,15 @@ def calculate_working_hours(logs, check_in_out_type, working_hours_calc_type): in_log = out_log = None if not in_log: in_log = log if log.log_type == "IN" else None + if in_log and not in_time: + in_time = in_log.time elif not out_log: out_log = log if log.log_type == "OUT" else None + if in_log and out_log: out_time = out_log.time total_hours += time_diff_in_hours(in_log.time, out_log.time) + return total_hours, in_time, out_time diff --git a/erpnext/hr/doctype/employee_checkin/test_employee_checkin.py b/erpnext/hr/doctype/employee_checkin/test_employee_checkin.py index 97f76b03502..a0a199d40b3 100644 --- a/erpnext/hr/doctype/employee_checkin/test_employee_checkin.py +++ b/erpnext/hr/doctype/employee_checkin/test_employee_checkin.py @@ -103,6 +103,11 @@ class TestEmployeeCheckin(unittest.TestCase): ) self.assertEqual(working_hours, (4.5, logs_type_2[1].time, logs_type_2[-1].time)) + working_hours = calculate_working_hours( + [logs_type_2[1], logs_type_2[-1]], check_in_out_type[1], working_hours_calc_type[1] + ) + self.assertEqual(working_hours, (5.0, logs_type_2[1].time, logs_type_2[-1].time)) + def make_n_checkins(employee, n, hours_to_reverse=1): logs = [make_checkin(employee, now_datetime() - timedelta(hours=hours_to_reverse, minutes=n + 1))]