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 (