@vendasta/store
Version:
Components and data for Store
102 lines • 15.4 kB
JavaScript
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 = {
[]: FrequenciesFrequency.ONCE,
[]: FrequenciesFrequency.DAILY,
[]: FrequenciesFrequency.WEEKLY,
[]: FrequenciesFrequency.OTHER,
[]: FrequenciesFrequency.MONTHLY,
[]: FrequenciesFrequency.YEARLY,
};
const salesOrderCurrencyToMarketplaceCurrency = {
[]: CurrenciesCurrency.AUD,
[]: CurrenciesCurrency.CAD,
[]: CurrenciesCurrency.EUR,
[]: CurrenciesCurrency.GBP,
[]: CurrenciesCurrency.NZD,
[]: CurrenciesCurrency.USD,
[]: CurrenciesCurrency.ZAR,
};
const salesOrderCurrencyToBillingCurrency = {
[]: BillingCurrency.AUD,
[]: BillingCurrency.CAD,
[]: BillingCurrency.EUR,
[]: BillingCurrency.GBP,
[]: BillingCurrency.NZD,
[]: BillingCurrency.USD,
[]: BillingCurrency.ZAR,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291bnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc3RvcmUvc3JjL2xpYi9vcmRlci1mb3JtL29yZGVyLWl0ZW0tbGlzdC9kaXNjb3VudC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsSUFBSSxlQUFlLEVBQUUsU0FBUyxFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBVyxNQUFNLGdDQUFnQyxDQUFDO0FBR25HLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsU0FBaUIsRUFDakIsUUFBa0IsRUFDbEIsU0FBd0IsRUFDeEIsa0JBQThDO0lBRTlDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUNyQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxjQUFjLEdBQVksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNuQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDcEYsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDekQsMkNBQTJDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FDeEUsQ0FBQztJQUNGLE9BQU8sWUFBWSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsS0FBYSxFQUNi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Q25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ25DLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0NBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeSwgUmV2ZW51ZVBlcmlvZCB9IGZyb20gJ0B2ZW5kYXN0YS9zYWxlcy1vcmRlcnMnO1xuaW1wb3J0IHsgQ3VycmVuY3kgYXMgQmlsbGluZ0N1cnJlbmN5LCBGcmVxdWVuY3ksIFByb2R1Y3RQcmljaW5nIH0gZnJvbSAnQHZlbmRhc3RhL2JpbGxpbmcnO1xuaW1wb3J0IHsgQ3VycmVuY2llc0N1cnJlbmN5LCBGcmVxdWVuY2llc0ZyZXF1ZW5jeSwgUHJpY2luZyB9IGZyb20gJ0B2ZW5kYXN0YS9tYXJrZXRwbGFjZS1wYWNrYWdlcyc7XG5pbXBvcnQgeyBVSUxpbmVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmVQcmljZUZvclBhY2thZ2UoXG4gIHBhY2thZ2VJZDogc3RyaW5nLFxuICBjdXJyZW5jeTogQ3VycmVuY3ksXG4gIGZyZXF1ZW5jeTogUmV2ZW51ZVBlcmlvZCxcbiAgc3RvcmVQYWNrYWdlUHJpY2VzOiB7IFtrZXk6IHN0cmluZ106IFByaWNpbmcgfSxcbik6IG51bWJlciB8IG51bGwge1xuICBpZiAoIXBhY2thZ2VJZCB8fCAhc3RvcmVQYWNrYWdlUHJpY2VzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcGFja2FnZVByaWNpbmc6IFByaWNpbmcgPSBzdG9yZVBhY2thZ2VQcmljZXNbcGFja2FnZUlkXTtcbiAgaWYgKCFwYWNrYWdlUHJpY2luZykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghc2FsZXNPcmRlckN1cnJlbmN5RXF1YWxUb01hcmtldHBsYWNlQ3VycmVuY3koY3VycmVuY3ksIHBhY2thZ2VQcmljaW5nLmN1cnJlbmN5KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHBhY2thZ2VQcmljZSA9IHBhY2thZ2VQcmljaW5nLnByaWNlcz8uZmluZCgocHJpY2UpID0+XG4gICAgc2FsZXNPcmRlclBlcmlvZEVxdWFsVG9NYXJrZXRwbGFjZUZyZXF1ZW5jeShmcmVxdWVuY3ksIHByaWNlLmZyZXF1ZW5jeSksXG4gICk7XG4gIHJldHVybiBwYWNrYWdlUHJpY2U/LnByaWNlIHx8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yZVByaWNlRm9yQXBwKFxuICBhcHBJZDogc3RyaW5nLFxuICBjdXJyZW5jeTogQ3VycmVuY3ksXG4gIGZyZXF1ZW5jeTogUmV2ZW51ZVBlcmlvZCxcbiAgc3RvcmVBcHBQcmljZXM6IHsgW2tleTogc3RyaW5nXTogUHJvZHVjdFByaWNpbmcgfSxcbik6IG51bWJlciB8IG51bGwge1xuICBpZiAoIWFwcElkIHx8ICFzdG9yZUFwcFByaWNlcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGFwcFByaWNpbmc6IFByb2R1Y3RQcmljaW5nID0gc3RvcmVBcHBQcmljZXNbYXBwSWRdO1xuICBpZiAoIWFwcFByaWNpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIXNhbGVzT3JkZXJDdXJyZW5jeUVxdWFsVG9CaWxsaW5nQ3VycmVuY3koY3VycmVuY3ksIGFwcFByaWNpbmcuY3VycmVuY3kpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGZyZXF1ZW5jeSAhPT0gYmlsbGluZ0ZyZXF1ZW5jeVRvUmV2ZW51ZVBlcmlvZChhcHBQcmljaW5nLmZyZXF1ZW5jeSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYXBwUHJpY2luZy5wcmljaW5nUnVsZXNbMF0/LnByaWNlIHx8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWxlc09yZGVyUGVyaW9kRXF1YWxUb01hcmtldHBsYWNlRnJlcXVlbmN5KFxuICBwZXJpb2Q6IFJldmVudWVQZXJpb2QsXG4gIGZyZXF1ZW5jeTogRnJlcXVlbmNpZXNGcmVxdWVuY3ksXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgc2FsZXNPcmRlclBlcmlvZCA9IHBlcmlvZCB8fCBSZXZlbnVlUGVyaW9kLk9ORVRJTUU7XG4gIGNvbnN0IG1hcmtldHBsYWNlRnJlcXVlbmN5ID0gZnJlcXVlbmN5IHx8IEZyZXF1ZW5jaWVzRnJlcXVlbmN5Lk1PTlRITFk7XG4gIHJldHVybiBzYWxlc09yZGVyUGVyaW9kVG9NYXJrZXRwbGFjZUZyZXF1ZW5jeVtzYWxlc09yZGVyUGVyaW9kXSA9PT0gbWFya2V0cGxhY2VGcmVxdWVuY3k7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWxlc09yZGVyQ3VycmVuY3lFcXVhbFRvTWFya2V0cGxhY2VDdXJyZW5jeShcbiAgc2FsZXNPcmRlckN1cnJlbmN5OiBDdXJyZW5jeSxcbiAgbWFya2V0cGxhY2VDdXJyZW5jeTogQ3VycmVuY2llc0N1cnJlbmN5LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNvQ3VycmVuY3kgPSBzYWxlc09yZGVyQ3VycmVuY3kgfHwgQ3VycmVuY3kuVVNEO1xuICBjb25zdCBtcEN1cnJlbmN5ID0gbWFya2V0cGxhY2VDdXJyZW5jeSB8fCBDdXJyZW5jaWVzQ3VycmVuY3kuVVNEO1xuICByZXR1cm4gc2FsZXNPcmRlckN1cnJlbmN5VG9NYXJrZXRwbGFjZUN1cnJlbmN5W3NvQ3VycmVuY3ldID09PSBtcEN1cnJlbmN5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FsZXNPcmRlckN1cnJlbmN5RXF1YWxUb0JpbGxpbmdDdXJyZW5jeShcbiAgc2FsZXNPcmRlckN1cnJlbmN5OiBDdXJyZW5jeSxcbiAgYmlsbGluZ0N1cnJlbmN5OiBCaWxsaW5nQ3VycmVuY3ksXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgc29DdXJyZW5jeSA9IHNhbGVzT3JkZXJDdXJyZW5jeSB8fCBDdXJyZW5jeS5VU0Q7XG4gIGNvbnN0IGJDdXJyZW5jeSA9IGJpbGxpbmdDdXJyZW5jeSB8fCBCaWxsaW5nQ3VycmVuY3kuVVNEO1xuICByZXR1cm4gc2FsZXNPcmRlckN1cnJlbmN5VG9CaWxsaW5nQ3VycmVuY3lbc29DdXJyZW5jeV0gPT09IGJDdXJyZW5jeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbGxpbmdGcmVxdWVuY3lUb1JldmVudWVQZXJpb2QoZnJlcXVlbmN5OiBGcmVxdWVuY3kpOiBSZXZlbnVlUGVyaW9kIHwgbnVsbCB7XG4gIHN3aXRjaCAoZnJlcXVlbmN5KSB7XG4gICAgY2FzZSBGcmVxdWVuY3kuTW9udGhseTpcbiAgICAgIHJldHVybiBSZXZlbnVlUGVyaW9kLk1PTlRITFk7XG4gICAgY2FzZSBGcmVxdWVuY3kuWWVhcmx5OlxuICAgICAgcmV0dXJuIFJldmVudWVQZXJpb2QuWUVBUkxZO1xuICAgIGNhc2UgRnJlcXVlbmN5Lk9uZVRpbWU6XG4gICAgICByZXR1cm4gUmV2ZW51ZVBlcmlvZC5PTkVUSU1FO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVuY3lGcm9tTGluZUl0ZW0obGluZUl0ZW06IFVJTGluZUl0ZW0pOiBDdXJyZW5jeSB7XG4gIGlmICghIWxpbmVJdGVtLmxpbmVJdGVtLmN1cnJlbmN5KSB7XG4gICAgcmV0dXJuIGxpbmVJdGVtLmxpbmVJdGVtLmN1cnJlbmN5O1xuICB9XG4gIHJldHVybiBjdXJyZW5jeUNvZGVUb0N1cnJlbmN5W2xpbmVJdGVtLmxpbmVJdGVtLmN1cnJlbmN5Q29kZV0gfHwgQ3VycmVuY3kuVVNEO1xufVxuXG5jb25zdCBjdXJyZW5jeUNvZGVUb0N1cnJlbmN5ID0ge1xuICBVU0Q6IEN1cnJlbmN5LlVTRCxcbiAgQ0FEOiBDdXJyZW5jeS5DQUQsXG4gIEVVUjogQ3VycmVuY3kuRVVSLFxuICBBVUQ6IEN1cnJlbmN5LkFVRCxcbiAgR0JQOiBDdXJyZW5jeS5HQlAsXG4gIE5aRDogQ3VycmVuY3kuTlpELFxuICBaQVI6IEN1cnJlbmN5LlpBUixcbn07XG5cbmNvbnN0IHNhbGVzT3JkZXJQZXJpb2RUb01hcmtldHBsYWNlRnJlcXVlbmN5ID0ge1xuICBbUmV2ZW51ZVBlcmlvZC5PTkVUSU1FXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuT05DRSxcbiAgW1JldmVudWVQZXJpb2QuREFJTFldOiBGcmVxdWVuY2llc0ZyZXF1ZW5jeS5EQUlMWSxcbiAgW1JldmVudWVQZXJpb2QuV0VFS0xZXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuV0VFS0xZLFxuICBbUmV2ZW51ZVBlcmlvZC5CSVdFRUtMWV06IEZyZXF1ZW5jaWVzRnJlcXVlbmN5Lk9USEVSLFxuICBbUmV2ZW51ZVBlcmlvZC5NT05USExZXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuTU9OVEhMWSxcbiAgW1JldmVudWVQZXJpb2QuWUVBUkxZXTogRnJlcXVlbmNpZXNGcmVxdWVuY3kuWUVBUkxZLFxufTtcblxuY29uc3Qgc2FsZXNPcmRlckN1cnJlbmN5VG9NYXJrZXRwbGFjZUN1cnJlbmN5ID0ge1xuICBbQ3VycmVuY3kuQVVEXTogQ3VycmVuY2llc0N1cnJlbmN5LkFVRCxcbiAgW0N1cnJlbmN5LkNBRF06IEN1cnJlbmNpZXNDdXJyZW5jeS5DQUQsXG4gIFtDdXJyZW5jeS5FVVJdOiBDdXJyZW5jaWVzQ3VycmVuY3kuRVVSLFxuICBbQ3VycmVuY3kuR0JQXTogQ3VycmVuY2llc0N1cnJlbmN5LkdCUCxcbiAgW0N1cnJlbmN5Lk5aRF06IEN1cnJlbmNpZXNDdXJyZW5jeS5OWkQsXG4gIFtDdXJyZW5jeS5VU0RdOiBDdXJyZW5jaWVzQ3VycmVuY3kuVVNELFxuICBbQ3VycmVuY3kuWkFSXTogQ3VycmVuY2llc0N1cnJlbmN5LlpBUixcbn07XG5cbmNvbnN0IHNhbGVzT3JkZXJDdXJyZW5jeVRvQmlsbGluZ0N1cnJlbmN5ID0ge1xuICBbQ3VycmVuY3kuQVVEXTogQmlsbGluZ0N1cnJlbmN5LkFVRCxcbiAgW0N1cnJlbmN5LkNBRF06IEJpbGxpbmdDdXJyZW5jeS5DQUQsXG4gIFtDdXJyZW5jeS5FVVJdOiBCaWxsaW5nQ3VycmVuY3kuRVVSLFxuICBbQ3VycmVuY3kuR0JQXTogQmlsbGluZ0N1cnJlbmN5LkdCUCxcbiAgW0N1cnJlbmN5Lk5aRF06IEJpbGxpbmdDdXJyZW5jeS5OWkQsXG4gIFtDdXJyZW5jeS5VU0RdOiBCaWxsaW5nQ3VycmVuY3kuVVNELFxuICBbQ3VycmVuY3kuWkFSXTogQmlsbGluZ0N1cnJlbmN5LlpBUixcbn07XG4iXX0=