fix: always use totalPrice to display roomCharge
This commit is contained in:
@@ -273,7 +273,7 @@ export function getRoomPrice(roomRate: RoomRate, isMember: boolean) {
|
||||
}
|
||||
|
||||
export function getTotalPrice(roomRates: RoomRate[], isMember: boolean) {
|
||||
return roomRates.reduce<Price>(
|
||||
const totalPrice = roomRates.reduce<Price>(
|
||||
(total, roomRate, idx) => {
|
||||
const isMainRoom = idx === 0
|
||||
let rate
|
||||
@@ -320,6 +320,52 @@ export function getTotalPrice(roomRates: RoomRate[], isMember: boolean) {
|
||||
requested: undefined,
|
||||
}
|
||||
)
|
||||
|
||||
if (totalPrice.local.regularPrice) {
|
||||
const totalPriceWithRegularPrice = roomRates.reduce(
|
||||
(total, roomRate, idx) => {
|
||||
const isMainRoom = idx === 0
|
||||
let rate
|
||||
if (isMainRoom && isMember && "member" in roomRate && roomRate.member) {
|
||||
rate = roomRate.member
|
||||
} else if ("public" in roomRate && roomRate.public) {
|
||||
rate = roomRate.public
|
||||
}
|
||||
|
||||
if (!rate) {
|
||||
return total
|
||||
}
|
||||
|
||||
if (rate.localPrice.regularPricePerStay) {
|
||||
total.local.regularPrice =
|
||||
total.local.regularPrice + rate.localPrice.regularPricePerStay
|
||||
} else {
|
||||
total.local.regularPrice =
|
||||
total.local.regularPrice + rate.localPrice.pricePerStay
|
||||
}
|
||||
|
||||
return total
|
||||
},
|
||||
{
|
||||
...totalPrice,
|
||||
local: {
|
||||
...totalPrice.local,
|
||||
regularPrice: 0,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
if (
|
||||
totalPriceWithRegularPrice.local.price ===
|
||||
totalPriceWithRegularPrice.local.regularPrice
|
||||
) {
|
||||
totalPriceWithRegularPrice.local.regularPrice = 0
|
||||
}
|
||||
|
||||
return totalPriceWithRegularPrice
|
||||
}
|
||||
|
||||
return totalPrice
|
||||
}
|
||||
|
||||
export function calculateVoucherPrice(roomRates: RoomRate[]) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { create } from "zustand"
|
||||
import type { BreakfastPackage } from "@/types/components/hotelReservation/breakfast"
|
||||
import type { BedTypeSchema } from "@/types/components/hotelReservation/enterDetails/bedType"
|
||||
import type { RoomPrice } from "@/types/components/hotelReservation/enterDetails/details"
|
||||
import type { PriceType } from "@/types/components/hotelReservation/myStay/myStay"
|
||||
import { PriceTypeEnum } from "@/types/components/hotelReservation/myStay/myStay"
|
||||
import type { Child } from "@/types/components/hotelReservation/selectRate/selectRate"
|
||||
import { CurrencyEnum } from "@/types/enums/currency"
|
||||
import type { Packages } from "@/types/requests/packages"
|
||||
@@ -33,6 +33,9 @@ export type Room = Pick<
|
||||
| "currencyCode"
|
||||
| "vatPercentage"
|
||||
| "roomPoints"
|
||||
| "totalPrice"
|
||||
| "totalPriceExVat"
|
||||
| "vatAmount"
|
||||
> & {
|
||||
roomName: string
|
||||
roomNumber: number | null
|
||||
@@ -45,7 +48,7 @@ export type Room = Pick<
|
||||
roomPrice: RoomPrice
|
||||
breakfast: BreakfastPackage | null
|
||||
mainRoom: boolean
|
||||
priceType: PriceType
|
||||
priceType: PriceTypeEnum
|
||||
}
|
||||
|
||||
interface MyStayRoomDetailsState {
|
||||
@@ -118,6 +121,7 @@ export const useMyStayRoomDetailsStore = create<MyStayRoomDetailsState>(
|
||||
vatPercentage: 0,
|
||||
vatAmount: 0,
|
||||
totalPriceExVat: 0,
|
||||
totalPrice: 0,
|
||||
createDateTime: new Date(),
|
||||
canChangeDate: false,
|
||||
multiRoom: false,
|
||||
@@ -136,7 +140,7 @@ export const useMyStayRoomDetailsStore = create<MyStayRoomDetailsState>(
|
||||
breakfast: null,
|
||||
linkedReservations: [],
|
||||
isCancelable: false,
|
||||
priceType: "money",
|
||||
priceType: PriceTypeEnum.money,
|
||||
},
|
||||
linkedReservationRooms: [],
|
||||
actions: {
|
||||
|
||||
Reference in New Issue
Block a user