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:
Bianca Widstam
2025-03-21 13:44:14 +00:00
parent 91e26e30af
commit 272c492b76
15 changed files with 160 additions and 78 deletions

View File

@@ -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 {

View File

@@ -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>
</>
)
}

View File

@@ -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>
)} )}

View File

@@ -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}
/> />
)} )}

View File

@@ -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;
}

View File

@@ -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}>

View File

@@ -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);
} }

View File

@@ -111,6 +111,7 @@ export default function AddAncillaryFlowModal({
{ ancillary: selectedAncillary?.title } { ancillary: selectedAncillary?.title }
) )
) )
router.refresh()
} else { } else {
toast.error(ancillaryErrorMessage) toast.error(ancillaryErrorMessage)
} }

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",