import { CurrencyEnum } from "@scandic-hotels/common/constants/currency" import { Divider } from "@scandic-hotels/design-system/Divider" import { Typography } from "@scandic-hotels/design-system/Typography" import { getIntl } from "@/i18n" import styles from "./total.module.css" import type { TotalProps } from "@/types/components/hotelReservation/myStay/receipt" export default async function Total({ booking, currency }: TotalProps) { const intl = await getIntl() const totalPriceInMoney = booking.totalPrice const totalPriceInMoneyExclVat = booking.totalPriceExVat const totalVat = booking.vatAmount const totalPriceInPoints = booking.ancillaries .filter((a) => a.currency === CurrencyEnum.POINTS) .reduce((acc, curr) => acc + curr.totalPrice, 0) const moneyString = totalPriceInMoney > 0 ? `${totalPriceInMoney} ${currency}` : "" const pointsString = totalPriceInPoints > 0 ? `${totalPriceInPoints} ${intl.formatMessage({ defaultMessage: "Points", })}` : "" const plusString = moneyString && pointsString ? " + " : "" return (
{/****** Total ********/}
{intl.formatMessage({ defaultMessage: "Preliminary receipt", })} {intl.formatMessage({ defaultMessage: "Final VAT breakdown will be provided at check-out.", })}
{intl.formatMessage({ defaultMessage: "Total including VAT", })}
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
{`${moneyString}${plusString}${pointsString}`}
{totalPriceInMoney > 0 && ( <>
{intl.formatMessage({ defaultMessage: "Total excluding VAT", })}
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} {`${totalPriceInMoneyExclVat} ${currency}`}
)} {totalPriceInMoney > 0 && ( <>
{intl.formatMessage({ defaultMessage: "VAT", })}
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} {`${totalVat} ${currency}`}
)}
) }