From ab339823b2fa0ec97a131231f4eada295e86c629 Mon Sep 17 00:00:00 2001 From: padomi Date: Thu, 12 Nov 2020 19:12:22 +0100 Subject: [PATCH] [IMP] pms: wizard unify line room ids --- pms/__init__.py | 3 +-- pms/__manifest__.py | 1 + pms/models/pms_reservation.py | 19 +++++++++++++++++++ pms/models/pms_reservation_line.py | 1 - pms/security/ir.model.access.csv | 1 + pms/tests/test_pms_reservation.py | 4 ++-- pms/views/pms_reservation_views.xml | 11 ++++++----- pms/wizards/__init__.py | 1 + pms/wizards/wizard_reservation.py | 18 ++++++++++++++++++ pms/wizards/wizard_reservation.xml | 24 ++++++++++++++++++++++++ 10 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 pms/wizards/__init__.py create mode 100644 pms/wizards/wizard_reservation.py create mode 100644 pms/wizards/wizard_reservation.xml diff --git a/pms/__init__.py b/pms/__init__.py index 3f3f8679b..7588e52c8 100644 --- a/pms/__init__.py +++ b/pms/__init__.py @@ -1,5 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models - -# from . import wizard +from . import wizards diff --git a/pms/__manifest__.py b/pms/__manifest__.py index 965ad2ae1..5fc1b87f1 100644 --- a/pms/__manifest__.py +++ b/pms/__manifest__.py @@ -63,6 +63,7 @@ "views/product_template_views.xml", "views/webclient_templates.xml", "views/ir_sequence_views.xml", + "wizards/wizard_reservation.xml", ], "demo": [ "demo/pms_master_data.xml", diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 7c0709295..4cfb3fc8c 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -106,6 +106,7 @@ class PmsReservation(models.Model): # required=True, ) priority = fields.Integer(compute="_compute_priority", store="True", index=True) + preferred_room_id = fields.Many2one( "pms.room", string="Room", @@ -785,6 +786,24 @@ class PmsReservation(models.Model): "target": "new", } + def open_reservation_wizard(self): + rooms_available = self.env["pms.room.type.availability"].rooms_available( + checkin=self.checkin, + checkout=self.checkout, + current_lines=self.reservation_line_ids.ids, + ) + # REVIEW: check capacity room + return { + 'view_type': 'form', + 'view_mode': 'form', + 'name': 'Unify the reservation', + 'res_model': 'pms.reservation.wizard', + 'target': 'new', + 'type': 'ir.actions.act_window', + 'context': {'rooms_available': rooms_available.ids, + } + } + # ORM Overrides @api.model def name_search(self, name="", args=None, operator="ilike", limit=100): diff --git a/pms/models/pms_reservation_line.py b/pms/models/pms_reservation_line.py index 716700ecb..3787b7041 100644 --- a/pms/models/pms_reservation_line.py +++ b/pms/models/pms_reservation_line.py @@ -123,7 +123,6 @@ class PmsReservationLine(models.Model): # otherwise we assign the first of those available for the entire stay else: line.room_id = rooms_available[0] - line.reservation_id.preferred_room_id = line.room_id.id # if there is no availability for the entire stay without changing rooms (we assume a split reservation) else: diff --git a/pms/security/ir.model.access.csv b/pms/security/ir.model.access.csv index 3530f26ab..02f4a382b 100644 --- a/pms/security/ir.model.access.csv +++ b/pms/security/ir.model.access.csv @@ -47,3 +47,4 @@ manager_access_pms_board_service_line,manager_access_pms_board_service_line,mode manager_access_property,manager_access_property,model_pms_property,pms.group_pms_manager,1,1,1,1 manager_access_pms_cancelation_rule,manager_access_pms_cancelation_rule,model_pms_cancelation_rule,pms.group_pms_manager,1,1,1,1 manager_access_availability,manager_access_availability,model_pms_room_type_availability,pms.group_pms_manager,1,1,1,1 +user_access_pms_reservation_wizard,user_access_pms_reservation_wizard,model_pms_reservation_wizard,pms.group_pms_user,1,1,1,1 diff --git a/pms/tests/test_pms_reservation.py b/pms/tests/test_pms_reservation.py index 672d8db74..80aa1e087 100644 --- a/pms/tests/test_pms_reservation.py +++ b/pms/tests/test_pms_reservation.py @@ -377,7 +377,7 @@ class TestPmsReservations(TestHotel): @freeze_time("1980-11-01") def test_split_reservation06(self): """ - The preferred room_id is not available + There's no availability in the preferred_room_id provided +------------+------+------+------+----+----+----+ | room/date | 01 | 02 | 03 | 04 | 05 | 06 | +------------+------+------+------+----+----+----+ @@ -419,7 +419,7 @@ class TestPmsReservations(TestHotel): @freeze_time("1980-11-01") def test_split_reservation07(self): """ - The preferred room_type_id is not available + There's no availability +------------+------+------+------+----+----+----+ | room/date | 01 | 02 | 03 | 04 | 05 | 06 | +------------+------+------+------+----+----+----+ diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml index c8f11b809..7fe2bdcd1 100644 --- a/pms/views/pms_reservation_views.xml +++ b/pms/views/pms_reservation_views.xml @@ -66,14 +66,13 @@ style="margin-bottom:0px;" attrs="{'invisible': [('splitted','=',False)]}" > - This reservation is part of splitted reservation!, you can check it - in the + This reservation is part of splitted reservation, you can try to unify the reservation here