UNPKG

@vendasta/store

Version:

Components and data for Store

102 lines 15.4 kB
import { Currency, RevenuePeriod } from '@vendasta/sales-orders'; import { Currency as BillingCurrency, Frequency } from '@vendasta/billing'; import { CurrenciesCurrency, FrequenciesFrequency } from '@vendasta/marketplace-packages'; export function getStorePriceForPackage(packageId, currency, frequency, storePackagePrices) { if (!packageId || !storePackagePrices) { return null; } const packagePricing = storePackagePrices[packageId]; if (!packagePricing) { return null; } if (!salesOrderCurrencyEqualToMarketplaceCurrency(currency, packagePricing.currency)) { return null; } const packagePrice = packagePricing.prices?.find((price) => salesOrderPeriodEqualToMarketplaceFrequency(frequency, price.frequency)); return packagePrice?.price || null; } export function getStorePriceForApp(appId, currency, frequency, storeAppPrices) { if (!appId || !storeAppPrices) { return null; } const appPricing = storeAppPrices[appId]; if (!appPricing) { return null; } if (!salesOrderCurrencyEqualToBillingCurrency(currency, appPricing.currency)) { return null; } if (frequency !== billingFrequencyToRevenuePeriod(appPricing.frequency)) { return null; } return appPricing.pricingRules[0]?.price || null; } export function salesOrderPeriodEqualToMarketplaceFrequency(period, frequency) { const salesOrderPeriod = period || RevenuePeriod.ONETIME; const marketplaceFrequency = frequency || FrequenciesFrequency.MONTHLY; return salesOrderPeriodToMarketplaceFrequency[salesOrderPeriod] === marketplaceFrequency; } export function salesOrderCurrencyEqualToMarketplaceCurrency(salesOrderCurrency, marketplaceCurrency) { const soCurrency = salesOrderCurrency || Currency.USD; const mpCurrency = marketplaceCurrency || CurrenciesCurrency.USD; return salesOrderCurrencyToMarketplaceCurrency[soCurrency] === mpCurrency; } export function salesOrderCurrencyEqualToBillingCurrency(salesOrderCurrency, billingCurrency) { const soCurrency = salesOrderCurrency || Currency.USD; const bCurrency = billingCurrency || BillingCurrency.USD; return salesOrderCurrencyToBillingCurrency[soCurrency] === bCurrency; } export function billingFrequencyToRevenuePeriod(frequency) { switch (frequency) { case Frequency.Monthly: return RevenuePeriod.MONTHLY; case Frequency.Yearly: return RevenuePeriod.YEARLY; case Frequency.OneTime: return RevenuePeriod.ONETIME; default: return null; } } export function getCurrencyFromLineItem(lineItem) { if (!!lineItem.lineItem.currency) { return lineItem.lineItem.currency; } return currencyCodeToCurrency[lineItem.lineItem.currencyCode] || Currency.USD; } const currencyCodeToCurrency = { USD: Currency.USD, CAD: Currency.CAD, EUR: Currency.EUR, AUD: Currency.AUD, GBP: Currency.GBP, NZD: Currency.NZD, ZAR: Currency.ZAR, }; const salesOrderPeriodToMarketplaceFrequency = { [RevenuePeriod.ONETIME]: FrequenciesFrequency.ONCE, [RevenuePeriod.DAILY]: FrequenciesFrequency.DAILY, [RevenuePeriod.WEEKLY]: FrequenciesFrequency.WEEKLY, [RevenuePeriod.BIWEEKLY]: FrequenciesFrequency.OTHER, [RevenuePeriod.MONTHLY]: FrequenciesFrequency.MONTHLY, [RevenuePeriod.YEARLY]: FrequenciesFrequency.YEARLY, }; const salesOrderCurrencyToMarketplaceCurrency = { [Currency.AUD]: CurrenciesCurrency.AUD, [Currency.CAD]: CurrenciesCurrency.CAD, [Currency.EUR]: CurrenciesCurrency.EUR, [Currency.GBP]: CurrenciesCurrency.GBP, [Currency.NZD]: CurrenciesCurrency.NZD, [Currency.USD]: CurrenciesCurrency.USD, [Currency.ZAR]: CurrenciesCurrency.ZAR, }; const salesOrderCurrencyToBillingCurrency = { [Currency.AUD]: BillingCurrency.AUD, [Currency.CAD]: BillingCurrency.CAD, [Currency.EUR]: BillingCurrency.EUR, [Currency.GBP]: BillingCurrency.GBP, [Currency.NZD]: BillingCurrency.NZD, [Currency.USD]: BillingCurrency.USD, [Currency.ZAR]: BillingCurrency.ZAR, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291bnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc3RvcmUvc3JjL2xpYi9vcmRlci1mb3JtL29yZGVyLWl0ZW0tbGlzdC9kaXNjb3VudC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsSUFBSSxlQUFlLEVBQUUsU0FBUyxFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBVyxNQUFNLGdDQUFnQyxDQUFDO0FBR25HLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsU0FBaUIsRUFDakIsUUFBa0IsRUFDbEIsU0FBd0IsRUFDeEIsa0JBQThDO0lBRTlDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUNyQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxjQUFjLEdBQVksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNuQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDcEYsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDekQsMkNBQTJDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FDeEUsQ0FBQztJQUNGLE9BQU8sWUFBWSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsS0FBYSxFQUNi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Q25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0NBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeSwgUmV2ZW51ZVBlcmlvZCB9IGZyb20gJ0B2ZW5kYXN0YS9zYWxlcy1vcmRlcnMnO1xuaW1wb3J0IHsgQ3VycmVuY3kgYXMgQmlsbGluZ0N1cnJlbmN5LCBGcmVxdWVuY3ksIFByb2R1Y3RQcmljaW5nIH0gZnJvbSAnQHZlbmRhc3RhL2JpbGxpbmcnO1xuaW1wb3J0IHsgQ3VycmVuY2llc0N1cnJlbmN5LCBGcmVxdWVuY2llc0ZyZXF1ZW5jeSwgUHJpY2luZyB9IGZyb20gJ0B2ZW5kYXN0YS9tYXJrZXRwbGFjZS1wYWNrYWdlcyc7XG5pbXBvcnQgeyBVSUxpbmVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmVQcmljZUZvclBhY2thZ2UoXG4gIHBhY2thZ2VJZDogc3RyaW5nLFxuICBjdXJyZW5jeTogQ3VycmVuY3ksXG4gIGZyZXF1ZW5jeTogUmV2ZW51ZVBlcmlvZCxcbiAgc3RvcmVQYWNrYWdlUHJpY2VzOiB7IFtrZXk6IHN0cmluZ106IFByaWNpbmcgfSxcbik6IG51bWJlciB8IG51bGwge1xuICBpZiAoIXBhY2thZ2VJZCB8fCAhc3RvcmVQYWNrYWdlUHJpY2VzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcGFja2FnZVByaWNpbmc6IFByaWNpbmcgPSBzdG9yZVBhY2thZ2VQcmljZXNbcGFja2FnZUlkXTtcbiAgaWYgKCFwYWNrYWdlUHJpY2luZykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghc2FsZXNPcmRlckN1cnJlbmN5RXF1YWxUb01hcmtldHBsYWNlQ3VycmVuY3koY3VycmVuY3ksIHBhY2thZ2VQcmljaW5nLmN1cnJlbmN5KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHBhY2thZ2VQcmljZSA9IHBhY2thZ2VQcmljaW5nLnByaWNlcz8uZmluZCgocHJpY2UpID0+XG4gICAgc2FsZXNPcmRlclBlcmlvZEVxdWFsVG9NYXJrZXRwbGFjZUZyZXF1ZW5jeShmcmVxdWVuY3ksIHByaWNlLmZyZXF1ZW5jeSksXG4gICk7XG4gIHJldHVybiBwYWNrYWdlUHJpY2U/LnByaWNlIHx8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yZVByaWNlRm9yQXBwKFxuICBhcHBJZDogc3RyaW5nLFxuICBjdXJyZW5jeTogQ3VycmVuY3ksXG4gIGZyZXF1ZW5jeTogUmV2ZW51ZVBlcmlvZCxcbiAgc3RvcmVBcHBQcmljZXM6IHsgW2tleTogc3RyaW5nXTogUHJvZHVjdFByaWNpbmcgfSxcbik6IG51bWJlciB8IG51bGwge1xuICBpZiAoIWFwcElkIHx8ICFzdG9yZUFwcFByaWNlcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGFwcFByaWNpbmc6IFByb2R1Y3RQcmljaW5nID0gc3RvcmVBcHBQcmljZXNbYXBwSWRdO1xuICBpZiAoIWFwcFByaWNpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIXNhbGVzT3JkZXJDdXJyZW5jeUVxdWFsVG9CaWxsaW5nQ3VycmVuY3koY3VycmVuY3ksIGFwcFByaWNpbmcuY3VycmVuY3kpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGZyZXF1ZW5jeSAhPT0gYmlsbGluZ0ZyZXF1ZW5jeVRvUmV2ZW51ZVBlcmlvZChhcHBQcmljaW5nLmZyZXF1ZW5jeSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYXBwUHJpY2luZy5wcmljaW5nUnVsZXNbMF0/LnByaWNlIHx8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWxlc09yZGVyUGVyaW9kRXF1YWxUb01hcmtldHBsYWNlRnJlcXVlbmN5KFxuICBwZXJpb2Q6IFJldmVudWVQZXJpb2QsXG4gIGZyZXF1ZW5jeTogRnJlcXVlbmNpZXNGcmVxdWVuY3ksXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgc2FsZXNPcmRlclBlcmlvZCA9IHBlcmlvZCB8fCBSZXZlbnVlUGVyaW9kLk9ORVRJTUU7XG4gIGNvbnN0IG1hcmtldHBsYWNlRnJlcXVlbmN5ID0gZnJlcXVlbmN5IHx8IEZyZXF1ZW5jaWVzRnJlcXVlbmN5Lk1PTlRITFk7XG4gIHJldHVybiBzYWxlc09yZGVyUGVyaW9kVG9NYXJrZXRwbGFjZUZyZXF1ZW5jeVtzYWxlc09yZGVyUGVyaW9kXSA9PT0gbWFya2V0cGxhY2VGcmVxdWVuY3k7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWxlc09yZGVyQ3VycmVuY3lFcXVhbFRvTWFya2V0cGxhY2VDdXJyZW5jeShcbiAgc2FsZXNPcmRlckN1cnJlbmN5OiBDdXJyZW5jeSxcbiAgbWFya2V0cGxhY2VDdXJyZW5jeTogQ3VycmVuY2llc0N1cnJlbmN5LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNvQ3VycmVuY3kgPSBzYWxlc09yZGVyQ3VycmVuY3kgfHwgQ3VycmVuY3kuVVNEO1xuICBjb25zdCBtcEN1cnJlbmN5ID0gbWFya2V0cGxhY2VDdXJyZW5jeSB8fCBDdXJyZW5jaWVzQ3VycmVuY3kuVVNEO1xuICByZXR1cm4gc2FsZXNPcmRlckN1cnJlbmN5VG9NYXJrZXRwbGFjZUN1cnJlbmN5W3NvQ3VycmVuY3ldID09PSBtcEN1cnJlbmN5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FsZXNPcmRlckN1cnJlbmN5RXF1YWxUb0JpbGxpbmdDdXJyZW5jeShcbiAgc2FsZXNPcmRlckN1cnJlbmN5OiBDdXJyZW5jeSxcbiAgYmlsbGluZ0N1cnJlbmN5OiBCaWxsaW5nQ3VycmVuY3ksXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgc29DdXJyZW5jeSA9IHNhbGVzT3JkZXJDdXJyZW5jeSB8fCBDdXJyZW5jeS5VU0Q7XG4gIGNvbnN0IGJDdXJyZW5jeSA9IGJpbGxpbmdDdXJyZW5jeSB8fCBCaWxsaW5nQ3VycmVuY3kuVVNEO1xuICByZXR1cm4gc2FsZXNPcmRlckN1cnJlbmN5VG9CaWxsaW5nQ3VycmVuY3lbc29DdXJyZW5jeV0gPT09IGJDdXJyZW5jeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbGxpbmdGcmVxdWVuY3lUb1JldmVudWVQZXJpb2QoZnJlcXVlbmN5OiBGcmVxdWVuY3kpOiBSZXZlbnVlUGVyaW9kIHwgbnVsbCB7XG4gIHN3aXRjaCAoZnJlcXVlbmN5KSB7XG4gICAgY2FzZSBGcmVxdWVuY3kuTW9udGhseTpcbiAgICAgIHJldHVybiBSZXZlbnVlUGVyaW9kLk1PTlRITFk7XG4gICAgY2FzZSBGcmVxdWVuY3kuWWVhcmx5OlxuICAgICAgcmV0dXJuIFJldmVudWVQZXJpb2QuWUVBUkxZO1xuICAgIGNhc2UgRnJlcXVlbmN5Lk9uZVRpbWU6XG4gICAgICByZXR1cm4gUmV2ZW51ZVBlcmlvZC5PTkVUSU1FO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVuY3lGcm9tTGluZUl0ZW0obGluZUl0ZW06IFVJTGluZUl0ZW0pOiBDdXJyZW5jeSB7XG4gIGlmICghIWxpbmVJdGVtLmxpbmVJdGVtLmN1cnJlbmN5KSB7XG4gICAgcmV0dXJuIGxpbmVJdGVtLmxpbmVJdGVtLmN1cnJlbmN5O1xuICB9XG4gIHJldHVybiBjdXJyZW5jeUNvZGVUb0N1cnJlbmN5W2xpbmVJdGVtLmxpbmVJdGVtLmN1cnJlbmN5Q29kZV0gfHwgQ3VycmVuY3kuVVNEO1xufVxuXG5jb25zdCBjdXJyZW5jeUNvZGVUb0N1cnJlbmN5ID0ge1xuICBVU0Q6IEN1cnJlbmN5LlVTRCxcbiAgQ0FEOiBDdXJyZW5jeS5DQUQsXG4gIEVVUjogQ3VycmVuY3kuRVVSLFxuICBBVUQ6IEN1cnJlbmN5LkFVRCxcbiAgR0JQOiBDdXJyZW5jeS5HQlAsXG4gIE5aRDogQ3VycmVuY3kuTlpELFxuICBaQVI6IEN1cnJlbmN5LlpBUixcbn07XG5cbmNvbnN0IHNhbGVzT3JkZXJQZXJpb2RUb01hcmtldHBsYWNlRnJlcXVlbmN5ID0ge1xuICBbUmV2ZW51ZVBlcmlvZC5PTkVUSU1FXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuT05DRSxcbiAgW1JldmVudWVQZXJpb2QuREFJTFldOiBGcmVxdWVuY2llc0ZyZXF1ZW5jeS5EQUlMWSxcbiAgW1JldmVudWVQZXJpb2QuV0VFS0xZXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuV0VFS0xZLFxuICBbUmV2ZW51ZVBlcmlvZC5CSVdFRUtMWV06IEZyZXF1ZW5jaWVzRnJlcXVlbmN5Lk9USEVSLFxuICBbUmV2ZW51ZVBlcmlvZC5NT05USExZXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuTU9OVEhMWSxcbiAgW1JldmVudWVQZXJpb2QuWUVBUkxZXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuWUVBUkxZLFxufTtcblxuY29uc3Qgc2FsZXNPcmRlckN1cnJlbmN5VG9NYXJrZXRwbGFjZUN1cnJlbmN5ID0ge1xuICBbQ3VycmVuY3kuQVVEXTogQ3VycmVuY2llc0N1cnJlbmN5LkFVRCxcbiAgW0N1cnJlbmN5LkNBRF06IEN1cnJlbmNpZXNDdXJyZW5jeS5DQUQsXG4gIFtDdXJyZW5jeS5FVVJdOiBDdXJyZW5jaWVzQ3VycmVuY3kuRVVSLFxuICBbQ3VycmVuY3kuR0JQXTogQ3VycmVuY2llc0N1cnJlbmN5LkdCUCxcbiAgW0N1cnJlbmN5Lk5aRF06IEN1cnJlbmNpZXNDdXJyZW5jeS5OWkQsXG4gIFtDdXJyZW5jeS5VU0RdOiBDdXJyZW5jaWVzQ3VycmVuY3kuVVNELFxuICBbQ3VycmVuY3kuWkFSXTogQ3VycmVuY2llc0N1cnJlbmN5LlpBUixcbn07XG5cbmNvbnN0IHNhbGVzT3JkZXJDdXJyZW5jeVRvQmlsbGluZ0N1cnJlbmN5ID0ge1xuICBbQ3VycmVuY3kuQVVEXTogQmlsbGluZ0N1cnJlbmN5LkFVRCxcbiAgW0N1cnJlbmN5LkNBRF06IEJpbGxpbmdDdXJyZW5jeS5DQUQsXG4gIFtDdXJyZW5jeS5FVVJdOiBCaWxsaW5nQ3VycmVuY3kuRVVSLFxuICBbQ3VycmVuY3kuR0JQXTogQmlsbGluZ0N1cnJlbmN5LkdCUCxcbiAgW0N1cnJlbmN5Lk5aRF06IEJpbGxpbmdDdXJyZW5jeS5OWkQsXG4gIFtDdXJyZW5jeS5VU0RdOiBCaWxsaW5nQ3VycmVuY3kuVVNELFxuICBbQ3VycmVuY3kuWkFSXTogQmlsbGluZ0N1cnJlbmN5LlpBUixcbn07XG4iXX0=