diff --git a/beesdoo_shift/models/attendance_sheet.py b/beesdoo_shift/models/attendance_sheet.py
index b787206..9fb7b1b 100644
--- a/beesdoo_shift/models/attendance_sheet.py
+++ b/beesdoo_shift/models/attendance_sheet.py
@@ -59,7 +59,11 @@ class AttendanceSheetShift(models.AbstractModel):
working_mode = fields.Selection(
related="worker_id.working_mode", string="Working Mode"
)
-
+ # The two exclusive booleans are gathered in a simple one
+ is_compensation = fields.Boolean(
+ string="Compensation shift ?",
+ help="Only for regular workers"
+ )
def get_actual_stage(self):
"""
Mapping function returning the actual id
@@ -111,21 +115,12 @@ class AttendanceSheetShiftAdded(models.Model):
_description = "Added Shift"
_inherit = ["beesdoo.shift.sheet.shift"]
- # The two exclusive booleans are gathered in a selection field
- regular_task_type = fields.Selection(
- [("normal", "Normal"), ("compensation", "Compensation")],
- string="Task Mode (if regular)",
- help="Shift type for regular workers. ",
- )
stage = fields.Selection(default="present")
@api.onchange("working_mode")
def on_change_working_mode(self):
self.stage = "present"
- if self.working_mode == "regular":
- self.regular_task_type = "compensation"
- if self.working_mode == "irregular":
- self.regular_task_type = False
+ self.is_compensation = self.working_mode == "regular"
class AttendanceSheet(models.Model):
@@ -330,10 +325,7 @@ class AttendanceSheet(models.Model):
_("%s was expected as replaced.") % worker.name
)
- if worker.working_mode == "regular":
- regular_task_type = "compensation"
- else:
- regular_task_type = False
+ is_compensation = (worker.working_mode == "regular")
added_ids = map(lambda s: s.worker_id.id, self.added_shift_ids)
if worker.id in added_ids:
@@ -345,7 +337,7 @@ class AttendanceSheet(models.Model):
"stage": "present",
"attendance_sheet_id": self._origin.id,
"worker_id": worker.id,
- "regular_task_type": regular_task_type,
+ "is_compensation": is_compensation,
}
)
@@ -385,6 +377,7 @@ class AttendanceSheet(models.Model):
"task_type_id": task.task_type_id.id,
"stage": stage,
"working_mode": task.working_mode,
+ "is_compensation": task.is_compensation,
}
)
# Maximum number of workers calculation (count empty shifts)
@@ -437,14 +430,6 @@ class AttendanceSheet(models.Model):
_("Working mode is missing for %s")
% added_shift.worker_id.name
)
- if (
- added_shift.worker_id.working_mode == "regular"
- and not added_shift.regular_task_type
- ):
- raise UserError(
- _("Regular Task Type is missing for %s")
- % added_shift.worker_id.name
- )
for expected_shift in self.expected_shift_ids:
if not expected_shift.stage:
@@ -476,7 +461,7 @@ class AttendanceSheet(models.Model):
"beesdoo_shift.%s" % added_shift.get_actual_stage()
)
is_regular_worker = added_shift.worker_id.working_mode == "regular"
- is_regular_shift = added_shift.regular_task_type == "normal"
+ is_compensation = added_shift.is_compensation
# Edit a non-assigned shift or create one if none
non_assigned_shifts = shift.search(
@@ -496,8 +481,8 @@ class AttendanceSheet(models.Model):
"stage_id": actual_stage.id,
"worker_id": added_shift.worker_id.id,
"stage_id": actual_stage.id,
- "is_regular": is_regular_shift and is_regular_worker,
- "is_compensation": not is_regular_shift
+ "is_regular": not is_compensation and is_regular_worker,
+ "is_compensation": is_compensation
and is_regular_worker,
}
)
@@ -510,8 +495,8 @@ class AttendanceSheet(models.Model):
"start_time": self.start_time,
"end_time": self.end_time,
"stage_id": actual_stage.id,
- "is_regular": is_regular_shift and is_regular_worker,
- "is_compensation": not is_regular_shift
+ "is_regular": not is_compensation and is_regular_worker,
+ "is_compensation": is_compensation
and is_regular_worker,
}
)
diff --git a/beesdoo_shift/tests/test_attendance_sheet.py b/beesdoo_shift/tests/test_attendance_sheet.py
index a9602db..bb6f981 100644
--- a/beesdoo_shift/tests/test_attendance_sheet.py
+++ b/beesdoo_shift/tests/test_attendance_sheet.py
@@ -282,9 +282,9 @@ class TestAttendanceSheet(TransactionCase):
self.attendance_sheet_shift_model.default_task_type_id(),
)
if shift.working_mode == "regular":
- self.assertEquals(shift.regular_task_type, "compensation")
+ self.assertTrue(shift.is_compensation)
else:
- self.assertFalse(shift.regular_task_type)
+ self.assertFalse(shift.is_compensation)
# add a worker that should be replaced
with self.assertRaises(UserError) as e:
diff --git a/beesdoo_shift/views/attendance_sheet.xml b/beesdoo_shift/views/attendance_sheet.xml
index 83b87e2..f6e2b11 100644
--- a/beesdoo_shift/views/attendance_sheet.xml
+++ b/beesdoo_shift/views/attendance_sheet.xml
@@ -40,7 +40,13 @@
attrs="{'readonly':
[('working_mode','=','irregular')]}"
options="{'no_create': True, 'no_create_edit':True}"/>
-
+
+
@@ -57,8 +63,8 @@
-
@@ -92,8 +98,11 @@
-
-
+
+
diff --git a/beesdoo_shift/wizard/validate_attendance_sheet.py b/beesdoo_shift/wizard/validate_attendance_sheet.py
index fb1e0b7..db6f5e3 100644
--- a/beesdoo_shift/wizard/validate_attendance_sheet.py
+++ b/beesdoo_shift/wizard/validate_attendance_sheet.py
@@ -23,9 +23,9 @@ class ValidateAttendanceSheet(models.TransientModel):
for added_shift in sheet.added_shift_ids:
is_regular_worker = added_shift.worker_id.working_mode == "regular"
- is_regular_shift = added_shift.regular_task_type == "normal"
+ is_compensation = added_shift.is_compensation
- if is_regular_shift and is_regular_worker:
+ if is_regular_worker and not is_compensation:
warning_message += (
_(
"Warning : %s attended its shift as a normal one but was not expected. "