diff --git a/packages/booking-flow/lib/components/EnterDetails/Summary/Mobile/BottomSheet/index.tsx b/packages/booking-flow/lib/components/EnterDetails/Summary/Mobile/BottomSheet/index.tsx index e6b934a06..f0d2fac16 100644 --- a/packages/booking-flow/lib/components/EnterDetails/Summary/Mobile/BottomSheet/index.tsx +++ b/packages/booking-flow/lib/components/EnterDetails/Summary/Mobile/BottomSheet/index.tsx @@ -12,8 +12,8 @@ import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import { Typography } from "@scandic-hotels/design-system/Typography" import { useEnterDetailsStore } from "../../../../../stores/enter-details" -import { isBookingCodeRate } from "../../../../SelectRate/RoomsContainer/RateSummary/utils" import { formId } from "../../../Payment/PaymentClient" +import { isDiscounted } from "../../UI/utils" import styles from "./bottomSheet.module.css" @@ -63,10 +63,8 @@ export default function SummaryBottomSheet({ } }, [isSummaryOpen, errorCode]) - const containsBookingCodeRate = rooms.find( - (r) => r && isBookingCodeRate(r.room.roomRate) - ) - const showDiscounted = containsBookingCodeRate || isUserLoggedIn + const showDiscounted = + isUserLoggedIn || rooms.some((room) => isDiscounted(room.room)) return (
diff --git a/packages/booking-flow/lib/components/EnterDetails/Summary/UI/Room/index.tsx b/packages/booking-flow/lib/components/EnterDetails/Summary/UI/Room/index.tsx index b55eb65a0..765774fc3 100644 --- a/packages/booking-flow/lib/components/EnterDetails/Summary/UI/Room/index.tsx +++ b/packages/booking-flow/lib/components/EnterDetails/Summary/UI/Room/index.tsx @@ -13,6 +13,7 @@ import { ChildBedMapEnum } from "@scandic-hotels/trpc/enums/childBedMapEnum" import { getRoomFeatureDescription } from "../../../../../utils/getRoomFeatureDescription" import { SummaryBreakfast } from "../../../../SummaryBreakfast" +import { isDiscounted } from "../utils" import styles from "./room.module.css" @@ -74,13 +75,7 @@ export default function Room({ room.roomRate.member ) - const isSpecialRate = - "corporateCheque" in room.roomRate || - "redemption" in room.roomRate || - "voucher" in room.roomRate || - room.roomRate.bookingCode || - room.roomRate.rateDefinition.isCampaignRate - const showDiscounted = isSpecialRate || showMemberPrice + const showDiscounted = isFirstRoomMember || isDiscounted(room) const adultsMsg = intl.formatMessage( { diff --git a/packages/booking-flow/lib/components/EnterDetails/Summary/UI/index.tsx b/packages/booking-flow/lib/components/EnterDetails/Summary/UI/index.tsx index 2ad734138..a661063b1 100644 --- a/packages/booking-flow/lib/components/EnterDetails/Summary/UI/index.tsx +++ b/packages/booking-flow/lib/components/EnterDetails/Summary/UI/index.tsx @@ -18,11 +18,10 @@ import { Typography } from "@scandic-hotels/design-system/Typography" import useLang from "../../../../hooks/useLang" import { useEnterDetailsStore } from "../../../../stores/enter-details" import PriceDetailsModal from "../../../PriceDetailsModal" -import { isBookingCodeRate } from "../../../SelectRate/RoomsContainer/RateSummary/utils" import SignupPromoDesktop from "../../../SignupPromo/Desktop" import { mapToPrice } from "./mapToPrice" import Room from "./Room" -import { getMemberPrice } from "./utils" +import { getMemberPrice, isDiscounted } from "./utils" import styles from "./ui.module.css" @@ -85,13 +84,12 @@ export default function SummaryUI({ const isAllCampaignRate = rooms.every( (room) => room.room.roomRate.rateDefinition.isCampaignRate ) - const containsBookingCodeRate = rooms.find( - (r) => r && isBookingCodeRate(r.room.roomRate) - ) + const containsCampaignRate = rooms.find( (r) => r && r.room.roomRate.rateDefinition.isCampaignRate ) - const showDiscounted = containsBookingCodeRate || isUserLoggedIn + const showDiscounted = + isUserLoggedIn || rooms.some((room) => isDiscounted(room.room)) const totalCurrency = isVoucherRate ? CurrencyEnum.Voucher diff --git a/packages/booking-flow/lib/components/EnterDetails/Summary/UI/utils.ts b/packages/booking-flow/lib/components/EnterDetails/Summary/UI/utils.ts index 3fcac662e..136bf81d1 100644 --- a/packages/booking-flow/lib/components/EnterDetails/Summary/UI/utils.ts +++ b/packages/booking-flow/lib/components/EnterDetails/Summary/UI/utils.ts @@ -1,5 +1,9 @@ +import { isSpecialRate } from "../../../SelectRate/RoomsContainer/RateSummary/utils" + import type { Product } from "@scandic-hotels/trpc/types/roomAvailability" +import type { Room } from "../../../../stores/enter-details/types" + export function getMemberPrice(roomRate: Product) { if ("member" in roomRate && roomRate.member) { return { @@ -11,3 +15,13 @@ export function getMemberPrice(roomRate: Product) { return null } + +export function isDiscounted(room: Room): boolean { + return !!( + room.guest.join || + room.guest.membershipNo || + room.roomRate.rateDefinition.isCampaignRate || + room.roomRate.bookingCode || + isSpecialRate(room.roomRate) + ) +} diff --git a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/DesktopSummary.tsx b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/DesktopSummary.tsx index af2c4cfff..26f2163d1 100644 --- a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/DesktopSummary.tsx +++ b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/DesktopSummary.tsx @@ -10,7 +10,7 @@ import Subtitle from "@scandic-hotels/design-system/Subtitle" import { useIsLoggedIn } from "../../../../hooks/useIsLoggedIn" import SignupPromoDesktop from "../../../SignupPromo/Desktop" -import { isBookingCodeRate } from "./utils" +import { isSpecialRate } from "./utils" import styles from "./rateSummary.module.css" @@ -84,7 +84,7 @@ export function DesktopSummary({ const isAllRoomsSelected = selectedRates.state === "ALL_SELECTED" const showDiscounted = - isUserLoggedIn || selectedRates.rates.some(isBookingCodeRate) + isUserLoggedIn || selectedRates.rates.some(isSpecialRate) const mainRoomRate = selectedRates.rates.at(0) const mainRoomCurrency = getRoomCurrency(mainRoomRate) diff --git a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/MobileSummary/Content/index.tsx b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/MobileSummary/Content/index.tsx index be6083ca2..18d012e78 100644 --- a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/MobileSummary/Content/index.tsx +++ b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/MobileSummary/Content/index.tsx @@ -17,7 +17,7 @@ import useLang from "../../../../../../hooks/useLang" import PriceDetailsModal from "../../../../../PriceDetailsModal" import SignupPromoDesktop from "../../../../../SignupPromo/Desktop" import { useRateTitles } from "../../../Rooms/RoomsList/RoomListItem/Rates/useRateTitles" -import { isBookingCodeRate } from "../../utils" +import { isSpecialRate } from "../../utils" import Room from "../Room" import styles from "./summaryContent.module.css" @@ -55,11 +55,9 @@ export default function SummaryContent({ ? selectedRates.rates[0].member : null - const containsBookingCodeRate = selectedRates.rates.find( - (r) => r && isBookingCodeRate(r) - ) + const hasSpecialRate = selectedRates.rates.find((r) => r && isSpecialRate(r)) - const cointainsCode = selectedRates.rates.find((r) => r?.type === "code") + const containsCode = selectedRates.rates.find((r) => r?.type === "code") const containsCampaignRate = selectedRates.rates.some( (r) => r?.type === "campaign" ) @@ -68,7 +66,7 @@ export default function SummaryContent({ return null } - const showDiscounted = containsBookingCodeRate || isUserLoggedIn + const showDiscounted = hasSpecialRate || isUserLoggedIn const totalRegularPrice = selectedRates?.totalPrice?.local?.regularPrice ? selectedRates.totalPrice.local.regularPrice : 0 @@ -137,7 +135,7 @@ export default function SummaryContent({ isMember={isUserLoggedIn && idx === 0} showBookingCodeChip={ selectedRates.rates.length !== 1 && - (room.rateDefinition.isCampaignRate || isBookingCodeRate(room)) + (room.rateDefinition.isCampaignRate || isSpecialRate(room)) } /> ) @@ -332,16 +330,15 @@ export default function SummaryContent({ />
- {selectedRates.rates.length === 1 && - (containsBookingCodeRate || cointainsCode) && ( -
- -
- )} + {selectedRates.rates.length === 1 && (hasSpecialRate || containsCode) && ( +
+ +
+ )} {!isUserLoggedIn && memberPrice ? ( r && isBookingCodeRate(r) - ) - const showDiscounted = containsBookingCodeRate || isUserLoggedIn + const hasSpecialRate = selectedRates.rates.find((r) => r && isSpecialRate(r)) + const showDiscounted = hasSpecialRate || isUserLoggedIn if (!selectedRates.totalPrice) { return null diff --git a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/utils.ts b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/utils.ts index afc34b549..f8a6f3218 100644 --- a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/utils.ts +++ b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/RateSummary/utils.ts @@ -2,7 +2,7 @@ import { RateTypeEnum } from "@scandic-hotels/common/constants/rateType" import type { Product } from "@scandic-hotels/trpc/types/roomAvailability" -export function isBookingCodeRate(product: Product | undefined | null) { +export function isSpecialRate(product: Product | undefined | null) { if (!product) return false if (