Merged in feat/SW-1943-ancillaries-with-points (pull request #1598)
feat(SW-1943): fix design to pay with points * feat(SW-1943): fix design to pay with points Approved-by: Niclas Edenvin
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
padding: 0 var(--Space-x15);
|
padding: 0 var(--Space-x15);
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: baseline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.priceButton {
|
.priceButton {
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
import { Typography } from "@scandic-hotels/design-system/Typography"
|
||||||
|
|
||||||
|
import styles from "./priceRow.module.css"
|
||||||
|
|
||||||
|
interface PriceRowProps {
|
||||||
|
title: string
|
||||||
|
quantity: number
|
||||||
|
label: string
|
||||||
|
value: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function PriceRow({
|
||||||
|
title,
|
||||||
|
quantity,
|
||||||
|
label,
|
||||||
|
value,
|
||||||
|
}: PriceRowProps) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className={styles.column}>
|
||||||
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
|
<h2>{title}</h2>
|
||||||
|
</Typography>
|
||||||
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
|
<p>{`X${quantity}`}</p>
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
<div className={styles.column}>
|
||||||
|
<Typography variant="Body/Paragraph/mdRegular">
|
||||||
|
<h2>{label}</h2>
|
||||||
|
</Typography>
|
||||||
|
<Typography variant="Body/Paragraph/mdRegular">
|
||||||
|
<h2>{value}</h2>
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
.column {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
@@ -5,6 +5,8 @@ import { Typography } from "@scandic-hotels/design-system/Typography"
|
|||||||
import Divider from "@/components/TempDesignSystem/Divider"
|
import Divider from "@/components/TempDesignSystem/Divider"
|
||||||
import { formatPrice } from "@/utils/numberFormatting"
|
import { formatPrice } from "@/utils/numberFormatting"
|
||||||
|
|
||||||
|
import PriceRow from "./PriceRow"
|
||||||
|
|
||||||
import styles from "./priceSummary.module.css"
|
import styles from "./priceSummary.module.css"
|
||||||
|
|
||||||
import type { Ancillary } from "@/types/components/myPages/myStay/ancillaries"
|
import type { Ancillary } from "@/types/components/myPages/myStay/ancillaries"
|
||||||
@@ -12,14 +14,16 @@ import type { Ancillary } from "@/types/components/myPages/myStay/ancillaries"
|
|||||||
interface PriceSummaryProps {
|
interface PriceSummaryProps {
|
||||||
totalPrice: number | null
|
totalPrice: number | null
|
||||||
totalPoints: number | null
|
totalPoints: number | null
|
||||||
totalUnits: number
|
quantityWithPoints: number
|
||||||
|
quantityWithCard: number
|
||||||
selectedAncillary: NonNullable<Ancillary["ancillaryContent"][number]>
|
selectedAncillary: NonNullable<Ancillary["ancillaryContent"][number]>
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function PriceSummary({
|
export default function PriceSummary({
|
||||||
totalPrice,
|
totalPrice,
|
||||||
totalPoints,
|
totalPoints,
|
||||||
totalUnits,
|
quantityWithPoints,
|
||||||
|
quantityWithCard,
|
||||||
selectedAncillary,
|
selectedAncillary,
|
||||||
}: PriceSummaryProps) {
|
}: PriceSummaryProps) {
|
||||||
const intl = useIntl()
|
const intl = useIntl()
|
||||||
@@ -33,61 +37,48 @@ export default function PriceSummary({
|
|||||||
</Typography>
|
</Typography>
|
||||||
<Divider color="subtle" />
|
<Divider color="subtle" />
|
||||||
|
|
||||||
<div className={styles.column}>
|
{hasTotalPrice && (
|
||||||
<Typography variant="Body/Paragraph/mdBold">
|
<PriceRow
|
||||||
<h2>{selectedAncillary.title}</h2>
|
title={selectedAncillary.title}
|
||||||
</Typography>
|
quantity={quantityWithCard}
|
||||||
<Typography variant="Body/Paragraph/mdBold">
|
label={intl.formatMessage({ id: "Price including VAT" })}
|
||||||
<p>{`X${totalUnits}`}</p>
|
value={formatPrice(
|
||||||
</Typography>
|
intl,
|
||||||
</div>
|
selectedAncillary.price.total,
|
||||||
|
selectedAncillary.price.currency
|
||||||
<div className={styles.column}>
|
)}
|
||||||
<Typography variant="Body/Paragraph/mdRegular">
|
/>
|
||||||
<h2>{intl.formatMessage({ id: "Price including VAT" })}</h2>
|
)}
|
||||||
</Typography>
|
{hasTotalPoints && (
|
||||||
<Typography variant="Body/Paragraph/mdRegular">
|
<PriceRow
|
||||||
<h2>
|
title={selectedAncillary.title}
|
||||||
{formatPrice(
|
quantity={quantityWithPoints}
|
||||||
intl,
|
label={intl.formatMessage({ id: "Points" })}
|
||||||
selectedAncillary.price.total,
|
value={`${selectedAncillary.points} ${intl.formatMessage({ id: "points" })}`}
|
||||||
selectedAncillary.price.currency
|
/>
|
||||||
)}
|
)}
|
||||||
</h2>
|
|
||||||
</Typography>
|
|
||||||
</div>
|
|
||||||
<Divider color="subtle" />
|
<Divider color="subtle" />
|
||||||
<div className={styles.column}>
|
<div className={styles.column}>
|
||||||
<Typography variant="Body/Paragraph/mdRegular">
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
<p>
|
<p>
|
||||||
{intl.formatMessage(
|
{hasTotalPrice
|
||||||
{ id: "<b>Total price</b> (incl VAT)" },
|
? intl.formatMessage({ id: "Total price including VAT" })
|
||||||
{ b: (str) => <b>{str}</b> }
|
: intl.formatMessage({ id: "Total points" })}
|
||||||
)}
|
|
||||||
</p>
|
</p>
|
||||||
</Typography>
|
</Typography>
|
||||||
<div className={styles.totalPrice}>
|
<div className={styles.totalPrice}>
|
||||||
{hasTotalPoints && (
|
{(hasTotalPoints || hasTotalPrice) && (
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<Divider variant="vertical" color="subtle" />
|
|
||||||
</div>
|
|
||||||
<Typography variant="Body/Paragraph/mdBold">
|
|
||||||
<p>
|
|
||||||
{totalPoints} {intl.formatMessage({ id: "points" })}
|
|
||||||
{hasTotalPrice && "+"}
|
|
||||||
</p>
|
|
||||||
</Typography>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{hasTotalPrice && (
|
|
||||||
<Typography variant="Body/Paragraph/mdBold">
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
<p>
|
<p>
|
||||||
{formatPrice(
|
{hasTotalPrice &&
|
||||||
intl,
|
formatPrice(
|
||||||
totalPrice,
|
intl,
|
||||||
selectedAncillary.price.currency
|
totalPrice,
|
||||||
)}
|
selectedAncillary.price.currency
|
||||||
|
)}
|
||||||
|
{hasTotalPoints && hasTotalPrice && " + "}
|
||||||
|
{hasTotalPoints &&
|
||||||
|
`${totalPoints} ${intl.formatMessage({ id: "points" })}`}
|
||||||
</p>
|
</p>
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -43,44 +43,59 @@ export default function PriceDetails({
|
|||||||
quantityWithPoints && selectedAncillary?.points
|
quantityWithPoints && selectedAncillary?.points
|
||||||
? selectedAncillary.points * quantityWithPoints
|
? selectedAncillary.points * quantityWithPoints
|
||||||
: null
|
: null
|
||||||
const totalUnits = (quantityWithCard ?? 0) + (quantityWithPoints ?? 0)
|
|
||||||
|
const hasTotalPoints = typeof totalPoints === "number"
|
||||||
|
const hasTotalPrice = typeof totalPrice === "number"
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={styles.totalPrice}>
|
<div className={styles.totalPrice}>
|
||||||
<Typography variant="Body/Paragraph/mdRegular">
|
<div className={styles.totalPriceInclVAT}>
|
||||||
<p>
|
|
||||||
{intl.formatMessage(
|
|
||||||
{ id: "<b>Total price</b> (incl VAT)" },
|
|
||||||
{ b: (str) => <b>{str}</b> }
|
|
||||||
)}
|
|
||||||
</p>
|
|
||||||
</Typography>
|
|
||||||
{totalPrice !== null && (
|
|
||||||
<Typography variant="Body/Paragraph/mdBold">
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
<p>
|
<p>{intl.formatMessage({ id: "Total" })}</p>
|
||||||
{formatPrice(intl, totalPrice, selectedAncillary.price.currency)}
|
|
||||||
</p>
|
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
{totalPrice && (
|
||||||
{totalPoints !== null && (
|
<Typography variant="Body/Paragraph/mdRegular">
|
||||||
<div>
|
<p>({intl.formatMessage({ id: "Incl. VAT" })})</p>
|
||||||
<div>
|
</Typography>
|
||||||
<Divider variant="vertical" color="subtle" />
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
<div className={styles.totalPriceValue}>
|
||||||
|
{hasTotalPrice && (
|
||||||
<Typography variant="Body/Paragraph/mdBold">
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
<p>
|
<p>
|
||||||
{totalPoints} {intl.formatMessage({ id: "points" })}
|
{formatPrice(
|
||||||
|
intl,
|
||||||
|
totalPrice,
|
||||||
|
selectedAncillary.price.currency
|
||||||
|
)}
|
||||||
</p>
|
</p>
|
||||||
</Typography>
|
</Typography>
|
||||||
</div>
|
)}
|
||||||
)}
|
{hasTotalPoints && hasTotalPrice && (
|
||||||
|
<Divider variant="vertical" color="subtle" />
|
||||||
|
)}
|
||||||
|
{hasTotalPoints && (
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<Divider variant="vertical" color="subtle" />
|
||||||
|
</div>
|
||||||
|
<Typography variant="Body/Paragraph/mdBold">
|
||||||
|
<p>
|
||||||
|
{totalPoints} {intl.formatMessage({ id: "points" })}
|
||||||
|
</p>
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Divider color="subtle" />
|
<Divider color="subtle" />
|
||||||
{isPriceDetailsOpen && (
|
{isPriceDetailsOpen && (
|
||||||
<PriceSummary
|
<PriceSummary
|
||||||
totalPrice={totalPrice}
|
totalPrice={totalPrice}
|
||||||
totalPoints={totalPoints}
|
totalPoints={totalPoints}
|
||||||
totalUnits={totalUnits}
|
quantityWithCard={quantityWithCard ?? 0}
|
||||||
|
quantityWithPoints={quantityWithPoints ?? 0}
|
||||||
selectedAncillary={selectedAncillary}
|
selectedAncillary={selectedAncillary}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -7,3 +7,14 @@
|
|||||||
background-color: var(--Base-Surface-Secondary-light-Normal);
|
background-color: var(--Base-Surface-Secondary-light-Normal);
|
||||||
border-radius: var(--Corner-radius-Medium);
|
border-radius: var(--Corner-radius-Medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.totalPriceInclVAT {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--Space-x05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.totalPriceValue {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--Space-x1);
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -42,10 +42,9 @@ export default function SelectQuantityStep({ user }: SelectQuantityStepProps) {
|
|||||||
|
|
||||||
const insufficientPoints = currentPoints < pointsCost || currentPoints === 0
|
const insufficientPoints = currentPoints < pointsCost || currentPoints === 0
|
||||||
|
|
||||||
const pointsLabel =
|
const pointsLabel = insufficientPoints
|
||||||
insufficientPoints && user
|
? intl.formatMessage({ id: "Insufficient points" })
|
||||||
? intl.formatMessage({ id: "Insufficient points" })
|
: intl.formatMessage({ id: "Select quantity" })
|
||||||
: intl.formatMessage({ id: "Select quantity" })
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.selectContainer}>
|
<div className={styles.selectContainer}>
|
||||||
|
|||||||
@@ -57,7 +57,6 @@
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
background: var(--Surface-Primary-OnSurface-Default);
|
background: var(--Surface-Primary-OnSurface-Default);
|
||||||
border-top: 1px solid var(--Base-Border-Normal);
|
|
||||||
padding-bottom: var(--Space-x15);
|
padding-bottom: var(--Space-x15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ export default function AddAncillaryFlowModal({
|
|||||||
{ ancillary: selectedAncillary?.title }
|
{ ancillary: selectedAncillary?.title }
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
router.refresh()
|
||||||
} else {
|
} else {
|
||||||
toast.error(ancillaryErrorMessage)
|
toast.error(ancillaryErrorMessage)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -371,6 +371,7 @@
|
|||||||
"In extra bed": "i ekstra seng",
|
"In extra bed": "i ekstra seng",
|
||||||
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
||||||
"In order to view your booking, please log in.": "Log ind for at se din reservation.",
|
"In order to view your booking, please log in.": "Log ind for at se din reservation.",
|
||||||
|
"Incl. VAT": "Inkl. moms",
|
||||||
"Included": "Inkluderet",
|
"Included": "Inkluderet",
|
||||||
"Indoor pool": "Indendørs pool",
|
"Indoor pool": "Indendørs pool",
|
||||||
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
||||||
@@ -643,6 +644,7 @@
|
|||||||
"Room facilities": "Værelsesfaciliteter",
|
"Room facilities": "Værelsesfaciliteter",
|
||||||
"Room sold out": "Værelse solgt ud",
|
"Room sold out": "Værelse solgt ud",
|
||||||
"Room total": "Værelse total",
|
"Room total": "Værelse total",
|
||||||
|
"Room type": "Værelsestype",
|
||||||
"Room {roomIndex}": "Værelse {roomIndex}",
|
"Room {roomIndex}": "Værelse {roomIndex}",
|
||||||
"Rooms": "Værelser",
|
"Rooms": "Værelser",
|
||||||
"Rooms & Guests": "Værelser & gæster",
|
"Rooms & Guests": "Værelser & gæster",
|
||||||
@@ -719,6 +721,7 @@
|
|||||||
"Street": "Gade",
|
"Street": "Gade",
|
||||||
"Submit": "Submit",
|
"Submit": "Submit",
|
||||||
"Successfully updated profile!": "Profilen er opdateret med succes!",
|
"Successfully updated profile!": "Profilen er opdateret med succes!",
|
||||||
|
"Summary": "Resumé",
|
||||||
"Sunday": "Søndag",
|
"Sunday": "Søndag",
|
||||||
"Surprise!": "Overraskelse!",
|
"Surprise!": "Overraskelse!",
|
||||||
"Surprises": "Surprises",
|
"Surprises": "Surprises",
|
||||||
@@ -757,6 +760,7 @@
|
|||||||
"Total points": "Samlet antal point",
|
"Total points": "Samlet antal point",
|
||||||
"Total price": "Samlet pris",
|
"Total price": "Samlet pris",
|
||||||
"Total price (incl VAT)": "Samlet pris (inkl. moms)",
|
"Total price (incl VAT)": "Samlet pris (inkl. moms)",
|
||||||
|
"Total price including VAT": "Total pris inkl. moms",
|
||||||
"Tourist": "Turist",
|
"Tourist": "Turist",
|
||||||
"Transaction date": "Overførselsdato",
|
"Transaction date": "Overførselsdato",
|
||||||
"Transactions": "Transaktioner",
|
"Transactions": "Transaktioner",
|
||||||
|
|||||||
@@ -372,6 +372,7 @@
|
|||||||
"In extra bed": "im zusätzlichen Bett",
|
"In extra bed": "im zusätzlichen Bett",
|
||||||
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
||||||
"In order to view your booking, please log in.": "Um Ihre Buchung einzusehen, loggen Sie sich bitte ein.",
|
"In order to view your booking, please log in.": "Um Ihre Buchung einzusehen, loggen Sie sich bitte ein.",
|
||||||
|
"Incl. VAT": "Inkl. MwSt.",
|
||||||
"Included": "Iinklusive",
|
"Included": "Iinklusive",
|
||||||
"Indoor pool": "Innenpool",
|
"Indoor pool": "Innenpool",
|
||||||
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
||||||
@@ -642,6 +643,7 @@
|
|||||||
"Room facilities": "Zimmerausstattung",
|
"Room facilities": "Zimmerausstattung",
|
||||||
"Room sold out": "Zimmer verkauft",
|
"Room sold out": "Zimmer verkauft",
|
||||||
"Room total": "Zimmer total",
|
"Room total": "Zimmer total",
|
||||||
|
"Room type": "Zimmertyp",
|
||||||
"Room {roomIndex}": "Zimmer {roomIndex}",
|
"Room {roomIndex}": "Zimmer {roomIndex}",
|
||||||
"Rooms": "Räume",
|
"Rooms": "Räume",
|
||||||
"Rooms & Guests": "Zimmer & Gäste",
|
"Rooms & Guests": "Zimmer & Gäste",
|
||||||
@@ -718,6 +720,7 @@
|
|||||||
"Street": "Straße",
|
"Street": "Straße",
|
||||||
"Submit": "Submit",
|
"Submit": "Submit",
|
||||||
"Successfully updated profile!": "Profil erfolgreich aktualisiert!",
|
"Successfully updated profile!": "Profil erfolgreich aktualisiert!",
|
||||||
|
"Summary": "Zusammenfassung",
|
||||||
"Sunday": "Sonntag",
|
"Sunday": "Sonntag",
|
||||||
"Surprise!": "Überraschung!",
|
"Surprise!": "Überraschung!",
|
||||||
"Surprises": "Surprises",
|
"Surprises": "Surprises",
|
||||||
@@ -755,6 +758,7 @@
|
|||||||
"Total points": "Gesamtpunktzahl",
|
"Total points": "Gesamtpunktzahl",
|
||||||
"Total price": "Gesamtpreis",
|
"Total price": "Gesamtpreis",
|
||||||
"Total price (incl VAT)": "Gesamtpreis (inkl. MwSt.)",
|
"Total price (incl VAT)": "Gesamtpreis (inkl. MwSt.)",
|
||||||
|
"Total price including VAT": "Gesamtpreis inkl. MwSt.",
|
||||||
"Tourist": "Tourist",
|
"Tourist": "Tourist",
|
||||||
"Transaction date": "Transaktionsdatum",
|
"Transaction date": "Transaktionsdatum",
|
||||||
"Transactions": "Transaktionen",
|
"Transactions": "Transaktionen",
|
||||||
|
|||||||
@@ -370,6 +370,7 @@
|
|||||||
"In extra bed": "In extra bed",
|
"In extra bed": "In extra bed",
|
||||||
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
||||||
"In order to view your booking, please log in.": "In order to view your booking, please log in.",
|
"In order to view your booking, please log in.": "In order to view your booking, please log in.",
|
||||||
|
"Incl. VAT": "Incl. VAT",
|
||||||
"Included": "Included",
|
"Included": "Included",
|
||||||
"Indoor pool": "Indoor pool",
|
"Indoor pool": "Indoor pool",
|
||||||
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
||||||
@@ -641,6 +642,7 @@
|
|||||||
"Room facilities": "Room facilities",
|
"Room facilities": "Room facilities",
|
||||||
"Room sold out": "Room sold out",
|
"Room sold out": "Room sold out",
|
||||||
"Room total": "Room total",
|
"Room total": "Room total",
|
||||||
|
"Room type": "Room type",
|
||||||
"Room {roomIndex}": "Room {roomIndex}",
|
"Room {roomIndex}": "Room {roomIndex}",
|
||||||
"Rooms": "Rooms",
|
"Rooms": "Rooms",
|
||||||
"Rooms & Guests": "Rooms & Guests",
|
"Rooms & Guests": "Rooms & Guests",
|
||||||
@@ -717,6 +719,7 @@
|
|||||||
"Street": "Street",
|
"Street": "Street",
|
||||||
"Submit": "Submit",
|
"Submit": "Submit",
|
||||||
"Successfully updated profile!": "Successfully updated profile!",
|
"Successfully updated profile!": "Successfully updated profile!",
|
||||||
|
"Summary": "Summary",
|
||||||
"Sunday": "Sunday",
|
"Sunday": "Sunday",
|
||||||
"Surprise!": "Surprise!",
|
"Surprise!": "Surprise!",
|
||||||
"Surprises": "Surprises",
|
"Surprises": "Surprises",
|
||||||
@@ -753,6 +756,7 @@
|
|||||||
"Total paid": "Total paid",
|
"Total paid": "Total paid",
|
||||||
"Total points": "Total points",
|
"Total points": "Total points",
|
||||||
"Total price": "Total price",
|
"Total price": "Total price",
|
||||||
|
"Total price including VAT": "Total price including VAT",
|
||||||
"Tourist": "Tourist",
|
"Tourist": "Tourist",
|
||||||
"Transaction date": "Transaction date",
|
"Transaction date": "Transaction date",
|
||||||
"Transactions": "Transactions",
|
"Transactions": "Transactions",
|
||||||
|
|||||||
@@ -371,6 +371,7 @@
|
|||||||
"In extra bed": "Oma vuodepaikka",
|
"In extra bed": "Oma vuodepaikka",
|
||||||
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
||||||
"In order to view your booking, please log in.": "Nähdäksesi varauksesi, ole hyvä ja kirjaudu sisään.",
|
"In order to view your booking, please log in.": "Nähdäksesi varauksesi, ole hyvä ja kirjaudu sisään.",
|
||||||
|
"Incl. VAT": "Sis. ALV",
|
||||||
"Included": "Sisälly hintaan",
|
"Included": "Sisälly hintaan",
|
||||||
"Indoor pool": "Sisäuima-allas",
|
"Indoor pool": "Sisäuima-allas",
|
||||||
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
||||||
@@ -641,6 +642,7 @@
|
|||||||
"Room facilities": "Huoneen varustelu",
|
"Room facilities": "Huoneen varustelu",
|
||||||
"Room sold out": "Huone slutsattu",
|
"Room sold out": "Huone slutsattu",
|
||||||
"Room total": "Huoneen kokonaishinta",
|
"Room total": "Huoneen kokonaishinta",
|
||||||
|
"Room type": "Huonetyyppi",
|
||||||
"Room {roomIndex}": "Huone {roomIndex}",
|
"Room {roomIndex}": "Huone {roomIndex}",
|
||||||
"Rooms": "Huoneet",
|
"Rooms": "Huoneet",
|
||||||
"Rooms & Guests": "Huoneet & Vieraat",
|
"Rooms & Guests": "Huoneet & Vieraat",
|
||||||
@@ -718,6 +720,7 @@
|
|||||||
"Street": "Katu",
|
"Street": "Katu",
|
||||||
"Submit": "Submit",
|
"Submit": "Submit",
|
||||||
"Successfully updated profile!": "Profiilin päivitys onnistui!",
|
"Successfully updated profile!": "Profiilin päivitys onnistui!",
|
||||||
|
"Summary": "Yhteenveto",
|
||||||
"Sunday": "Sunnuntai",
|
"Sunday": "Sunnuntai",
|
||||||
"Surprise!": "Yllätys!",
|
"Surprise!": "Yllätys!",
|
||||||
"Surprises": "Surprises",
|
"Surprises": "Surprises",
|
||||||
@@ -755,6 +758,7 @@
|
|||||||
"Total points": "Kokonaispisteet",
|
"Total points": "Kokonaispisteet",
|
||||||
"Total price": "Kokonaishinta",
|
"Total price": "Kokonaishinta",
|
||||||
"Total price (incl VAT)": "Kokonaishinta (sis. ALV)",
|
"Total price (incl VAT)": "Kokonaishinta (sis. ALV)",
|
||||||
|
"Total price including VAT": "Kokonaishinta sisältäen ALV",
|
||||||
"Tourist": "Turisti",
|
"Tourist": "Turisti",
|
||||||
"Transaction date": "Tapahtuman päivämäärä",
|
"Transaction date": "Tapahtuman päivämäärä",
|
||||||
"Transactions": "Tapahtumat",
|
"Transactions": "Tapahtumat",
|
||||||
|
|||||||
@@ -370,6 +370,7 @@
|
|||||||
"In extra bed": "i ekstraseng",
|
"In extra bed": "i ekstraseng",
|
||||||
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
||||||
"In order to view your booking, please log in.": "For å se bestillingen din, vennligst logg inn.",
|
"In order to view your booking, please log in.": "For å se bestillingen din, vennligst logg inn.",
|
||||||
|
"Incl. VAT": "Inkl. MVA",
|
||||||
"Included": "Inkludert",
|
"Included": "Inkludert",
|
||||||
"Indoor pool": "Innendørs basseng",
|
"Indoor pool": "Innendørs basseng",
|
||||||
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
|
||||||
@@ -639,6 +640,7 @@
|
|||||||
"Room details": "Room details",
|
"Room details": "Room details",
|
||||||
"Room facilities": "Romfasiliteter",
|
"Room facilities": "Romfasiliteter",
|
||||||
"Room total": "Rom total",
|
"Room total": "Rom total",
|
||||||
|
"Room type": "Romtype",
|
||||||
"Room {roomIndex}": "Rom {roomIndex}",
|
"Room {roomIndex}": "Rom {roomIndex}",
|
||||||
"Rooms": "Rom",
|
"Rooms": "Rom",
|
||||||
"Rooms & Guests": "Rom og gjester",
|
"Rooms & Guests": "Rom og gjester",
|
||||||
@@ -715,6 +717,7 @@
|
|||||||
"Street": "Gate",
|
"Street": "Gate",
|
||||||
"Submit": "Submit",
|
"Submit": "Submit",
|
||||||
"Successfully updated profile!": "Vellykket oppdatert profil!",
|
"Successfully updated profile!": "Vellykket oppdatert profil!",
|
||||||
|
"Summary": "Sammendrag",
|
||||||
"Sunday": "Søndag",
|
"Sunday": "Søndag",
|
||||||
"Surprise!": "Overraskelse!",
|
"Surprise!": "Overraskelse!",
|
||||||
"Surprises": "Surprises",
|
"Surprises": "Surprises",
|
||||||
@@ -752,6 +755,7 @@
|
|||||||
"Total paid": "Total betalt",
|
"Total paid": "Total betalt",
|
||||||
"Total points": "Totale poeng",
|
"Total points": "Totale poeng",
|
||||||
"Total price": "Totalpris",
|
"Total price": "Totalpris",
|
||||||
|
"Total price including VAT": "Totalpris inkludert mva",
|
||||||
"Tourist": "Turist",
|
"Tourist": "Turist",
|
||||||
"Transaction date": "Transaksjonsdato",
|
"Transaction date": "Transaksjonsdato",
|
||||||
"Transactions": "Transaksjoner",
|
"Transactions": "Transaksjoner",
|
||||||
|
|||||||
@@ -370,6 +370,7 @@
|
|||||||
"In extra bed": "Egen sängplats",
|
"In extra bed": "Egen sängplats",
|
||||||
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
|
||||||
"In order to view your booking, please log in.": "För att se din bokning, vänligen logga in.",
|
"In order to view your booking, please log in.": "För att se din bokning, vänligen logga in.",
|
||||||
|
"Incl. VAT": "Inkl. moms",
|
||||||
"Included": "Inkluderad",
|
"Included": "Inkluderad",
|
||||||
"Indoor pool": "Inomhuspool",
|
"Indoor pool": "Inomhuspool",
|
||||||
"Indoor windows and excellent lighting": "Fönster inomhus och utmärkt belysning",
|
"Indoor windows and excellent lighting": "Fönster inomhus och utmärkt belysning",
|
||||||
@@ -640,6 +641,7 @@
|
|||||||
"Room facilities": "Rumfaciliteter",
|
"Room facilities": "Rumfaciliteter",
|
||||||
"Room sold out": "Rum slutsålt",
|
"Room sold out": "Rum slutsålt",
|
||||||
"Room total": "Rum total",
|
"Room total": "Rum total",
|
||||||
|
"Room type": "Rumstyp",
|
||||||
"Room {roomIndex}": "Rum {roomIndex}",
|
"Room {roomIndex}": "Rum {roomIndex}",
|
||||||
"Rooms": "Rum",
|
"Rooms": "Rum",
|
||||||
"Rooms & Guests": "Rum och gäster",
|
"Rooms & Guests": "Rum och gäster",
|
||||||
@@ -716,6 +718,7 @@
|
|||||||
"Street": "Gata",
|
"Street": "Gata",
|
||||||
"Submit": "Submit",
|
"Submit": "Submit",
|
||||||
"Successfully updated profile!": "Profilen har uppdaterats framgångsrikt!",
|
"Successfully updated profile!": "Profilen har uppdaterats framgångsrikt!",
|
||||||
|
"Summary": "Sammanfattning",
|
||||||
"Sunday": "Söndag",
|
"Sunday": "Söndag",
|
||||||
"Surprise!": "Överraskning!",
|
"Surprise!": "Överraskning!",
|
||||||
"Surprises": "Surprises",
|
"Surprises": "Surprises",
|
||||||
@@ -753,6 +756,7 @@
|
|||||||
"Total paid": "Total betalt",
|
"Total paid": "Total betalt",
|
||||||
"Total points": "Poäng totalt",
|
"Total points": "Poäng totalt",
|
||||||
"Total price": "Totalpris",
|
"Total price": "Totalpris",
|
||||||
|
"Total price including VAT": "Totalpris inklusive moms",
|
||||||
"Tourist": "Turist",
|
"Tourist": "Turist",
|
||||||
"Transaction date": "Transaktionsdatum",
|
"Transaction date": "Transaktionsdatum",
|
||||||
"Transactions": "Transaktioner",
|
"Transactions": "Transaktioner",
|
||||||
|
|||||||
Reference in New Issue
Block a user