diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 6694aecc2..0eb28f7fe 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -716,6 +716,14 @@ class PmsReservation(models.Model): default=False, ) + is_reselling = fields.Boolean( + string="Reselling", + help="Indicate if exists reselling in any reservation line", + compute="_compute_is_reselling", + store=True, + readonly=False, + ) + @api.depends("folio_id", "folio_id.external_reference") def _compute_external_reference(self): for reservation in self: @@ -964,7 +972,7 @@ class PmsReservation(models.Model): @api.depends("board_service_room_id") def _compute_service_ids(self): - if self.env.context.get('skip_compute_service_ids', False): + if self.env.context.get("skip_compute_service_ids", False): return for reservation in self: board_services = [] @@ -1662,6 +1670,14 @@ class PmsReservation(models.Model): for record in self: record.force_update_origin = True + @api.depends("is_reselling") + def _compute_is_reselling(self): + for record in self: + if any(record.reservation_line_ids.mapped("is_reselling")): + record.is_reselling = True + else: + record.is_reselling = False + def _search_allowed_checkin(self, operator, value): if operator not in ("=",): raise UserError( diff --git a/pms/models/pms_reservation_line.py b/pms/models/pms_reservation_line.py index 70499536d..25dbde992 100644 --- a/pms/models/pms_reservation_line.py +++ b/pms/models/pms_reservation_line.py @@ -136,6 +136,13 @@ class PmsReservationLine(models.Model): ondelete="restrict", ) + is_reselling = fields.Boolean( + string="Reselling", + help="Indicates if the reservation line is reselling", + readonly=False, + store=True, + ) + def name_get(self): result = [] for res in self: @@ -391,10 +398,14 @@ class PmsReservationLine(models.Model): ) # TODO: Out of service 0 amount - @api.depends("reservation_id.state", "reservation_id.overbooking") + @api.depends("reservation_id.state", "reservation_id.overbooking", "is_reselling") def _compute_occupies_availability(self): for line in self: - if line.reservation_id.state == "cancel" or line.reservation_id.overbooking: + if ( + line.reservation_id.state == "cancel" + or line.reservation_id.overbooking + or line.is_reselling + ): line.occupies_availability = False else: line.occupies_availability = True diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml index c8f9ef786..778833b78 100644 --- a/pms/views/pms_reservation_views.xml +++ b/pms/views/pms_reservation_views.xml @@ -302,6 +302,14 @@ OverBooking +