diff --git a/apps/scandic-web/components/HotelReservation/BookingConfirmation/PriceDetailsModal/index.tsx b/apps/scandic-web/components/HotelReservation/BookingConfirmation/PriceDetailsModal/index.tsx index d296f5358..3ab7efef7 100644 --- a/apps/scandic-web/components/HotelReservation/BookingConfirmation/PriceDetailsModal/index.tsx +++ b/apps/scandic-web/components/HotelReservation/BookingConfirmation/PriceDetailsModal/index.tsx @@ -189,7 +189,7 @@ export default function PriceDetailsModal() { })} value={formatPrice( intl, - room.breakfast.totalPrice * room.adults, + room.breakfast.totalPrice, currencyCode )} /> diff --git a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx index 21b2f6db3..974d969d8 100644 --- a/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx +++ b/apps/scandic-web/components/HotelReservation/EnterDetails/Payment/PaymentClient.tsx @@ -282,79 +282,91 @@ export default function PaymentClient({ status: "attempt", }) - initiateBooking.mutate({ + const payload = { checkInDate: fromDate, checkOutDate: toDate, hotelId, language: lang, payment, - rooms: rooms.map(({ room }, idx) => ({ - adults: room.adults, - bookingCode: room.roomRate.bookingCode, - childrenAges: room.childrenInRoom?.map((child) => ({ - age: child.age, - bedType: bedTypeMap[parseInt(child.bed.toString())], - })), - guest: { - becomeMember: room.guest.join, - countryCode: room.guest.countryCode, - email: room.guest.email, - firstName: room.guest.firstName, - lastName: room.guest.lastName, - membershipNumber: room.guest.membershipNo, - phoneNumber: room.guest.phoneNumber, - // Only allowed for room one - ...(idx === 0 && { - dateOfBirth: - "dateOfBirth" in room.guest && room.guest.dateOfBirth - ? room.guest.dateOfBirth - : undefined, - postalCode: - "zipCode" in room.guest && room.guest.zipCode - ? room.guest.zipCode - : undefined, - }), - }, - packages: { - accessibility: - room.roomFeatures?.some( - (feature) => - feature.code === RoomPackageCodeEnum.ACCESSIBILITY_ROOM - ) ?? false, - allergyFriendly: - room.roomFeatures?.some( - (feature) => feature.code === RoomPackageCodeEnum.ALLERGY_ROOM - ) ?? false, - breakfast: !!(room.breakfast && room.breakfast.code), - petFriendly: - room.roomFeatures?.some( - (feature) => feature.code === RoomPackageCodeEnum.PET_ROOM - ) ?? false, - }, - rateCode: + rooms: rooms.map(({ room }, idx) => { + const isMainRoom = idx === 0 + let rateCode = "" + if (isMainRoom && isUserLoggedIn) { + rateCode = booking.rooms[idx].rateCode + } else if ( (room.guest.join || room.guest.membershipNo) && booking.rooms[idx].counterRateCode - ? booking.rooms[idx].counterRateCode - : booking.rooms[idx].rateCode, - roomPrice: { - memberPrice: - "member" in room.roomRate - ? room.roomRate.member?.localPrice.pricePerStay + ) { + rateCode = booking.rooms[idx].counterRateCode + } else { + rateCode = booking.rooms[idx].rateCode + } + return { + adults: room.adults, + bookingCode: room.roomRate.bookingCode, + childrenAges: room.childrenInRoom?.map((child) => ({ + age: child.age, + bedType: bedTypeMap[parseInt(child.bed.toString())], + })), + guest: { + becomeMember: room.guest.join, + countryCode: room.guest.countryCode, + email: room.guest.email, + firstName: room.guest.firstName, + lastName: room.guest.lastName, + membershipNumber: room.guest.membershipNo, + phoneNumber: room.guest.phoneNumber, + // Only allowed for room one + ...(idx === 0 && { + dateOfBirth: + "dateOfBirth" in room.guest && room.guest.dateOfBirth + ? room.guest.dateOfBirth + : undefined, + postalCode: + "zipCode" in room.guest && room.guest.zipCode + ? room.guest.zipCode + : undefined, + }), + }, + packages: { + accessibility: + room.roomFeatures?.some( + (feature) => + feature.code === RoomPackageCodeEnum.ACCESSIBILITY_ROOM + ) ?? false, + allergyFriendly: + room.roomFeatures?.some( + (feature) => feature.code === RoomPackageCodeEnum.ALLERGY_ROOM + ) ?? false, + breakfast: !!(room.breakfast && room.breakfast.code), + petFriendly: + room.roomFeatures?.some( + (feature) => feature.code === RoomPackageCodeEnum.PET_ROOM + ) ?? false, + }, + rateCode, + roomPrice: { + memberPrice: + "member" in room.roomRate + ? room.roomRate.member?.localPrice.pricePerStay + : undefined, + publicPrice: + "public" in room.roomRate + ? room.roomRate.public?.localPrice.pricePerStay + : undefined, + }, + roomTypeCode: room.bedType!.roomTypeCode, // A selection has been made in order to get to this step. + smsConfirmationRequested: data.smsConfirmation, + specialRequest: { + comment: room.specialRequest.comment + ? room.specialRequest.comment : undefined, - publicPrice: - "public" in room.roomRate - ? room.roomRate.public?.localPrice.pricePerStay - : undefined, - }, - roomTypeCode: room.bedType!.roomTypeCode, // A selection has been made in order to get to this step. - smsConfirmationRequested: data.smsConfirmation, - specialRequest: { - comment: room.specialRequest.comment - ? room.specialRequest.comment - : undefined, - }, - })), - }) + }, + } + }), + } + + initiateBooking.mutate(payload) }, [ savedCreditCards, @@ -368,6 +380,7 @@ export default function PaymentClient({ getPaymentMethod, hasOnlyFlexRates, bookingMustBeGuaranteed, + isUserLoggedIn, ] ) diff --git a/apps/scandic-web/components/HotelReservation/MyStay/ManageStay/ActionPanel/Actions/ModifyStay/hooks/useModifyStay.ts b/apps/scandic-web/components/HotelReservation/MyStay/ManageStay/ActionPanel/Actions/ModifyStay/hooks/useModifyStay.ts index 995f5019a..63b41ec77 100644 --- a/apps/scandic-web/components/HotelReservation/MyStay/ManageStay/ActionPanel/Actions/ModifyStay/hooks/useModifyStay.ts +++ b/apps/scandic-web/components/HotelReservation/MyStay/ManageStay/ActionPanel/Actions/ModifyStay/hooks/useModifyStay.ts @@ -90,7 +90,7 @@ export default function useModifyStay({ let totalNewPrice = 0 try { - const data = await utils.client.hotel.availability.room.query({ + const data = await utils.hotel.availability.room.fetch({ hotelId: bookedRoom.hotelId, roomStayStartDate: formValues.checkInDate, roomStayEndDate: formValues.checkOutDate,