Merged in fix/SW-3198-prices-select-rate (pull request #2763)

fix(SW-3198): fix striketrhough/regular prices, the same in enter details as select rate

* fix(SW-3198): fix striketrhough/regular prices, the same in enter details as select rate

* fix(SW-3198): remove additonalcost if calculating cost per room

* fix(SW-3198): include bookingcode in specialrate

* fix(SW-3198): remove console log

* fix(SW-3198): add or operator

* fix(SW-3198): capture total return value

* fix(SW-3198): rename and move function


Approved-by: Joakim Jäderberg
Approved-by: Hrishikesh Vaipurkar
This commit is contained in:
Bianca Widstam
2025-09-05 14:02:47 +00:00
parent a87cef91d4
commit bba4e24569
19 changed files with 290 additions and 236 deletions

View File

@@ -24,13 +24,13 @@ import styles from "./summaryContent.module.css"
import type { Price } from "../../../../../../contexts/SelectRate/getTotalPrice"
export type SelectRateSummaryProps = {
isMember: boolean
isUserLoggedIn: boolean
bookingCode?: string
toggleSummaryOpen: () => void
}
export default function SummaryContent({
isMember,
isUserLoggedIn,
toggleSummaryOpen,
}: SelectRateSummaryProps) {
const { selectedRates, input } = useSelectRateContext()
@@ -61,7 +61,7 @@ export default function SummaryContent({
return null
}
const showDiscounted = containsBookingCodeRate || isMember
const showDiscounted = containsBookingCodeRate || isUserLoggedIn
const totalRegularPrice = selectedRates?.totalPrice?.local?.regularPrice
? selectedRates.totalPrice.local.regularPrice
: 0
@@ -117,7 +117,7 @@ export default function SummaryContent({
<Room
key={idx}
room={mapToRoom({
isMember,
isUserLoggedIn,
rate: room,
input,
idx,
@@ -126,7 +126,7 @@ export default function SummaryContent({
})}
roomNumber={idx + 1}
roomCount={selectedRates.rates.length}
isMember={isMember}
isMember={isUserLoggedIn && idx === 0}
/>
)
})}
@@ -192,13 +192,15 @@ export default function SummaryContent({
showStrikeThroughPrice &&
selectedRates.totalPrice.local.regularPrice ? (
<Typography variant="Body/Paragraph/mdRegular">
<s className={styles.strikeThroughRate}>
{formatPrice(
intl,
selectedRates.totalPrice.local.regularPrice,
selectedRates.totalPrice.local.currency
)}
</s>
<p>
<s className={styles.strikeThroughRate}>
{formatPrice(
intl,
selectedRates.totalPrice.local.regularPrice,
selectedRates.totalPrice.local.currency
)}
</s>
</p>
</Typography>
) : null}
</div>
@@ -217,7 +219,7 @@ export default function SummaryContent({
}
const mapped = mapToRoom({
isMember,
isUserLoggedIn,
rate: room,
input,
idx,
@@ -231,17 +233,26 @@ export default function SummaryContent({
) {
switch (room.type) {
case "regular":
const memberLocalPrice = room.member?.localPrice
? {
...room.member.localPrice,
regularPricePerStay:
room.public?.localPrice?.pricePerStay ||
room.member.localPrice.regularPricePerStay,
}
: undefined
return {
regular:
isMember && memberLocalPrice
? memberLocalPrice
: room.public?.localPrice,
}
case "campaign":
return {
regular: isMember
? (room.member?.localPrice ?? room.public?.localPrice)
: room.public?.localPrice,
}
case "campaign":
return {
campaign: isMember
? (room.member ?? room.public)
: room.public,
}
case "redemption":
return {
redemption: room.redemption,
@@ -259,10 +270,19 @@ export default function SummaryContent({
}
}
if ("public" in room) {
const memberLocalPrice = room.member?.localPrice
? {
...room.member.localPrice,
regularPricePerStay:
room.public?.localPrice?.pricePerStay ||
room.member.localPrice.regularPricePerStay,
}
: undefined
return {
regular: isMember
? (room.member?.localPrice ?? room.public?.localPrice)
: room.public?.localPrice,
regular:
isMember && memberLocalPrice
? memberLocalPrice
: room.public?.localPrice,
}
}
}
@@ -271,7 +291,7 @@ export default function SummaryContent({
}
}
const p = getPrice(room!, isMember)
const p = getPrice(room!, isUserLoggedIn && idx === 0)
return {
...mapped,
@@ -293,7 +313,7 @@ export default function SummaryContent({
vat={selectedRates.vat}
/>
</div>
{!isMember && memberPrice ? (
{!isUserLoggedIn && memberPrice ? (
<SignupPromoDesktop
memberPrice={{
amount: memberPrice.localPrice.pricePerStay,
@@ -307,14 +327,14 @@ export default function SummaryContent({
}
function mapToRoom({
isMember,
isUserLoggedIn,
rate,
input,
idx,
getPriceForRoom,
rateTitles,
}: {
isMember: boolean
isUserLoggedIn: boolean
rate: NonNullable<
ReturnType<typeof useSelectRateContext>["selectedRates"]["rates"][number]
>
@@ -323,6 +343,7 @@ function mapToRoom({
getPriceForRoom: (roomIndex: number) => Price | null
rateTitles: ReturnType<typeof useRateTitles>
}) {
const useMemberPrice = isUserLoggedIn && idx === 0
return {
adults: input.data?.booking.rooms[idx].adults || 0,
childrenInRoom: input.data?.booking.rooms[idx].childrenInRoom,
@@ -335,7 +356,7 @@ function mapToRoom({
local: { price: -1, currency: CurrencyEnum.Unknown },
},
},
rateDetails: isMember
rateDetails: useMemberPrice
? (rate.rateDefinitionMember?.generalTerms ??
rate.rateDefinition.generalTerms)
: rate.rateDefinition.generalTerms,