From d198ef7492f3152fbec7873d4fe42de95bd255e6 Mon Sep 17 00:00:00 2001 From: Elouan Le Bars Date: Fri, 3 Jan 2020 11:28:43 +0100 Subject: [PATCH] [CHG] b_shift : checks on attendance sheet before validation --- beesdoo_shift/models/attendance_sheet.py | 86 ++++++++++--------- beesdoo_shift/views/attendance_sheet.xml | 5 +- .../wizard/validate_attendance_sheet.py | 2 +- 3 files changed, 49 insertions(+), 44 deletions(-) diff --git a/beesdoo_shift/models/attendance_sheet.py b/beesdoo_shift/models/attendance_sheet.py index 3043a77..6b4a837 100644 --- a/beesdoo_shift/models/attendance_sheet.py +++ b/beesdoo_shift/models/attendance_sheet.py @@ -399,50 +399,11 @@ class AttendanceSheet(models.Model): return self.search_count(domain) return - def validate(self, user): + def _validate(self, user): self.ensure_one() if self.state == "validated": raise UserError("The sheet has already been validated.") - shift = self.env["beesdoo.shift.shift"] - - # Fields validation - for added_shift in self.added_shift_ids: - if not added_shift.worker_id: - raise UserError( - _("Worker must be set for shift %s") % added_shift.id - ) - if added_shift.state != "done": - raise UserError( - _("Shift State is missing or wrong for %s") - % added_shift.worker_id.name - ) - if not added_shift.task_type_id: - raise UserError( - _("Task Type is missing for %s") - % added_shift.worker_id.name - ) - if not added_shift.working_mode: - raise UserError( - _("Working mode is missing for %s") - % added_shift.worker_id.name - ) - - for expected_shift in self.expected_shift_ids: - if not expected_shift.state: - raise UserError( - _("Shift State is missing for %s") - % expected_shift.worker_id.name - ) - if ( - expected_shift.state == "absent" - and not expected_shift.compensation_no - ): - raise UserError( - _("Compensation number is missing for %s") - % expected_shift.worker_id.name - ) - # Expected shifts status update for expected_shift in self.expected_shift_ids: actual_shift = expected_shift.task_id @@ -514,10 +475,51 @@ class AttendanceSheet(models.Model): return @api.multi - def validate_via_wizard(self): + def validate_with_checks(self): self.ensure_one() + if self.state == "validated": + raise UserError("The sheet has already been validated.") + + # Fields validation + for added_shift in self.added_shift_ids: + if not added_shift.worker_id: + raise UserError( + _("Worker name is missing for an added shift.") + ) + if added_shift.state != "done": + raise UserError( + _("Shift State is missing or wrong for %s") + % added_shift.worker_id.name + ) + if not added_shift.task_type_id: + raise UserError( + _("Task Type is missing for %s") + % added_shift.worker_id.name + ) + if not added_shift.working_mode: + raise UserError( + _("Working mode is missing for %s") + % added_shift.worker_id.name + ) + + for expected_shift in self.expected_shift_ids: + if not expected_shift.state: + raise UserError( + _("Shift State is missing for %s") + % expected_shift.worker_id.name + ) + if ( + expected_shift.state == "absent" + and not expected_shift.compensation_no + ): + raise UserError( + _("Compensation number is missing for %s") + % expected_shift.worker_id.name + ) + + # open a validation wizard if not admin if self.env.user.has_group("beesdoo_shift.group_cooperative_admin"): - self.validate(self.env.user.partner_id) + self._validate(self.env.user.partner_id) return return { "type": "ir.actions.act_window", diff --git a/beesdoo_shift/views/attendance_sheet.xml b/beesdoo_shift/views/attendance_sheet.xml index 1e62781..df1ea0f 100644 --- a/beesdoo_shift/views/attendance_sheet.xml +++ b/beesdoo_shift/views/attendance_sheet.xml @@ -134,7 +134,7 @@