From 4267eb8a4233c08c2e3eb218dfca745fabcf36cc Mon Sep 17 00:00:00 2001 From: Elouan Le Bars Date: Tue, 14 Jan 2020 17:13:38 +0100 Subject: [PATCH] [FIX] b_shift : search on datetime with '=' --- beesdoo_shift/models/attendance_sheet.py | 27 ++++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/beesdoo_shift/models/attendance_sheet.py b/beesdoo_shift/models/attendance_sheet.py index bad8a1c..7bf199d 100644 --- a/beesdoo_shift/models/attendance_sheet.py +++ b/beesdoo_shift/models/attendance_sheet.py @@ -396,14 +396,17 @@ class AttendanceSheet(models.Model): expected_shift = self.env["beesdoo.shift.sheet.expected"] s_time = fields.Datetime.from_string(new_sheet.start_time) e_time = fields.Datetime.from_string(new_sheet.end_time) + # Fix issues with equality check on datetime + # by searching on a small intervall instead delta = timedelta(minutes=1) + to_string = fields.Datetime.to_string tasks = tasks.search( [ - ("start_time", ">", fields.Datetime.to_string(s_time - delta)), - ("start_time", "<", fields.Datetime.to_string(s_time + delta)), - ("end_time", ">", fields.Datetime.to_string(e_time - delta)), - ("end_time", "<", fields.Datetime.to_string(e_time + delta)), + ("start_time", ">", to_string(s_time - delta)), + ("start_time", "<", to_string(s_time + delta)), + ("end_time", ">", to_string(e_time - delta)), + ("end_time", "<", to_string(e_time + delta)), ] ) for task in tasks: @@ -474,11 +477,21 @@ class AttendanceSheet(models.Model): is_compensation = added_shift.is_compensation # Edit a non-assigned shift or create one if none - non_assigned_shifts = shift.search( + + # Fix issues with equality check on datetime + # by searching on a small intervall instead + delta = timedelta(minutes=1) + s_time = fields.Datetime.from_string(self.start_time) + e_time = fields.Datetime.from_string(self.end_time) + to_string = fields.Datetime.to_string + + non_assigned_shifts = self.env["beesdoo.shift.shift"].search( [ ("worker_id", "=", False), - ("start_time", "=", self.start_time), - ("end_time", "=", self.end_time), + ("start_time", ">", to_string(s_time - delta)), + ("start_time", "<", to_string(s_time + delta)), + ("end_time", ">", to_string(e_time - delta)), + ("end_time", "<", to_string(e_time + delta)), ("task_type_id", "=", added_shift.task_type_id.id), ], limit=1,