{"version":3,"file":"index-CfZpaNOF.js","sources":["../../../node_modules/@slideslive/fuse-kit/dist/utils/number/format_number.js","../../../app/frontend/modules/money/index.js"],"sourcesContent":["function formatNumber(number, thousandsSeparator = \" \", decimalMark = \".\") {\n const value = number.toString().split(/[,.]/);\n value[0] = value[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n return value.join(decimalMark);\n}\nexport {\n formatNumber as default\n};\n","import { formatNumber } from '@slideslive/fuse-kit/utils';\n\nconst OPTIONS = {\n USD: {\n symbol: '$',\n html_entity: '$',\n symbol_first: true,\n decimal_mark: '.',\n thousands_separator: ',',\n withoutTax: '',\n },\n CZK: {\n symbol: 'KÄ',\n html_entity: 'KÄ',\n symbol_first: false,\n decimal_mark: ',',\n thousands_separator: ' ',\n withoutTax: 'bez DPH',\n },\n EUR: {\n symbol: '€',\n html_entity: '€',\n symbol_first: true,\n decimal_mark: ',',\n thousand_separator: '.',\n withoutTax: '',\n },\n CHF: {\n symbol: 'CHF',\n html_entity: 'CHF',\n symbol_first: false,\n decimal_mark: ',',\n thousand_separator: '.',\n withoutTax: '',\n },\n GBP: {\n symbol: 'GBP',\n html_entity: 'GBP',\n symbol_first: false,\n decimal_mark: ',',\n thousand_separator: '.',\n withoutTax: '',\n },\n CAD: {\n symbol: 'CAD',\n html_entity: 'CAD',\n symbol_first: false,\n decimal_mark: ',',\n thousand_separator: '.',\n withoutTax: '',\n },\n AUD: {\n symbol: 'AUD',\n html_entity: 'AUD',\n symbol_first: false,\n decimal_mark: '.',\n thousand_separator: ' ',\n withoutTax: '',\n },\n};\n\nconst LOCALES = {\n CZK: {\n en: {\n symbol: 'CZK',\n },\n de: {\n symbol: 'CZK',\n },\n },\n};\n\n// eslint-disable-next-line no-unused-vars\nconst TAXES = {\n CZ: 0.21,\n DE: 0.19,\n};\n\nconst EU_COUNTRIES = [\n 'AT',\n 'BE',\n 'BG',\n 'CY',\n 'CZ',\n 'DK',\n 'EE',\n 'FI',\n 'FR',\n 'DE',\n 'GR',\n 'HU',\n 'IE',\n 'IT',\n 'LV',\n 'LT',\n 'LU',\n 'MT',\n 'NL',\n 'PL',\n 'PT',\n 'RO',\n 'SK',\n 'SI',\n 'ES',\n 'SE',\n 'GB',\n];\n\nclass Money {\n constructor(cents, currency = 'CZK') {\n this.cents = cents;\n this.currency = currency;\n }\n\n format(round, locale) {\n if (!round) {\n round = 'auto';\n }\n\n const options = OPTIONS[this.currency];\n if (options == null) {\n console.warn(`No money options for currency ${this.currency}`);\n }\n\n let sign = '';\n if (this.cents < 0) {\n sign = '-';\n }\n\n if (round === 'auto') {\n if (this.cents % 100 === 0) {\n round = 0;\n } else {\n round = 2;\n }\n } else if (round < 0) {\n round *= -1;\n }\n\n let result = '';\n\n if (options.symbol_first) {\n if (locale != null && this.currency in LOCALES && locale in LOCALES[this.currency]) {\n result += LOCALES[this.currency][locale].symbol;\n } else {\n result += options.symbol;\n }\n }\n\n result += sign;\n result += formatNumber(\n (Math.abs(this.cents) / 100.0).toFixed(round),\n options.thousands_separator,\n options.decimal_mark,\n );\n\n if (!options.symbol_first) {\n if (locale != null && this.currency in LOCALES && locale in LOCALES[this.currency]) {\n result += ` ${LOCALES[this.currency][locale].symbol}`;\n } else {\n result += ` ${options.symbol}`;\n }\n }\n\n return result;\n }\n\n exchangeTo(currency, date) {\n if (currency === this.currency) {\n return this;\n }\n\n let fromBaseRate;\n let toBaseRate;\n\n if (date != null) {\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n\n if (\n gon.exchange_rates &&\n gon.exchange_rates[year] &&\n gon.exchange_rates[year][month] &&\n gon.exchange_rates[year][month][day]\n ) {\n fromBaseRate = gon.exchange_rates[year][month][day][this.currency];\n toBaseRate = gon.exchange_rates[year][month][day][currency];\n }\n\n if (!fromBaseRate) {\n console.warn(`From base rate undefined for ${date}. Using default.`);\n }\n\n if (!toBaseRate) {\n console.warn(`To base rate undefined for ${date}. Using default.`);\n }\n }\n\n if (!fromBaseRate) {\n fromBaseRate = gon.default_exchange_rates[this.currency];\n }\n\n if (!toBaseRate) {\n toBaseRate = gon.default_exchange_rates[currency];\n }\n\n const rate = fromBaseRate / toBaseRate;\n const cents = Math.round(this.cents * rate);\n\n return new Money(cents, currency);\n }\n\n plus(other, date) {\n return new Money(this.cents + other.exchangeTo(this.currency, date).cents, this.currency);\n }\n\n minus(other, date) {\n return new Money(this.cents - other.exchangeTo(this.currency, date).cents, this.currency);\n }\n\n vatForSupplierAndClient(supplierCountry, clientCountry, clientState, clientVatId, date) {\n const taxPct = Money.vatPctForSupplierAndClient(supplierCountry, clientCountry, clientState, clientVatId, date);\n const cents = Money.roundedTaxPct(this.cents, this.currency, taxPct);\n return new Money(cents, this.currency);\n }\n\n currencyInfo(currency, locale) {\n let info = OPTIONS[currency];\n if (locale && currency in LOCALES && locale in LOCALES[currency]) {\n info = Object.assign(info, LOCALES[currency][locale]);\n }\n\n return info;\n }\n\n static roundedTaxPct(cents, currency, taxPct) {\n return Money.roundedTax(cents * taxPct, currency);\n }\n\n // eslint-disable-next-line no-unused-vars\n static roundedTax(tax, currency) {\n return (tax / 100.0).toFixed(2) * 100;\n }\n\n static vatPctForSupplierAndClient(supplierCountry, clientCountry, clientState, clientVatId, date) {\n let vatPctForSupplierCountry;\n if (supplierCountry === 'CZ' || supplierCountry === 'DE') {\n vatPctForSupplierCountry = Money.vatPctForSupplierCountry(supplierCountry, date);\n\n if (supplierCountry === clientCountry) {\n return vatPctForSupplierCountry;\n }\n\n if (EU_COUNTRIES.indexOf(clientCountry) < 0 && clientCountry !== 'CH') {\n return vatPctForSupplierCountry;\n }\n\n if (!Money.isValidVatNumber(clientVatId, clientCountry)) {\n return vatPctForSupplierCountry;\n }\n }\n\n return 0;\n }\n\n static vatPctForSupplierCountry(country, date) {\n if (country === 'CZ') return 0.21;\n\n if (country === 'DE') {\n if (date.getFullYear() === 2020) {\n if (date.getMonth() >= 6 && date.getMonth() <= 11) {\n return 0.16;\n }\n }\n\n return 0.19;\n }\n\n if (country === 'US') {\n return 0;\n }\n\n console.warn('Unsupported country for VAT!');\n return undefined;\n }\n\n static isValidVatNumber(vatNumber, country) {\n if (EU_COUNTRIES.indexOf(country) >= 0 || country === 'CH') {\n return vatNumber.toUpperCase().startsWith(Money.vatNumberPrefixForCountry(country));\n }\n\n return vatNumber.trim() !== '';\n }\n\n static vatNumberPrefixForCountry(country) {\n if (country === 'CH') {\n return 'CHE';\n }\n\n if (country === 'GR') {\n return 'EL';\n }\n\n if (EU_COUNTRIES.indexOf(country) >= 0) {\n return country;\n }\n\n return '';\n }\n}\n\nexport default Money;\n"],"names":["formatNumber","number","thousandsSeparator","decimalMark","value","OPTIONS","LOCALES","EU_COUNTRIES","Money","cents","currency","round","locale","options","sign","result","date","fromBaseRate","toBaseRate","day","month","year","rate","other","supplierCountry","clientCountry","clientState","clientVatId","taxPct","info","tax","vatPctForSupplierCountry","country","vatNumber"],"mappings":"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","x_google_ignoreList":[0]}