Merged in fix/SW-3449-corporatecheque-reward-nights-price (pull request #2782)
fix(SW-3449): corporate cheque and rewards price fixes in select rate * fix(SW-3449): corporate cheque and rewards price fixes in select rate Approved-by: Erik Tiekstra Approved-by: Anton Gunnarsson
This commit is contained in:
@@ -28,8 +28,10 @@ export function getTotalPrice({
|
||||
(x): x is OneLevelNonNullable<SelectedRate> => !!x
|
||||
)
|
||||
|
||||
if (summaryArray.some((rate) => "corporateCheque" in rate)) {
|
||||
return calculateCorporateChequePrice(summaryArray)
|
||||
if (
|
||||
summaryArray.some((room) => room.rate && "corporateCheque" in room.rate)
|
||||
) {
|
||||
return calculateCorporateChequePrice(summaryArray, addAdditionalCost)
|
||||
}
|
||||
|
||||
if (!mainRoomRate) {
|
||||
@@ -42,11 +44,12 @@ export function getTotalPrice({
|
||||
mainRoomRate.redemption,
|
||||
mainRoom.roomConfiguration?.selectedPackages.filter(
|
||||
(pkg) => "localPrice" in pkg
|
||||
) ?? null
|
||||
) ?? null,
|
||||
addAdditionalCost
|
||||
)
|
||||
}
|
||||
if ("voucher" in mainRoomRate) {
|
||||
const voucherPrice = calculateVoucherPrice(summaryArray)
|
||||
const voucherPrice = calculateVoucherPrice(summaryArray, addAdditionalCost)
|
||||
return voucherPrice
|
||||
}
|
||||
|
||||
@@ -152,9 +155,12 @@ function calculateTotalPrice(
|
||||
|
||||
function calculateRedemptionTotalPrice(
|
||||
redemption: RedemptionProduct["redemption"],
|
||||
packages: RoomPackage[] | null
|
||||
packages: RoomPackage[] | null,
|
||||
addAdditonalCost: boolean
|
||||
) {
|
||||
const pkgsSum = sumPackages(packages)
|
||||
const pkgsSum = addAdditonalCost
|
||||
? sumPackages(packages)
|
||||
: { price: 0, currency: undefined }
|
||||
let additionalPrice
|
||||
if (redemption.localPrice.additionalPricePerStay) {
|
||||
additionalPrice =
|
||||
@@ -180,7 +186,8 @@ function calculateRedemptionTotalPrice(
|
||||
}
|
||||
|
||||
function calculateVoucherPrice(
|
||||
selectedRateSummary: OneLevelNonNullable<SelectedRate>[]
|
||||
selectedRateSummary: OneLevelNonNullable<SelectedRate>[],
|
||||
addAdditionalPrice?: boolean
|
||||
) {
|
||||
return selectedRateSummary.reduce<Price>(
|
||||
(total, room) => {
|
||||
@@ -191,7 +198,9 @@ function calculateVoucherPrice(
|
||||
|
||||
total.local.price = total.local.price + rate.numberOfVouchers
|
||||
|
||||
const pkgsSum = sumPackages(room.roomConfiguration?.selectedPackages)
|
||||
const pkgsSum = addAdditionalPrice
|
||||
? sumPackages(room.roomConfiguration?.selectedPackages)
|
||||
: { price: 0, currency: undefined }
|
||||
if (pkgsSum.price && pkgsSum.currency) {
|
||||
total.local.additionalPrice =
|
||||
(total.local.additionalPrice || 0) + pkgsSum.price
|
||||
@@ -216,18 +225,22 @@ type OneLevelNonNullable<T> = {
|
||||
}
|
||||
|
||||
export function calculateCorporateChequePrice(
|
||||
selectedRates: OneLevelNonNullable<SelectedRate>[]
|
||||
selectedRates: OneLevelNonNullable<SelectedRate>[],
|
||||
addAdditionalCost?: boolean
|
||||
) {
|
||||
return selectedRates.reduce<Price>(
|
||||
(total, room) => {
|
||||
if (!("corporateCheque" in room.rate)) {
|
||||
if (!(room.rate && "corporateCheque" in room.rate)) {
|
||||
return total
|
||||
}
|
||||
|
||||
const rate = room.rate.corporateCheque
|
||||
const pkgsSum = sumPackages(
|
||||
selectedRates.flatMap((x) => x.roomConfiguration?.selectedPackages)
|
||||
)
|
||||
const pkgsSum = addAdditionalCost
|
||||
? sumPackages(room.roomConfiguration?.selectedPackages)
|
||||
: { price: 0, currency: undefined }
|
||||
const packagesRequestedPrice = addAdditionalCost
|
||||
? sumPackagesRequestedPrice(room.roomConfiguration?.selectedPackages)
|
||||
: { price: 0, currency: undefined }
|
||||
|
||||
total.local.price = total.local.price + rate.localPrice.numberOfCheques
|
||||
if (rate.localPrice.additionalPricePerStay) {
|
||||
@@ -257,7 +270,11 @@ export function calculateCorporateChequePrice(
|
||||
if (rate.requestedPrice.additionalPricePerStay) {
|
||||
total.requested.additionalPrice =
|
||||
(total.requested.additionalPrice || 0) +
|
||||
rate.requestedPrice.additionalPricePerStay
|
||||
rate.requestedPrice.additionalPricePerStay +
|
||||
packagesRequestedPrice.price
|
||||
} else if (packagesRequestedPrice.price) {
|
||||
total.local.additionalPrice =
|
||||
(total.local.additionalPrice || 0) + packagesRequestedPrice.price
|
||||
}
|
||||
|
||||
if (rate.requestedPrice.currency) {
|
||||
|
||||
Reference in New Issue
Block a user