diff --git a/pms_api_rest/datamodels/pms_reservation.py b/pms_api_rest/datamodels/pms_reservation.py index bdea929eea..5f0c05be1f 100644 --- a/pms_api_rest/datamodels/pms_reservation.py +++ b/pms_api_rest/datamodels/pms_reservation.py @@ -78,6 +78,7 @@ class PmsReservationInfo(Datamodel): externalReference = fields.String(required=False, allow_none=True) stateCode = fields.String(required=False, allow_none=True) stateDescription = fields.String(required=False, allow_none=True) + cancelledReason = fields.String(required=False, allow_none=True) children = fields.Integer(required=False, allow_none=True) readyForCheckin = fields.Boolean(required=False, allow_none=True) checkinPartnerCount = fields.Integer(required=False, allow_none=True) diff --git a/pms_api_rest/services/pms_folio_service.py b/pms_api_rest/services/pms_folio_service.py index 56bb9b3e4f..bb4cc341d6 100644 --- a/pms_api_rest/services/pms_folio_service.py +++ b/pms_api_rest/services/pms_folio_service.py @@ -1121,6 +1121,11 @@ def update_folio(self, folio_id, pms_folio_info): if not folio_record: raise MissingError(_("Folio not found")) pms_api_check_access(user=self.env.user, records=folio_record) + if pms_folio_info.cancelReservations: + folio_record.action_cancel() + elif pms_folio_info.confirmReservations: + for reservation in folio_record.reservation_ids: + reservation.action_confirm() pms_folio_info = self.adjust_board_services_input(pms_folio_info) folio_vals = self.env["pms.folio"].create_folio_vals( folio_record=folio_record, pms_folio_info=pms_folio_info diff --git a/pms_api_rest/services/pms_reservation_service.py b/pms_api_rest/services/pms_reservation_service.py index f6e02b553a..240b0a4b7b 100644 --- a/pms_api_rest/services/pms_reservation_service.py +++ b/pms_api_rest/services/pms_reservation_service.py @@ -184,6 +184,9 @@ def get_reservation(self, reservation_id, pms_search_param): line.is_reselling for line in reservation.reservation_line_ids ), isBlocked=reservation.blocked, + cancelledReason=reservation.cancelled_reason + if reservation.cancelled_reason + else None ) return res