Merged in feat/SW-2680-tracking-fixes (pull request #2373)
fix(SW-2680): Added new properties used for tracking * fix(SW-2680): Added new properties used for tracking Approved-by: Michael Zetterberg
This commit is contained in:
@@ -9,7 +9,10 @@ import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||
|
||||
import { ChildBedMapEnum } from "@/types/components/bookingWidget/enums"
|
||||
import type { BreakfastPackages } from "@/types/components/hotelReservation/breakfast"
|
||||
import type { DetailsBooking } from "@/types/components/hotelReservation/enterDetails/details"
|
||||
import type {
|
||||
DetailsBooking,
|
||||
RoomRate,
|
||||
} from "@/types/components/hotelReservation/enterDetails/details"
|
||||
import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter"
|
||||
import {
|
||||
TrackingChannelEnum,
|
||||
@@ -69,7 +72,7 @@ export function getTracking(
|
||||
analyticsRateCode: rooms.map((room) => room.rate).join("|"),
|
||||
arrivalDate: format(arrivalDate, "yyyy-MM-dd"),
|
||||
bedType: storedRooms
|
||||
.map((r) => (r.room.bedType ? r.room.bedType.description : ""))
|
||||
.map((r) => (r.room.bedType ? r.room.bedType.type : ""))
|
||||
.join("|"),
|
||||
// Comma separated booking code values in "code,code,n/a" format for multiroom and "code" or "n/a" for singleroom
|
||||
// n/a is used whenever code is Not applicable as defined by Tracking team
|
||||
@@ -158,9 +161,17 @@ export function getTracking(
|
||||
.join("|"),
|
||||
|
||||
rateCodeCancellationRule: rooms
|
||||
.map((room) => room.cancellationText.toLowerCase())
|
||||
.map((room) => room.cancellationRule)
|
||||
.join(","),
|
||||
rateCodeName: rooms
|
||||
.map((room) =>
|
||||
constructRateCodeName(
|
||||
room.roomRate,
|
||||
room.breakfastIncluded,
|
||||
booking.bookingCode
|
||||
)
|
||||
)
|
||||
.join(","),
|
||||
rateCodeName: rooms.map((room) => room.rateDefinitionTitle).join(","),
|
||||
rateCodeType: rooms.map((room) => room.rateType.toLowerCase()).join(","),
|
||||
region: hotel?.address.city,
|
||||
revenueCurrencyCode: [
|
||||
@@ -310,7 +321,7 @@ function calcTotalRoomPrice(rooms: RoomState[], isMember: boolean) {
|
||||
if ("redemption" in room.roomRate) {
|
||||
return room.roomRate.redemption.localPrice?.additionalPricePerStay ?? 0
|
||||
} else if (
|
||||
"corporateCheck" in room.roomRate ||
|
||||
"corporateCheque" in room.roomRate ||
|
||||
"voucher" in room.roomRate
|
||||
) {
|
||||
return 0
|
||||
@@ -324,3 +335,27 @@ function calcTotalRoomPrice(rooms: RoomState[], isMember: boolean) {
|
||||
return total
|
||||
}, 0)
|
||||
}
|
||||
|
||||
function constructRateCodeName(
|
||||
roomRate: RoomRate,
|
||||
breakfastIncluded: boolean,
|
||||
bookingCode?: string
|
||||
) {
|
||||
if ("corporateCheque" in roomRate) {
|
||||
return "corporate cheque"
|
||||
} else if ("voucher" in roomRate) {
|
||||
return "voucher"
|
||||
} else if ("redemption" in roomRate) {
|
||||
return "redemption"
|
||||
}
|
||||
|
||||
const bookingCodeStr = bookingCode ? bookingCode.toUpperCase() : ""
|
||||
|
||||
const breakfastIncludedStr = breakfastIncluded
|
||||
? "incl. breakfast"
|
||||
: "excl. breakfast"
|
||||
|
||||
return [bookingCodeStr, roomRate.rate, breakfastIncludedStr]
|
||||
.filter(Boolean)
|
||||
.join(" - ")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user