feat(SW-2470): render correct terms on Enter details

This commit is contained in:
Michael Zetterberg
2025-04-25 16:40:51 +02:00
parent 2366b4e785
commit 9aa70f0b37
5 changed files with 59 additions and 44 deletions

View File

@@ -186,6 +186,13 @@ export default function SummaryUI({
room.roomPrice.perStay.local.currency room.roomPrice.perStay.local.currency
) )
let rateDetails = room.rateDetails
if (room.memberRateDetails) {
if (isMember || room.guest.join) {
rateDetails = room.memberRateDetails
}
}
return ( return (
<Fragment key={idx}> <Fragment key={idx}>
<div <div
@@ -229,6 +236,7 @@ export default function SummaryUI({
<Caption color="uiTextMediumContrast"> <Caption color="uiTextMediumContrast">
{room.cancellationText} {room.cancellationText}
</Caption> </Caption>
{rateDetails ? (
<Modal <Modal
trigger={ trigger={
<Button <Button
@@ -249,11 +257,12 @@ export default function SummaryUI({
title={ title={
room.rateTitle ? room.rateTitle : room.cancellationText room.rateTitle ? room.rateTitle : room.cancellationText
} }
subtitle={room.rateTitle ? room.cancellationText : undefined} subtitle={
room.rateTitle ? room.cancellationText : undefined
}
> >
<div className={styles.terms}> <div className={styles.terms}>
{room.rateDetails?.map((info) => { {rateDetails.map((info) => {
debugger
return ( return (
<Body <Body
key={info} key={info}
@@ -272,6 +281,7 @@ export default function SummaryUI({
})} })}
</div> </div>
</Modal> </Modal>
) : null}
</div> </div>
{room.roomFeatures {room.roomFeatures
? room.roomFeatures.map((feature) => ( ? room.roomFeatures.map((feature) => (

View File

@@ -42,6 +42,7 @@ export default function EnterDetailsProvider({
breakfastIncluded: !!room.breakfastIncluded, breakfastIncluded: !!room.breakfastIncluded,
cancellationText: room.cancellationText, cancellationText: room.cancellationText,
rateDetails: room.rateDetails, rateDetails: room.rateDetails,
memberRateDetails: room.memberRateDetails,
rateTitle: room.rateTitle, rateTitle: room.rateTitle,
roomFeatures: room.packages, roomFeatures: room.packages,
roomRate: room.roomRate, roomRate: room.roomRate,
@@ -56,6 +57,7 @@ export default function EnterDetailsProvider({
} }
: undefined, : undefined,
mustBeGuaranteed: room.mustBeGuaranteed, mustBeGuaranteed: room.mustBeGuaranteed,
memberMustBeGuaranteed: room.memberMustBeGuaranteed,
isFlexRate: room.isFlexRate, isFlexRate: room.isFlexRate,
})), })),
vat, vat,

View File

@@ -231,7 +231,7 @@ export const hotelQueryRouter = router({
cancellationText: rateDefinition.cancellationText, cancellationText: rateDefinition.cancellationText,
isAvailable: selectedRoom.status === AvailabilityEnum.Available, isAvailable: selectedRoom.status === AvailabilityEnum.Available,
isFlexRate: product.rate === RateEnum.flex, isFlexRate: product.rate === RateEnum.flex,
memberMustBeGuaranteed: !!memberRateDefinition?.mustBeGuaranteed, memberMustBeGuaranteed: memberRateDefinition?.mustBeGuaranteed,
mustBeGuaranteed: rateDefinition.mustBeGuaranteed, mustBeGuaranteed: rateDefinition.mustBeGuaranteed,
packages: room.packages.filter((pkg) => packages: room.packages.filter((pkg) =>
selectedPackages?.includes(pkg.code) selectedPackages?.includes(pkg.code)
@@ -239,6 +239,7 @@ export const hotelQueryRouter = router({
rate: product.rate, rate: product.rate,
rateDefinitionTitle: rateDefinition.title, rateDefinitionTitle: rateDefinition.title,
rateDetails: rateDefinition.generalTerms, rateDetails: rateDefinition.generalTerms,
memberRateDetails: memberRateDefinition?.generalTerms,
// Send rate Title when it is a booking code rate // Send rate Title when it is a booking code rate
rateTitle: rateTitle:
rateDefinition.rateType !== RateTypeEnum.Regular rateDefinition.rateType !== RateTypeEnum.Regular

View File

@@ -14,6 +14,7 @@ export interface Room {
rate: RateEnum rate: RateEnum
rateDefinitionTitle: string rateDefinitionTitle: string
rateDetails: string[] rateDetails: string[]
memberRateDetails?: string[]
rateTitle?: string rateTitle?: string
rateType: string rateType: string
roomRate: RoomRate roomRate: RoomRate

View File

@@ -31,13 +31,14 @@ export interface InitialRoomData {
isAvailable: boolean isAvailable: boolean
isFlexRate: boolean isFlexRate: boolean
mustBeGuaranteed: boolean mustBeGuaranteed: boolean
memberMustBeGuaranteed?: boolean
rateDetails: string[] | undefined rateDetails: string[] | undefined
memberRateDetails?: string[]
rateTitle?: string rateTitle?: string
roomFeatures: Packages | null roomFeatures: Packages | null
roomRate: RoomRate roomRate: RoomRate
roomType: string roomType: string
roomTypeCode: string roomTypeCode: string
memberMustBeGuaranteed?: boolean
} }
export type RoomStep = { export type RoomStep = {