@@ -696,6 +696,49 @@ def get_folio_reservations(self, folio_id):
696696 )
697697 return reservations
698698
699+ @restapi .method (
700+ [
701+ (
702+ [
703+ "/<int:folio_id>/reservations" ,
704+ ],
705+ "POST" ,
706+ )
707+ ],
708+ input_param = Datamodel ("pms.folio.info" , is_list = False ),
709+ auth = "jwt_api_pms" ,
710+ )
711+ def create_folio_reservations (self , folio_id , folio_info ):
712+ folio_record = self .env ["pms.folio" ].sudo ().search ([("id" , "=" , folio_id )])
713+ if not folio_record :
714+ raise MissingError (_ ("Folio not found" ))
715+ pms_api_check_access (user = self .env .user , records = folio_record )
716+ for reservation in folio_info .reservations :
717+ new_reservation_record = self .env ["pms.reservation" ].create (
718+ {
719+ "folio_id" : folio_record .id ,
720+ "pricelist_id" : folio_info .pricelistId ,
721+ "pms_property_id" : folio_record .pms_property_id .id ,
722+ "checkin" : datetime .strptime (
723+ reservation .checkin , "%Y-%m-%d"
724+ ).date (),
725+ "checkout" : datetime .strptime (
726+ reservation .checkout , "%Y-%m-%d"
727+ ).date (),
728+ "room_type_id" : reservation .roomTypeId ,
729+ "adults" : reservation .adults ,
730+ "children" : reservation .children or 0 ,
731+ "board_service_room_id" : reservation .boardServiceId ,
732+ "preferred_room_id" : reservation .preferredRoomId
733+ if reservation .preferredRoomId
734+ else None ,
735+ "splitted" : reservation .isSplitted
736+ if reservation .isSplitted
737+ else False ,
738+ "reservation_type" : reservation .reservationType or "normal" ,
739+ }
740+ )
741+
699742 @restapi .method (
700743 [
701744 (
0 commit comments