@unchainedshop/plugins 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/files/gridfs/gridfs-adapter.ts +1 -1
- package/src/files/gridfs/gridfs-webhook.ts +1 -1
- package/src/files/minio/minio-adapter.ts +1 -2
- package/lib/delivery/pick-mup.d.ts +0 -1
- package/lib/delivery/pick-mup.js +0 -98
- package/lib/delivery/pick-mup.js.map +0 -1
- package/lib/delivery/post.d.ts +0 -1
- package/lib/delivery/post.js +0 -23
- package/lib/delivery/post.js.map +0 -1
- package/lib/delivery/send-message.d.ts +0 -1
- package/lib/delivery/send-message.js +0 -41
- package/lib/delivery/send-message.js.map +0 -1
- package/lib/delivery/stores.d.ts +0 -1
- package/lib/delivery/stores.js +0 -39
- package/lib/delivery/stores.js.map +0 -1
- package/lib/enrollments/licensed.d.ts +0 -1
- package/lib/enrollments/licensed.js +0 -40
- package/lib/enrollments/licensed.js.map +0 -1
- package/lib/events/node-event-emitter.d.ts +0 -1
- package/lib/events/node-event-emitter.js +0 -16
- package/lib/events/node-event-emitter.js.map +0 -1
- package/lib/events/redis.d.ts +0 -1
- package/lib/events/redis.js +0 -24
- package/lib/events/redis.js.map +0 -1
- package/lib/files/gridfs/gridfs-adapter.d.ts +0 -2
- package/lib/files/gridfs/gridfs-adapter.js +0 -106
- package/lib/files/gridfs/gridfs-adapter.js.map +0 -1
- package/lib/files/gridfs/gridfs-webhook.d.ts +0 -2
- package/lib/files/gridfs/gridfs-webhook.js +0 -55
- package/lib/files/gridfs/gridfs-webhook.js.map +0 -1
- package/lib/files/gridfs/index.d.ts +0 -8
- package/lib/files/gridfs/index.js +0 -21
- package/lib/files/gridfs/index.js.map +0 -1
- package/lib/files/gridfs/promisePipe.d.ts +0 -2
- package/lib/files/gridfs/promisePipe.js +0 -21
- package/lib/files/gridfs/promisePipe.js.map +0 -1
- package/lib/files/gridfs/sign.d.ts +0 -2
- package/lib/files/gridfs/sign.js +0 -12
- package/lib/files/gridfs/sign.js.map +0 -1
- package/lib/files/minio/minio-adapter.d.ts +0 -4
- package/lib/files/minio/minio-adapter.js +0 -166
- package/lib/files/minio/minio-adapter.js.map +0 -1
- package/lib/files/minio/minio-webhook.d.ts +0 -2
- package/lib/files/minio/minio-webhook.js +0 -47
- package/lib/files/minio/minio-webhook.js.map +0 -1
- package/lib/filters/local-search.d.ts +0 -3
- package/lib/filters/local-search.js +0 -84
- package/lib/filters/local-search.js.map +0 -1
- package/lib/filters/strict-equal.d.ts +0 -1
- package/lib/filters/strict-equal.js +0 -25
- package/lib/filters/strict-equal.js.map +0 -1
- package/lib/payment/apple-iap/adapter.d.ts +0 -2
- package/lib/payment/apple-iap/adapter.js +0 -286
- package/lib/payment/apple-iap/adapter.js.map +0 -1
- package/lib/payment/apple-iap/db/AppleTransactionsCollection.d.ts +0 -7
- package/lib/payment/apple-iap/db/AppleTransactionsCollection.js +0 -5
- package/lib/payment/apple-iap/db/AppleTransactionsCollection.js.map +0 -1
- package/lib/payment/apple-iap/index.d.ts +0 -3
- package/lib/payment/apple-iap/index.js +0 -4
- package/lib/payment/apple-iap/index.js.map +0 -1
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +0 -9
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js +0 -18
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js.map +0 -1
- package/lib/payment/bity/adapter.d.ts +0 -2
- package/lib/payment/bity/adapter.js +0 -318
- package/lib/payment/bity/adapter.js.map +0 -1
- package/lib/payment/bity/db/BityCredentialsCollection.d.ts +0 -11
- package/lib/payment/bity/db/BityCredentialsCollection.js +0 -5
- package/lib/payment/bity/db/BityCredentialsCollection.js.map +0 -1
- package/lib/payment/bity/index.d.ts +0 -3
- package/lib/payment/bity/index.js +0 -4
- package/lib/payment/bity/index.js.map +0 -1
- package/lib/payment/bity/module/configureBityModule.d.ts +0 -11
- package/lib/payment/bity/module/configureBityModule.js +0 -33
- package/lib/payment/bity/module/configureBityModule.js.map +0 -1
- package/lib/payment/braintree.d.ts +0 -1
- package/lib/payment/braintree.js +0 -129
- package/lib/payment/braintree.js.map +0 -1
- package/lib/payment/cryptopay.d.ts +0 -2
- package/lib/payment/cryptopay.js +0 -161
- package/lib/payment/cryptopay.js.map +0 -1
- package/lib/payment/datatrans-v2/api/authorize.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/authorize.js +0 -12
- package/lib/payment/datatrans-v2/api/authorize.js.map +0 -1
- package/lib/payment/datatrans-v2/api/authorizeAuthenticated.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/authorizeAuthenticated.js +0 -11
- package/lib/payment/datatrans-v2/api/authorizeAuthenticated.js.map +0 -1
- package/lib/payment/datatrans-v2/api/cancel.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/cancel.js +0 -10
- package/lib/payment/datatrans-v2/api/cancel.js.map +0 -1
- package/lib/payment/datatrans-v2/api/index.d.ts +0 -19
- package/lib/payment/datatrans-v2/api/index.js +0 -24
- package/lib/payment/datatrans-v2/api/index.js.map +0 -1
- package/lib/payment/datatrans-v2/api/init.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/init.js +0 -31
- package/lib/payment/datatrans-v2/api/init.js.map +0 -1
- package/lib/payment/datatrans-v2/api/makeFetcher.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/makeFetcher.js +0 -41
- package/lib/payment/datatrans-v2/api/makeFetcher.js.map +0 -1
- package/lib/payment/datatrans-v2/api/secureFields.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/secureFields.js +0 -14
- package/lib/payment/datatrans-v2/api/secureFields.js.map +0 -1
- package/lib/payment/datatrans-v2/api/settle.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/settle.js +0 -10
- package/lib/payment/datatrans-v2/api/settle.js.map +0 -1
- package/lib/payment/datatrans-v2/api/status.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/status.js +0 -7
- package/lib/payment/datatrans-v2/api/status.js.map +0 -1
- package/lib/payment/datatrans-v2/api/validate.d.ts +0 -2
- package/lib/payment/datatrans-v2/api/validate.js +0 -10
- package/lib/payment/datatrans-v2/api/validate.js.map +0 -1
- package/lib/payment/datatrans-v2/generateSignature.d.ts +0 -10
- package/lib/payment/datatrans-v2/generateSignature.js +0 -19
- package/lib/payment/datatrans-v2/generateSignature.js.map +0 -1
- package/lib/payment/datatrans-v2/getPaths.d.ts +0 -9
- package/lib/payment/datatrans-v2/getPaths.js +0 -9
- package/lib/payment/datatrans-v2/getPaths.js.map +0 -1
- package/lib/payment/datatrans-v2/index.d.ts +0 -2
- package/lib/payment/datatrans-v2/index.js +0 -385
- package/lib/payment/datatrans-v2/index.js.map +0 -1
- package/lib/payment/datatrans-v2/middleware.d.ts +0 -2
- package/lib/payment/datatrans-v2/middleware.js +0 -113
- package/lib/payment/datatrans-v2/middleware.js.map +0 -1
- package/lib/payment/datatrans-v2/parseRegistrationData.d.ts +0 -11
- package/lib/payment/datatrans-v2/parseRegistrationData.js +0 -26
- package/lib/payment/datatrans-v2/parseRegistrationData.js.map +0 -1
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.d.ts +0 -7
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.js +0 -10
- package/lib/payment/datatrans-v2/roundedAmountFromOrder.js.map +0 -1
- package/lib/payment/datatrans-v2/splitProperties.d.ts +0 -8
- package/lib/payment/datatrans-v2/splitProperties.js +0 -58
- package/lib/payment/datatrans-v2/splitProperties.js.map +0 -1
- package/lib/payment/invoice-prepaid.d.ts +0 -1
- package/lib/payment/invoice-prepaid.js +0 -30
- package/lib/payment/invoice-prepaid.js.map +0 -1
- package/lib/payment/invoice.d.ts +0 -1
- package/lib/payment/invoice.js +0 -27
- package/lib/payment/invoice.js.map +0 -1
- package/lib/payment/paypal-checkout.d.ts +0 -1
- package/lib/payment/paypal-checkout.js +0 -82
- package/lib/payment/paypal-checkout.js.map +0 -1
- package/lib/payment/postfinance-checkout/api.d.ts +0 -11
- package/lib/payment/postfinance-checkout/api.js +0 -109
- package/lib/payment/postfinance-checkout/api.js.map +0 -1
- package/lib/payment/postfinance-checkout/index.d.ts +0 -2
- package/lib/payment/postfinance-checkout/index.js +0 -187
- package/lib/payment/postfinance-checkout/index.js.map +0 -1
- package/lib/payment/postfinance-checkout/middleware.d.ts +0 -2
- package/lib/payment/postfinance-checkout/middleware.js +0 -44
- package/lib/payment/postfinance-checkout/middleware.js.map +0 -1
- package/lib/payment/postfinance-checkout/types.d.ts +0 -23
- package/lib/payment/postfinance-checkout/types.js +0 -12
- package/lib/payment/postfinance-checkout/types.js.map +0 -1
- package/lib/payment/postfinance-checkout/utils.d.ts +0 -4
- package/lib/payment/postfinance-checkout/utils.js +0 -20
- package/lib/payment/postfinance-checkout/utils.js.map +0 -1
- package/lib/payment/stripe.d.ts +0 -2
- package/lib/payment/stripe.js +0 -217
- package/lib/payment/stripe.js.map +0 -1
- package/lib/payment/worldline-saferpay/index.d.ts +0 -1
- package/lib/payment/worldline-saferpay/index.js +0 -112
- package/lib/payment/worldline-saferpay/index.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.d.ts +0 -14
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.js +0 -29
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.d.ts +0 -9
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js +0 -28
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.d.ts +0 -4
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.d.ts +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.d.ts +0 -73
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.d.ts +0 -53
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.d.ts +0 -13
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.d.ts +0 -9
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.d.ts +0 -5
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.js.map +0 -1
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.d.ts +0 -13
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.js +0 -2
- package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.js.map +0 -1
- package/lib/pricing/delivery-swiss-tax.d.ts +0 -15
- package/lib/pricing/delivery-swiss-tax.js +0 -98
- package/lib/pricing/delivery-swiss-tax.js.map +0 -1
- package/lib/pricing/discount-100-off.d.ts +0 -1
- package/lib/pricing/discount-100-off.js +0 -34
- package/lib/pricing/discount-100-off.js.map +0 -1
- package/lib/pricing/discount-half-price-manual.d.ts +0 -1
- package/lib/pricing/discount-half-price-manual.js +0 -34
- package/lib/pricing/discount-half-price-manual.js.map +0 -1
- package/lib/pricing/discount-half-price.d.ts +0 -1
- package/lib/pricing/discount-half-price.js +0 -37
- package/lib/pricing/discount-half-price.js.map +0 -1
- package/lib/pricing/free-delivery.d.ts +0 -2
- package/lib/pricing/free-delivery.js +0 -26
- package/lib/pricing/free-delivery.js.map +0 -1
- package/lib/pricing/free-payment.d.ts +0 -2
- package/lib/pricing/free-payment.js +0 -26
- package/lib/pricing/free-payment.js.map +0 -1
- package/lib/pricing/order-delivery.d.ts +0 -1
- package/lib/pricing/order-delivery.js +0 -33
- package/lib/pricing/order-delivery.js.map +0 -1
- package/lib/pricing/order-discount.d.ts +0 -1
- package/lib/pricing/order-discount.js +0 -110
- package/lib/pricing/order-discount.js.map +0 -1
- package/lib/pricing/order-items-discount.d.ts +0 -1
- package/lib/pricing/order-items-discount.js +0 -88
- package/lib/pricing/order-items-discount.js.map +0 -1
- package/lib/pricing/order-items.d.ts +0 -1
- package/lib/pricing/order-items.js +0 -44
- package/lib/pricing/order-items.js.map +0 -1
- package/lib/pricing/order-payment.d.ts +0 -1
- package/lib/pricing/order-payment.js +0 -33
- package/lib/pricing/order-payment.js.map +0 -1
- package/lib/pricing/product-catalog-price.d.ts +0 -1
- package/lib/pricing/product-catalog-price.js +0 -37
- package/lib/pricing/product-catalog-price.js.map +0 -1
- package/lib/pricing/product-discount.d.ts +0 -1
- package/lib/pricing/product-discount.js +0 -55
- package/lib/pricing/product-discount.js.map +0 -1
- package/lib/pricing/product-price-ECB-interbank-exchange.d.ts +0 -1
- package/lib/pricing/product-price-ECB-interbank-exchange.js +0 -90
- package/lib/pricing/product-price-ECB-interbank-exchange.js.map +0 -1
- package/lib/pricing/product-price-coinbase-exchange.d.ts +0 -1
- package/lib/pricing/product-price-coinbase-exchange.js +0 -60
- package/lib/pricing/product-price-coinbase-exchange.js.map +0 -1
- package/lib/pricing/product-price-cryptopay.d.ts +0 -2
- package/lib/pricing/product-price-cryptopay.js +0 -23
- package/lib/pricing/product-price-cryptopay.js.map +0 -1
- package/lib/pricing/product-price-rateconversion.d.ts +0 -1
- package/lib/pricing/product-price-rateconversion.js +0 -51
- package/lib/pricing/product-price-rateconversion.js.map +0 -1
- package/lib/pricing/product-price-round.d.ts +0 -11
- package/lib/pricing/product-price-round.js +0 -54
- package/lib/pricing/product-price-round.js.map +0 -1
- package/lib/pricing/product-swiss-tax.d.ts +0 -13
- package/lib/pricing/product-swiss-tax.js +0 -102
- package/lib/pricing/product-swiss-tax.js.map +0 -1
- package/lib/pricing/utils/cache.d.ts +0 -9
- package/lib/pricing/utils/cache.js +0 -28
- package/lib/pricing/utils/cache.js.map +0 -1
- package/lib/quotations/manual.d.ts +0 -1
- package/lib/quotations/manual.js +0 -21
- package/lib/quotations/manual.js.map +0 -1
- package/lib/warehousing/google-sheets.d.ts +0 -1
- package/lib/warehousing/google-sheets.js +0 -153
- package/lib/warehousing/google-sheets.js.map +0 -1
- package/lib/warehousing/store.d.ts +0 -1
- package/lib/warehousing/store.js +0 -33
- package/lib/warehousing/store.js.map +0 -1
- package/lib/worker/BulkImportWorker.d.ts +0 -2
- package/lib/worker/BulkImportWorker.js +0 -91
- package/lib/worker/BulkImportWorker.js.map +0 -1
- package/lib/worker/GenerateOrderWorker.d.ts +0 -1
- package/lib/worker/GenerateOrderWorker.js +0 -110
- package/lib/worker/GenerateOrderWorker.js.map +0 -1
- package/lib/worker/MessageWorker.d.ts +0 -10
- package/lib/worker/MessageWorker.js +0 -45
- package/lib/worker/MessageWorker.js.map +0 -1
- package/lib/worker/ZombieKillerWorker.d.ts +0 -7
- package/lib/worker/ZombieKillerWorker.js +0 -88
- package/lib/worker/ZombieKillerWorker.js.map +0 -1
- package/lib/worker/email.d.ts +0 -1
- package/lib/worker/email.js +0 -97
- package/lib/worker/email.js.map +0 -1
- package/lib/worker/external.d.ts +0 -2
- package/lib/worker/external.js +0 -13
- package/lib/worker/external.js.map +0 -1
- package/lib/worker/heartbeat.d.ts +0 -1
- package/lib/worker/heartbeat.js +0 -32
- package/lib/worker/heartbeat.js.map +0 -1
- package/lib/worker/http-request.d.ts +0 -8
- package/lib/worker/http-request.js +0 -61
- package/lib/worker/http-request.js.map +0 -1
- package/lib/worker/sms.d.ts +0 -1
- package/lib/worker/sms.js +0 -69
- package/lib/worker/sms.js.map +0 -1
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { OrderPricingRowCategory } from '@unchainedshop/types/orders.pricing';
|
|
2
|
-
import { OrderPricingDirector, OrderPricingAdapter } from '@unchainedshop/core-orders';
|
|
3
|
-
const resolveRatioAndTaxDivisorForPricingSheet = (pricing, total) => {
|
|
4
|
-
if (total === 0 || !pricing) {
|
|
5
|
-
return {
|
|
6
|
-
ratio: 1,
|
|
7
|
-
taxDivisor: 1,
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
const tax = pricing.taxSum();
|
|
11
|
-
const gross = pricing.gross();
|
|
12
|
-
return {
|
|
13
|
-
ratio: gross / total,
|
|
14
|
-
taxDivisor: gross / (gross - tax),
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
const resolveAmountAndTax = ({ ratio, taxDivisor }, amount) => {
|
|
18
|
-
const shareAmount = Number.isFinite(ratio) ? amount * ratio : 0;
|
|
19
|
-
const shareTaxAmount = Number.isFinite(taxDivisor) ? shareAmount - shareAmount / taxDivisor : 0;
|
|
20
|
-
return [shareAmount, shareTaxAmount];
|
|
21
|
-
};
|
|
22
|
-
const applyDiscountToMultipleShares = (shares, amount) => {
|
|
23
|
-
return shares.reduce(([currentDiscountAmount, currentTaxAmount], share) => {
|
|
24
|
-
const [shareAmount, shareTaxAmount] = resolveAmountAndTax(share, amount);
|
|
25
|
-
return [currentDiscountAmount + shareAmount, currentTaxAmount + shareTaxAmount];
|
|
26
|
-
}, [0, 0]);
|
|
27
|
-
};
|
|
28
|
-
const calculateAmountToSplit = (configuration, amount) => {
|
|
29
|
-
const deductionAmount = configuration.rate
|
|
30
|
-
? amount * configuration.rate
|
|
31
|
-
: Math.min(configuration.fixedRate, amount);
|
|
32
|
-
return Math.max(0, deductionAmount - (configuration.alreadyDeducted || 0));
|
|
33
|
-
};
|
|
34
|
-
const OrderItemsDiscount = {
|
|
35
|
-
...OrderPricingAdapter,
|
|
36
|
-
key: 'shop.unchained.pricing.order-items-discount',
|
|
37
|
-
version: '1.0',
|
|
38
|
-
label: 'Apply Discounts on Total Value Of Goods',
|
|
39
|
-
orderIndex: 89,
|
|
40
|
-
isActivatedFor: () => {
|
|
41
|
-
return true;
|
|
42
|
-
},
|
|
43
|
-
actions: (params) => {
|
|
44
|
-
const pricingAdapter = OrderPricingAdapter.actions(params);
|
|
45
|
-
const { order, orderPositions, modules } = params.context;
|
|
46
|
-
return {
|
|
47
|
-
...pricingAdapter,
|
|
48
|
-
calculate: async () => {
|
|
49
|
-
// discounts need to provide a *fixedRate*
|
|
50
|
-
// if you want to add percentual discounts,
|
|
51
|
-
// add it to the order item calculation
|
|
52
|
-
const totalAmountOfItems = params.calculationSheet.sum({
|
|
53
|
-
category: OrderPricingRowCategory.Items,
|
|
54
|
-
});
|
|
55
|
-
const itemShares = orderPositions.map((orderPosition) => resolveRatioAndTaxDivisorForPricingSheet(modules.orders.positions.pricingSheet(orderPosition, order.currency, params.context), totalAmountOfItems));
|
|
56
|
-
let alreadyDeducted = 0;
|
|
57
|
-
params.discounts.forEach(({ configuration, discountId }) => {
|
|
58
|
-
// First, we deduce the discount from the items
|
|
59
|
-
const [itemsDiscountAmount, itemsTaxAmount] = applyDiscountToMultipleShares(itemShares, calculateAmountToSplit({ ...configuration, alreadyDeducted }, totalAmountOfItems));
|
|
60
|
-
alreadyDeducted = +itemsDiscountAmount;
|
|
61
|
-
const discountAmount = itemsDiscountAmount;
|
|
62
|
-
const taxAmount = itemsTaxAmount;
|
|
63
|
-
if (discountAmount) {
|
|
64
|
-
pricingAdapter.resultSheet().addDiscount({
|
|
65
|
-
amount: discountAmount * -1,
|
|
66
|
-
discountId,
|
|
67
|
-
meta: {
|
|
68
|
-
adapter: OrderItemsDiscount.key,
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
if (taxAmount !== 0) {
|
|
72
|
-
pricingAdapter.resultSheet().addTax({
|
|
73
|
-
amount: taxAmount * -1,
|
|
74
|
-
meta: {
|
|
75
|
-
discountId,
|
|
76
|
-
adapter: OrderItemsDiscount.key,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
return pricingAdapter.calculate();
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
OrderPricingDirector.registerAdapter(OrderItemsDiscount);
|
|
88
|
-
//# sourceMappingURL=order-items-discount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"order-items-discount.js","sourceRoot":"","sources":["../../src/pricing/order-items-discount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { OrderPricingDirector, OrderPricingAdapter } from '@unchainedshop/core-orders';
|
|
2
|
-
const OrderItems = {
|
|
3
|
-
...OrderPricingAdapter,
|
|
4
|
-
key: 'shop.unchained.pricing.order-items',
|
|
5
|
-
version: '1.0',
|
|
6
|
-
label: 'Add Total Value Of Goods to Order',
|
|
7
|
-
orderIndex: 0,
|
|
8
|
-
isActivatedFor: () => {
|
|
9
|
-
return true;
|
|
10
|
-
},
|
|
11
|
-
actions: (params) => {
|
|
12
|
-
const pricingAdapter = OrderPricingAdapter.actions(params);
|
|
13
|
-
const { order, orderPositions, modules } = params.context;
|
|
14
|
-
return {
|
|
15
|
-
...pricingAdapter,
|
|
16
|
-
calculate: async () => {
|
|
17
|
-
// just sum up all products items prices, taxes & fees
|
|
18
|
-
const totalAndTaxesOfAllItems = orderPositions.reduce((current, orderPosition) => {
|
|
19
|
-
const pricing = modules.orders.positions.pricingSheet(orderPosition, order.currency, params.context);
|
|
20
|
-
const tax = pricing.taxSum();
|
|
21
|
-
const items = pricing.gross();
|
|
22
|
-
return {
|
|
23
|
-
taxes: current.taxes + tax,
|
|
24
|
-
items: current.items + items,
|
|
25
|
-
};
|
|
26
|
-
}, {
|
|
27
|
-
taxes: 0,
|
|
28
|
-
items: 0,
|
|
29
|
-
});
|
|
30
|
-
pricingAdapter.resultSheet().addItems({
|
|
31
|
-
amount: totalAndTaxesOfAllItems.items,
|
|
32
|
-
});
|
|
33
|
-
if (totalAndTaxesOfAllItems.taxes !== 0) {
|
|
34
|
-
pricingAdapter.resultSheet().addTax({
|
|
35
|
-
amount: totalAndTaxesOfAllItems.taxes,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
return pricingAdapter.calculate();
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
OrderPricingDirector.registerAdapter(OrderItems);
|
|
44
|
-
//# sourceMappingURL=order-items.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"order-items.js","sourceRoot":"","sources":["../../src/pricing/order-items.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEvF,MAAM,UAAU,GAAyB;IACvC,GAAG,mBAAmB;IAEtB,GAAG,EAAE,oCAAoC;IACzC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,mCAAmC;IAC1C,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAE1D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,sDAAsD;gBACtD,MAAM,uBAAuB,GAAG,cAAc,CAAC,MAAM,CACnD,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE;oBACzB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CACnD,aAAa,EACb,KAAK,CAAC,QAAQ,EACd,MAAM,CAAC,OAAO,CACf,CAAC;oBACF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC9B,OAAO;wBACL,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG;wBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,KAAK;qBAC7B,CAAC;gBACJ,CAAC,EACD;oBACE,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;iBACT,CACF,CAAC;gBAEF,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;oBACpC,MAAM,EAAE,uBAAuB,CAAC,KAAK;iBACtC,CAAC,CAAC;gBAEH,IAAI,uBAAuB,CAAC,KAAK,KAAK,CAAC,EAAE;oBACvC,cAAc,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;wBAClC,MAAM,EAAE,uBAAuB,CAAC,KAAK;qBACtC,CAAC,CAAC;iBACJ;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,oBAAoB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { OrderPricingDirector, OrderPricingAdapter } from '@unchainedshop/core-orders';
|
|
2
|
-
const OrderPayment = {
|
|
3
|
-
...OrderPricingAdapter,
|
|
4
|
-
key: 'shop.unchained.pricing.order-payment',
|
|
5
|
-
version: '1.0',
|
|
6
|
-
label: 'Add Payment Fees to Order',
|
|
7
|
-
orderIndex: 20,
|
|
8
|
-
isActivatedFor: () => {
|
|
9
|
-
return true;
|
|
10
|
-
},
|
|
11
|
-
actions: (params) => {
|
|
12
|
-
const pricingAdapter = OrderPricingAdapter.actions(params);
|
|
13
|
-
const { order, orderPayment, modules } = params.context;
|
|
14
|
-
return {
|
|
15
|
-
...pricingAdapter,
|
|
16
|
-
calculate: async () => {
|
|
17
|
-
// just add tax + net price to order pricing
|
|
18
|
-
if (!orderPayment)
|
|
19
|
-
return null;
|
|
20
|
-
const pricing = modules.orders.payments.pricingSheet(orderPayment, order.currency, params.context);
|
|
21
|
-
const tax = pricing.taxSum();
|
|
22
|
-
const paymentFees = pricing.gross();
|
|
23
|
-
pricingAdapter.resultSheet().addPayment({ amount: paymentFees });
|
|
24
|
-
if (tax !== 0) {
|
|
25
|
-
pricingAdapter.resultSheet().addTax({ amount: tax });
|
|
26
|
-
}
|
|
27
|
-
return pricingAdapter.calculate();
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
OrderPricingDirector.registerAdapter(OrderPayment);
|
|
33
|
-
//# sourceMappingURL=order-payment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"order-payment.js","sourceRoot":"","sources":["../../src/pricing/order-payment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEvF,MAAM,YAAY,GAAyB;IACzC,GAAG,mBAAmB;IAEtB,GAAG,EAAE,sCAAsC;IAC3C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,2BAA2B;IAClC,UAAU,EAAE,EAAE;IAEd,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAExD,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,4CAA4C;gBAC5C,IAAI,CAAC,YAAY;oBAAE,OAAO,IAAI,CAAC;gBAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAClD,YAAY,EACZ,KAAK,CAAC,QAAQ,EACd,MAAM,CAAC,OAAO,CACf,CAAC;gBACF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEpC,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACjE,IAAI,GAAG,KAAK,CAAC,EAAE;oBACb,cAAc,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;iBACtD;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,oBAAoB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
|
|
2
|
-
const ProductPrice = {
|
|
3
|
-
...ProductPricingAdapter,
|
|
4
|
-
key: 'shop.unchained.pricing.product-price',
|
|
5
|
-
version: '1.0',
|
|
6
|
-
label: 'Add Gross Price to Product',
|
|
7
|
-
orderIndex: 0,
|
|
8
|
-
isActivatedFor: () => {
|
|
9
|
-
return true;
|
|
10
|
-
},
|
|
11
|
-
actions: (params) => {
|
|
12
|
-
const pricingAdapter = ProductPricingAdapter.actions(params);
|
|
13
|
-
return {
|
|
14
|
-
...pricingAdapter,
|
|
15
|
-
calculate: async () => {
|
|
16
|
-
const { product, country, currency: forcedCurrency, quantity, modules, services, } = params.context;
|
|
17
|
-
const currency = forcedCurrency ||
|
|
18
|
-
(await services.countries.resolveDefaultCurrencyCode({
|
|
19
|
-
isoCode: country,
|
|
20
|
-
}, params.context));
|
|
21
|
-
const price = await modules.products.prices.price(product, { country, currency, quantity });
|
|
22
|
-
if (price) {
|
|
23
|
-
const itemTotal = price.amount * quantity;
|
|
24
|
-
pricingAdapter.resultSheet().addItem({
|
|
25
|
-
amount: itemTotal,
|
|
26
|
-
isTaxable: price.isTaxable,
|
|
27
|
-
isNetPrice: price.isNetPrice,
|
|
28
|
-
meta: { adapter: ProductPrice.key },
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
return pricingAdapter.calculate();
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
ProductPricingDirector.registerAdapter(ProductPrice);
|
|
37
|
-
//# sourceMappingURL=product-catalog-price.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-catalog-price.js","sourceRoot":"","sources":["../../src/pricing/product-catalog-price.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,MAAM,YAAY,GAA2B;IAC3C,GAAG,qBAAqB;IAExB,GAAG,EAAE,sCAAsC;IAC3C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,4BAA4B;IACnC,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,EACJ,OAAO,EACP,OAAO,EACP,QAAQ,EAAE,cAAc,EACxB,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,GAAG,MAAM,CAAC,OAAO,CAAC;gBACnB,MAAM,QAAQ,GACZ,cAAc;oBACd,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CAClD;wBACE,OAAO,EAAE,OAAO;qBACjB,EACD,MAAM,CAAC,OAAO,CACf,CAAC,CAAC;gBACL,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5F,IAAI,KAAK,EAAE;oBACT,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;oBAC1C,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;wBACnC,MAAM,EAAE,SAAS;wBACjB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE;qBACpC,CAAC,CAAC;iBACJ;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ProductPricingRowCategory, } from '@unchainedshop/types/products.pricing';
|
|
2
|
-
import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
|
|
3
|
-
const applyRate = (configuration, amount) => {
|
|
4
|
-
const { rate, fixedRate } = configuration;
|
|
5
|
-
return rate ? amount * rate : Math.min(fixedRate, amount);
|
|
6
|
-
};
|
|
7
|
-
const ProductDiscount = {
|
|
8
|
-
...ProductPricingAdapter,
|
|
9
|
-
key: 'shop.unchained.pricing.product-discount',
|
|
10
|
-
version: '1.0',
|
|
11
|
-
label: 'Apply Discounts on Product Price',
|
|
12
|
-
orderIndex: 10,
|
|
13
|
-
isActivatedFor: () => {
|
|
14
|
-
return true;
|
|
15
|
-
},
|
|
16
|
-
actions: (params) => {
|
|
17
|
-
const pricingAdapter = ProductPricingAdapter.actions(params);
|
|
18
|
-
const addDiscount = (discount, total, isTaxable) => {
|
|
19
|
-
const { configuration, discountId } = discount;
|
|
20
|
-
const { isNetPrice = false, ...meta } = configuration;
|
|
21
|
-
const amount = applyRate(configuration, total);
|
|
22
|
-
pricingAdapter.resultSheet().addDiscount({
|
|
23
|
-
amount: amount * -1,
|
|
24
|
-
discountId,
|
|
25
|
-
isNetPrice,
|
|
26
|
-
isTaxable,
|
|
27
|
-
meta: { adapter: ProductDiscount.key, ...meta },
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
return {
|
|
31
|
-
...pricingAdapter,
|
|
32
|
-
calculate: async () => {
|
|
33
|
-
const taxableTotal = params.calculationSheet.sum({
|
|
34
|
-
category: ProductPricingRowCategory.Item,
|
|
35
|
-
isTaxable: true,
|
|
36
|
-
});
|
|
37
|
-
const nonTaxableTotal = params.calculationSheet.sum({
|
|
38
|
-
category: ProductPricingRowCategory.Item,
|
|
39
|
-
isTaxable: false,
|
|
40
|
-
});
|
|
41
|
-
params.discounts.forEach((discount) => {
|
|
42
|
-
if (taxableTotal !== 0) {
|
|
43
|
-
addDiscount(discount, taxableTotal, true);
|
|
44
|
-
}
|
|
45
|
-
if (nonTaxableTotal !== 0) {
|
|
46
|
-
addDiscount(discount, nonTaxableTotal, false);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
return pricingAdapter.calculate();
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
ProductPricingDirector.registerAdapter(ProductDiscount);
|
|
55
|
-
//# sourceMappingURL=product-discount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-discount.js","sourceRoot":"","sources":["../../src/pricing/product-discount.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,MAAM,SAAS,GAAG,CAAC,aAAoC,EAAE,MAAM,EAAE,EAAE;IACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC,CAAC;AACF,MAAM,eAAe,GAA2B;IAC9C,GAAG,qBAAqB;IAExB,GAAG,EAAE,yCAAyC;IAC9C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,kCAAkC;IACzC,UAAU,EAAE,EAAE;IAEd,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAE,KAAa,EAAE,SAAkB,EAAE,EAAE;YAC5E,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;YAC/C,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,aAAa,CAAC;YACtD,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAE/C,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;gBACvC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;gBACnB,UAAU;gBACV,UAAU;gBACV,SAAS;gBACT,IAAI,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE;aAChD,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAC/C,QAAQ,EAAE,yBAAyB,CAAC,IAAI;oBACxC,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAClD,QAAQ,EAAE,yBAAyB,CAAC,IAAI;oBACxC,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;gBAEH,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACpC,IAAI,YAAY,KAAK,CAAC,EAAE;wBACtB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;qBAC3C;oBACD,IAAI,eAAe,KAAK,CAAC,EAAE;wBACzB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;qBAC/C;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import fetch from 'isomorphic-unfetch';
|
|
2
|
-
import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
|
|
3
|
-
import xmlJs from 'xml-js';
|
|
4
|
-
import Cache from './utils/cache';
|
|
5
|
-
const CACHE_PERIOD = 60 * 60 * 24; // 1 day
|
|
6
|
-
const SUPPORTED_CURRENCIES = [
|
|
7
|
-
'USD',
|
|
8
|
-
'JPY',
|
|
9
|
-
'BGN',
|
|
10
|
-
'CZK',
|
|
11
|
-
'DKK',
|
|
12
|
-
'GBP',
|
|
13
|
-
'HUF',
|
|
14
|
-
'PLN',
|
|
15
|
-
'RON',
|
|
16
|
-
'SEK',
|
|
17
|
-
'CHF',
|
|
18
|
-
'ISK',
|
|
19
|
-
'NOK',
|
|
20
|
-
'HRK',
|
|
21
|
-
'RUB',
|
|
22
|
-
'TRY',
|
|
23
|
-
'AUD',
|
|
24
|
-
'BRL',
|
|
25
|
-
'CAD',
|
|
26
|
-
'CNY',
|
|
27
|
-
'HKD',
|
|
28
|
-
'IDR',
|
|
29
|
-
'ILS',
|
|
30
|
-
'INR',
|
|
31
|
-
'KRW',
|
|
32
|
-
'MXN',
|
|
33
|
-
'MYR',
|
|
34
|
-
'NZD',
|
|
35
|
-
'PHP',
|
|
36
|
-
'SGD',
|
|
37
|
-
'THB',
|
|
38
|
-
'ZAR',
|
|
39
|
-
];
|
|
40
|
-
const cache = new Cache(CACHE_PERIOD);
|
|
41
|
-
const getEURexchangeRateForCurrency = async (currency) => {
|
|
42
|
-
const response = cache.get(currency, () => fetch(`https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml`, {
|
|
43
|
-
method: 'GET',
|
|
44
|
-
})
|
|
45
|
-
.then((res) => res.text())
|
|
46
|
-
.then((text) => JSON.parse(xmlJs.xml2json(text)))
|
|
47
|
-
.then((json) => json.elements?.[0]?.elements
|
|
48
|
-
.filter((e) => e.name.toLowerCase() === 'cube')[0]
|
|
49
|
-
?.elements[0]?.elements.filter((a) => a.attributes.currency === currency)?.[0]?.attributes));
|
|
50
|
-
return response;
|
|
51
|
-
};
|
|
52
|
-
const ProductPriceECBIntraBankExchange = {
|
|
53
|
-
...ProductPricingAdapter,
|
|
54
|
-
key: 'shop.unchained.pricing.price-ECB-intrabank-exchange',
|
|
55
|
-
version: '1.0',
|
|
56
|
-
label: 'Convert EUR to X with current exchange rate',
|
|
57
|
-
orderIndex: 1,
|
|
58
|
-
isActivatedFor: (context) => {
|
|
59
|
-
return SUPPORTED_CURRENCIES.indexOf(context.currency) !== -1;
|
|
60
|
-
},
|
|
61
|
-
actions: (params) => {
|
|
62
|
-
const pricingAdapter = ProductPricingAdapter.actions(params);
|
|
63
|
-
return {
|
|
64
|
-
...pricingAdapter,
|
|
65
|
-
calculate: async () => {
|
|
66
|
-
const { product, country, quantity, currency, modules } = params.context;
|
|
67
|
-
const { calculation = [] } = params.calculationSheet;
|
|
68
|
-
const EURprice = await modules.products.prices.price(product, {
|
|
69
|
-
country,
|
|
70
|
-
currency: 'EUR',
|
|
71
|
-
quantity,
|
|
72
|
-
});
|
|
73
|
-
if (!EURprice || !EURprice?.amount || calculation?.length)
|
|
74
|
-
return pricingAdapter.calculate();
|
|
75
|
-
const exchange = await getEURexchangeRateForCurrency(currency);
|
|
76
|
-
const convertedAmount = EURprice.amount * exchange.rate;
|
|
77
|
-
pricingAdapter.resultSheet().resetCalculation(params.calculationSheet);
|
|
78
|
-
pricingAdapter.resultSheet().addItem({
|
|
79
|
-
amount: convertedAmount * quantity,
|
|
80
|
-
isTaxable: EURprice.isTaxable,
|
|
81
|
-
isNetPrice: EURprice.isNetPrice,
|
|
82
|
-
meta: { adapter: ProductPriceECBIntraBankExchange.key },
|
|
83
|
-
});
|
|
84
|
-
return pricingAdapter.calculate();
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
ProductPricingDirector.registerAdapter(ProductPriceECBIntraBankExchange);
|
|
90
|
-
//# sourceMappingURL=product-price-ECB-interbank-exchange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-price-ECB-interbank-exchange.js","sourceRoot":"","sources":["../../src/pricing/product-price-ECB-interbank-exchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import fetch from 'isomorphic-unfetch';
|
|
2
|
-
import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
|
|
3
|
-
import Cache from './utils/cache';
|
|
4
|
-
const CACHE_PERIOD = 60 * 60 * 0.1; // 10 minutes
|
|
5
|
-
const SUPPORTED_CURRENCIES = ['BTC', 'ETH', 'XRP', 'USDT', 'BCH', 'BSV', 'LTC', 'EOS', 'BNB', 'XTZ'];
|
|
6
|
-
const cache = new Cache(CACHE_PERIOD);
|
|
7
|
-
const getFiatexchangeRateForCrypto = async (base, target) => {
|
|
8
|
-
const { data } = await cache.get(`${base}-${target}`, () => fetch(`https://api.coinbase.com/v2/exchange-rates?currency=${base}`, {
|
|
9
|
-
method: 'GET',
|
|
10
|
-
}).then((res) => res.json()));
|
|
11
|
-
return data?.rates?.[target];
|
|
12
|
-
};
|
|
13
|
-
const ProductPriceCoinbaseExchange = {
|
|
14
|
-
...ProductPricingAdapter,
|
|
15
|
-
key: 'shop.unchained.pricing.price-coinbase-exchange',
|
|
16
|
-
version: '1.0',
|
|
17
|
-
label: 'Convert fiat/crypto to crypto with current exchange rate',
|
|
18
|
-
orderIndex: 1,
|
|
19
|
-
isActivatedFor: (context) => {
|
|
20
|
-
return SUPPORTED_CURRENCIES.indexOf(context.currency.toUpperCase()) !== -1;
|
|
21
|
-
},
|
|
22
|
-
actions: (params) => {
|
|
23
|
-
const pricingAdapter = ProductPricingAdapter.actions(params);
|
|
24
|
-
const { services, modules } = params.context;
|
|
25
|
-
return {
|
|
26
|
-
...pricingAdapter,
|
|
27
|
-
calculate: async () => {
|
|
28
|
-
const { product, country, quantity, currency } = params.context;
|
|
29
|
-
const defaultCurrency = await services.countries.resolveDefaultCurrencyCode({
|
|
30
|
-
isoCode: country,
|
|
31
|
-
}, params.context);
|
|
32
|
-
const productPrice = await modules.products.prices.price(product, {
|
|
33
|
-
country,
|
|
34
|
-
currency: defaultCurrency,
|
|
35
|
-
quantity,
|
|
36
|
-
});
|
|
37
|
-
const { calculation = [] } = params.calculationSheet;
|
|
38
|
-
if (!productPrice ||
|
|
39
|
-
!productPrice?.amount ||
|
|
40
|
-
calculation?.length ||
|
|
41
|
-
defaultCurrency === currency)
|
|
42
|
-
return pricingAdapter.calculate();
|
|
43
|
-
const rate = await getFiatexchangeRateForCrypto(defaultCurrency, currency);
|
|
44
|
-
if (rate > 0) {
|
|
45
|
-
const convertedAmount = productPrice.amount * rate;
|
|
46
|
-
pricingAdapter.resultSheet().resetCalculation(params.calculationSheet);
|
|
47
|
-
pricingAdapter.resultSheet().addItem({
|
|
48
|
-
amount: convertedAmount * quantity,
|
|
49
|
-
isTaxable: productPrice?.isTaxable,
|
|
50
|
-
isNetPrice: productPrice?.isNetPrice,
|
|
51
|
-
meta: { adapter: ProductPriceCoinbaseExchange.key },
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return pricingAdapter.calculate();
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
ProductPricingDirector.registerAdapter(ProductPriceCoinbaseExchange);
|
|
60
|
-
//# sourceMappingURL=product-price-coinbase-exchange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-price-coinbase-exchange.js","sourceRoot":"","sources":["../../src/pricing/product-price-coinbase-exchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import bodyParser from 'body-parser';
|
|
2
|
-
import { useMiddlewareWithCurrentContext } from '@unchainedshop/api';
|
|
3
|
-
const { CRYPTOPAY_SECRET, CRYPTOPAY_PRICING_WEBHOOK_PATH = '/payment/cryptopay-pricing' } = process.env;
|
|
4
|
-
export default (app) => {
|
|
5
|
-
useMiddlewareWithCurrentContext(app, CRYPTOPAY_PRICING_WEBHOOK_PATH, bodyParser.json());
|
|
6
|
-
useMiddlewareWithCurrentContext(app, CRYPTOPAY_PRICING_WEBHOOK_PATH, async (request, response) => {
|
|
7
|
-
const resolvedContext = request.unchainedContext;
|
|
8
|
-
const { baseCurrency, token, rate, timestamp, secret } = request.body;
|
|
9
|
-
if (secret !== CRYPTOPAY_SECRET) {
|
|
10
|
-
response.end(JSON.stringify({ success: false }));
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const rateData = {
|
|
14
|
-
baseCurrency,
|
|
15
|
-
quoteCurrency: token,
|
|
16
|
-
rate,
|
|
17
|
-
timestamp,
|
|
18
|
-
};
|
|
19
|
-
const success = await resolvedContext.modules.products.prices.rates.updateRate(rateData);
|
|
20
|
-
response.end(JSON.stringify({ success }));
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=product-price-cryptopay.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-price-cryptopay.js","sourceRoot":"","sources":["../../src/pricing/product-price-cryptopay.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,EAAE,gBAAgB,EAAE,8BAA8B,GAAG,4BAA4B,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAExG,eAAe,CAAC,GAAG,EAAE,EAAE;IACrB,+BAA+B,CAAC,GAAG,EAAE,8BAA8B,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAExF,+BAA+B,CAAC,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC/F,MAAM,eAAe,GAAG,OAAO,CAAC,gBAA2B,CAAC;QAC5D,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACtE,IAAI,MAAM,KAAK,gBAAgB,EAAE;YAC/B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO;SACR;QACD,MAAM,QAAQ,GAAqB;YACjC,YAAY;YACZ,aAAa,EAAE,KAAK;YACpB,IAAI;YACJ,SAAS;SACV,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
|
|
2
|
-
const { RATECONVERSION_MAX_AGE = '360' } = process.env;
|
|
3
|
-
const MAX_RATE_AGE = parseInt(RATECONVERSION_MAX_AGE, 10);
|
|
4
|
-
const ProductPriceRateConversion = {
|
|
5
|
-
...ProductPricingAdapter,
|
|
6
|
-
key: 'shop.unchained.pricing.rate-conversion',
|
|
7
|
-
version: '1.0',
|
|
8
|
-
label: 'Generic rate conversion plugin that converts between rates if entry in DB exists.',
|
|
9
|
-
orderIndex: 1,
|
|
10
|
-
isActivatedFor: () => {
|
|
11
|
-
return true;
|
|
12
|
-
},
|
|
13
|
-
actions: (params) => {
|
|
14
|
-
const pricingAdapter = ProductPricingAdapter.actions(params);
|
|
15
|
-
const { services, modules } = params.context;
|
|
16
|
-
return {
|
|
17
|
-
...pricingAdapter,
|
|
18
|
-
calculate: async () => {
|
|
19
|
-
const { product, country, quantity, currency } = params.context;
|
|
20
|
-
const defaultCurrency = await services.countries.resolveDefaultCurrencyCode({
|
|
21
|
-
isoCode: country,
|
|
22
|
-
}, params.context);
|
|
23
|
-
const productPrice = await modules.products.prices.price(product, {
|
|
24
|
-
country,
|
|
25
|
-
currency: defaultCurrency,
|
|
26
|
-
quantity,
|
|
27
|
-
});
|
|
28
|
-
const { calculation = [] } = params.calculationSheet;
|
|
29
|
-
if (!productPrice ||
|
|
30
|
-
!productPrice?.amount ||
|
|
31
|
-
calculation?.length ||
|
|
32
|
-
defaultCurrency === currency)
|
|
33
|
-
return pricingAdapter.calculate();
|
|
34
|
-
const rate = await modules.products.prices.rates.getRate(defaultCurrency, currency, MAX_RATE_AGE);
|
|
35
|
-
if (rate > 0) {
|
|
36
|
-
const convertedAmount = productPrice.amount * rate;
|
|
37
|
-
pricingAdapter.resultSheet().resetCalculation(params.calculationSheet);
|
|
38
|
-
pricingAdapter.resultSheet().addItem({
|
|
39
|
-
amount: convertedAmount * quantity,
|
|
40
|
-
isTaxable: productPrice?.isTaxable,
|
|
41
|
-
isNetPrice: productPrice?.isNetPrice,
|
|
42
|
-
meta: { adapter: ProductPriceRateConversion.key },
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return pricingAdapter.calculate();
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
ProductPricingDirector.registerAdapter(ProductPriceRateConversion);
|
|
51
|
-
//# sourceMappingURL=product-price-rateconversion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-price-rateconversion.js","sourceRoot":"","sources":["../../src/pricing/product-price-rateconversion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,MAAM,EAAE,sBAAsB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAEvD,MAAM,YAAY,GAAG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;AAE1D,MAAM,0BAA0B,GAA2B;IACzD,GAAG,qBAAqB;IAExB,GAAG,EAAE,wCAAwC;IAC7C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,mFAAmF;IAC1F,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7C,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBAChE,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CACzE;oBACE,OAAO,EAAE,OAAO;iBACjB,EACD,MAAM,CAAC,OAAO,CACf,CAAC;gBAEF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;oBAChE,OAAO;oBACP,QAAQ,EAAE,eAAe;oBACzB,QAAQ;iBACT,CAAC,CAAC;gBAEH,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACrD,IACE,CAAC,YAAY;oBACb,CAAC,YAAY,EAAE,MAAM;oBACrB,WAAW,EAAE,MAAM;oBACnB,eAAe,KAAK,QAAQ;oBAE5B,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;gBAEpC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CACtD,eAAe,EACf,QAAQ,EACR,YAAY,CACb,CAAC;gBAEF,IAAI,IAAI,GAAG,CAAC,EAAE;oBACZ,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnD,cAAc,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBACvE,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;wBACnC,MAAM,EAAE,eAAe,GAAG,QAAQ;wBAClC,SAAS,EAAE,YAAY,EAAE,SAAS;wBAClC,UAAU,EAAE,YAAY,EAAE,UAAU;wBACpC,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,CAAC,GAAG,EAAE;qBAClD,CAAC,CAAC;iBACJ;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { IProductPricingAdapter } from '@unchainedshop/types/products.pricing';
|
|
2
|
-
interface PriceRoundSettings {
|
|
3
|
-
configurations: Record<string, number>;
|
|
4
|
-
defaultPrecision: number;
|
|
5
|
-
skip: Array<string>;
|
|
6
|
-
}
|
|
7
|
-
export declare const configureProductPriceRounding: ({ configurations, defaultPrecision, skip, }: PriceRoundSettings) => void;
|
|
8
|
-
export declare const ProductPriceRound: IProductPricingAdapter & {
|
|
9
|
-
configure: (params: PriceRoundSettings) => void;
|
|
10
|
-
};
|
|
11
|
-
export {};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { ProductPricingAdapter } from '@unchainedshop/core-products';
|
|
2
|
-
const roundToNext = (value, precision) => value % precision === precision / 2
|
|
3
|
-
? value + precision / 2
|
|
4
|
-
: value + (precision - (value % precision));
|
|
5
|
-
const ProductPriceRoundSettings = {
|
|
6
|
-
configurations: {},
|
|
7
|
-
defaultPrecision: 50,
|
|
8
|
-
skip: [],
|
|
9
|
-
};
|
|
10
|
-
export const configureProductPriceRounding = ({ configurations, defaultPrecision, skip, }) => {
|
|
11
|
-
if (defaultPrecision)
|
|
12
|
-
ProductPriceRoundSettings.defaultPrecision = defaultPrecision;
|
|
13
|
-
if (configurations)
|
|
14
|
-
ProductPriceRoundSettings.configurations = configurations;
|
|
15
|
-
if (skip?.length)
|
|
16
|
-
ProductPriceRoundSettings.skip = skip;
|
|
17
|
-
};
|
|
18
|
-
export const ProductPriceRound = {
|
|
19
|
-
...ProductPricingAdapter,
|
|
20
|
-
key: 'shop.unchained.pricing.price-round',
|
|
21
|
-
version: '1.0',
|
|
22
|
-
label: 'Round product price to the next precision number',
|
|
23
|
-
orderIndex: 2,
|
|
24
|
-
isActivatedFor: () => {
|
|
25
|
-
return true;
|
|
26
|
-
},
|
|
27
|
-
configure: configureProductPriceRounding,
|
|
28
|
-
actions: (params) => {
|
|
29
|
-
const pricingAdapter = ProductPricingAdapter.actions(params);
|
|
30
|
-
return {
|
|
31
|
-
...pricingAdapter,
|
|
32
|
-
calculate: async () => {
|
|
33
|
-
const { currency, quantity } = params.context;
|
|
34
|
-
const { configurations, skip, defaultPrecision } = ProductPriceRoundSettings;
|
|
35
|
-
const { calculation = [] } = params.calculationSheet;
|
|
36
|
-
if (skip?.indexOf(currency) !== -1)
|
|
37
|
-
return pricingAdapter.calculate();
|
|
38
|
-
const roundPrecision = configurations?.[currency] || defaultPrecision;
|
|
39
|
-
if (calculation?.length && roundPrecision) {
|
|
40
|
-
const [productPrice] = calculation;
|
|
41
|
-
pricingAdapter.resultSheet().resetCalculation(params.calculationSheet);
|
|
42
|
-
pricingAdapter.resultSheet().addItem({
|
|
43
|
-
amount: roundToNext(productPrice.amount, roundPrecision) * quantity,
|
|
44
|
-
isTaxable: productPrice.isTaxable,
|
|
45
|
-
isNetPrice: productPrice.isNetPrice,
|
|
46
|
-
meta: { adapter: ProductPriceRound.key },
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return pricingAdapter.calculate();
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=product-price-round.js.map
|