UNPKG

@unchainedshop/plugins

Version:

Official plugin collection for the Unchained Engine with payment, delivery, and pricing adapters

47 lines (46 loc) 1.62 kB
const startOf2024 = new Date('2024-01-01T00:00:00.000+0100'); export const SwissTaxCategories = { DEFAULT: { value: 'default', rate: (referenceDate = new Date()) => { if (referenceDate.getTime() < startOf2024.getTime()) { return 0.077; } return 0.081; }, }, REDUCED: { value: 'reduced', rate: (referenceDate = new Date()) => { if (referenceDate.getTime() < startOf2024.getTime()) { return 0.025; } return 0.026; }, }, SPECIAL: { value: 'special', rate: (referenceDate = new Date()) => { if (referenceDate.getTime() < startOf2024.getTime()) { return 0.037; } return 0.038; }, }, }; export const resolveTaxCategoryFromDeliveryProvider = (provider) => { const taxCategoryFromProvider = provider?.configuration ?.find(({ key }) => { if (key === 'swiss-tax-category') return true; return null; }) ?.value?.toUpperCase(); const taxCategory = taxCategoryFromProvider ? SwissTaxCategories[taxCategoryFromProvider] : null; return taxCategory; }; export const resolveTaxCategoryFromProduct = (product) => { const productSpecialTaxTag = product.tags?.find((tag) => tag?.trim().toLowerCase().startsWith('swiss-tax-category:')); const taxCategory = Object.values(SwissTaxCategories).find((t) => `swiss-tax-category:${t.value}` === productSpecialTaxTag?.trim().toLowerCase()); return taxCategory || null; };