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))]