@unchainedshop/plugins 1.1.7 → 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.
Files changed (314) hide show
  1. package/jest.config.js +5 -0
  2. package/package.json +31 -25
  3. package/src/files/gridfs/gridfs-adapter.ts +1 -1
  4. package/src/files/gridfs/gridfs-webhook.ts +62 -0
  5. package/src/files/gridfs/{index.js → index.ts} +0 -0
  6. package/src/files/gridfs/{promisePipe.js → promisePipe.ts} +0 -0
  7. package/src/files/gridfs/{sign.js → sign.ts} +0 -0
  8. package/src/files/minio/minio-adapter.ts +1 -2
  9. package/src/files/minio/minio-webhook.js +33 -30
  10. package/src/payment/apple-iap/adapter.ts +113 -110
  11. package/src/payment/apple-iap/index.ts +2 -1
  12. package/src/payment/bity/adapter.ts +53 -51
  13. package/src/payment/bity/index.ts +2 -1
  14. package/src/payment/braintree.ts +2 -2
  15. package/src/payment/cryptopay.ts +69 -67
  16. package/src/payment/datatrans-v2/index.ts +3 -1
  17. package/src/payment/datatrans-v2/middleware.ts +129 -123
  18. package/src/payment/paypal-checkout.ts +1 -1
  19. package/src/payment/postfinance-checkout/index.ts +3 -1
  20. package/src/payment/postfinance-checkout/middleware.ts +42 -40
  21. package/src/payment/stripe.ts +82 -74
  22. package/src/payment/worldline-saferpay/worldline-saferpay-client/index.ts +3 -3
  23. package/src/pricing/product-discount.ts +1 -1
  24. package/src/pricing/product-price-ECB-interbank-exchange.ts +1 -1
  25. package/src/pricing/product-price-cryptopay.ts +20 -18
  26. package/src/worker/email.ts +1 -0
  27. package/tsconfig.json +26 -5
  28. package/lib/delivery/pick-mup.d.ts +0 -1
  29. package/lib/delivery/pick-mup.js +0 -98
  30. package/lib/delivery/pick-mup.js.map +0 -1
  31. package/lib/delivery/post.d.ts +0 -1
  32. package/lib/delivery/post.js +0 -23
  33. package/lib/delivery/post.js.map +0 -1
  34. package/lib/delivery/send-message.d.ts +0 -1
  35. package/lib/delivery/send-message.js +0 -41
  36. package/lib/delivery/send-message.js.map +0 -1
  37. package/lib/delivery/stores.d.ts +0 -1
  38. package/lib/delivery/stores.js +0 -39
  39. package/lib/delivery/stores.js.map +0 -1
  40. package/lib/enrollments/licensed.d.ts +0 -1
  41. package/lib/enrollments/licensed.js +0 -40
  42. package/lib/enrollments/licensed.js.map +0 -1
  43. package/lib/events/node-event-emitter.d.ts +0 -1
  44. package/lib/events/node-event-emitter.js +0 -16
  45. package/lib/events/node-event-emitter.js.map +0 -1
  46. package/lib/events/redis.d.ts +0 -1
  47. package/lib/events/redis.js +0 -24
  48. package/lib/events/redis.js.map +0 -1
  49. package/lib/files/gridfs/gridfs-adapter.d.ts +0 -2
  50. package/lib/files/gridfs/gridfs-adapter.js +0 -106
  51. package/lib/files/gridfs/gridfs-adapter.js.map +0 -1
  52. package/lib/files/gridfs/gridfs-webhook.d.ts +0 -1
  53. package/lib/files/gridfs/gridfs-webhook.js +0 -54
  54. package/lib/files/gridfs/gridfs-webhook.js.map +0 -1
  55. package/lib/files/gridfs/index.d.ts +0 -8
  56. package/lib/files/gridfs/index.js +0 -21
  57. package/lib/files/gridfs/index.js.map +0 -1
  58. package/lib/files/gridfs/promisePipe.d.ts +0 -2
  59. package/lib/files/gridfs/promisePipe.js +0 -21
  60. package/lib/files/gridfs/promisePipe.js.map +0 -1
  61. package/lib/files/gridfs/sign.d.ts +0 -2
  62. package/lib/files/gridfs/sign.js +0 -12
  63. package/lib/files/gridfs/sign.js.map +0 -1
  64. package/lib/files/minio/minio-adapter.d.ts +0 -4
  65. package/lib/files/minio/minio-adapter.js +0 -166
  66. package/lib/files/minio/minio-adapter.js.map +0 -1
  67. package/lib/files/minio/minio-webhook.d.ts +0 -1
  68. package/lib/files/minio/minio-webhook.js +0 -45
  69. package/lib/files/minio/minio-webhook.js.map +0 -1
  70. package/lib/filters/local-search.d.ts +0 -3
  71. package/lib/filters/local-search.js +0 -84
  72. package/lib/filters/local-search.js.map +0 -1
  73. package/lib/filters/strict-equal.d.ts +0 -1
  74. package/lib/filters/strict-equal.js +0 -25
  75. package/lib/filters/strict-equal.js.map +0 -1
  76. package/lib/payment/apple-iap/adapter.d.ts +0 -1
  77. package/lib/payment/apple-iap/adapter.js +0 -284
  78. package/lib/payment/apple-iap/adapter.js.map +0 -1
  79. package/lib/payment/apple-iap/db/AppleTransactionsCollection.d.ts +0 -7
  80. package/lib/payment/apple-iap/db/AppleTransactionsCollection.js +0 -5
  81. package/lib/payment/apple-iap/db/AppleTransactionsCollection.js.map +0 -1
  82. package/lib/payment/apple-iap/index.d.ts +0 -2
  83. package/lib/payment/apple-iap/index.js +0 -3
  84. package/lib/payment/apple-iap/index.js.map +0 -1
  85. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +0 -9
  86. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js +0 -18
  87. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js.map +0 -1
  88. package/lib/payment/bity/adapter.d.ts +0 -1
  89. package/lib/payment/bity/adapter.js +0 -316
  90. package/lib/payment/bity/adapter.js.map +0 -1
  91. package/lib/payment/bity/db/BityCredentialsCollection.d.ts +0 -11
  92. package/lib/payment/bity/db/BityCredentialsCollection.js +0 -5
  93. package/lib/payment/bity/db/BityCredentialsCollection.js.map +0 -1
  94. package/lib/payment/bity/index.d.ts +0 -2
  95. package/lib/payment/bity/index.js +0 -3
  96. package/lib/payment/bity/index.js.map +0 -1
  97. package/lib/payment/bity/module/configureBityModule.d.ts +0 -11
  98. package/lib/payment/bity/module/configureBityModule.js +0 -33
  99. package/lib/payment/bity/module/configureBityModule.js.map +0 -1
  100. package/lib/payment/braintree.d.ts +0 -1
  101. package/lib/payment/braintree.js +0 -129
  102. package/lib/payment/braintree.js.map +0 -1
  103. package/lib/payment/cryptopay.d.ts +0 -1
  104. package/lib/payment/cryptopay.js +0 -159
  105. package/lib/payment/cryptopay.js.map +0 -1
  106. package/lib/payment/datatrans-v2/api/authorize.d.ts +0 -2
  107. package/lib/payment/datatrans-v2/api/authorize.js +0 -12
  108. package/lib/payment/datatrans-v2/api/authorize.js.map +0 -1
  109. package/lib/payment/datatrans-v2/api/authorizeAuthenticated.d.ts +0 -2
  110. package/lib/payment/datatrans-v2/api/authorizeAuthenticated.js +0 -11
  111. package/lib/payment/datatrans-v2/api/authorizeAuthenticated.js.map +0 -1
  112. package/lib/payment/datatrans-v2/api/cancel.d.ts +0 -2
  113. package/lib/payment/datatrans-v2/api/cancel.js +0 -10
  114. package/lib/payment/datatrans-v2/api/cancel.js.map +0 -1
  115. package/lib/payment/datatrans-v2/api/index.d.ts +0 -19
  116. package/lib/payment/datatrans-v2/api/index.js +0 -24
  117. package/lib/payment/datatrans-v2/api/index.js.map +0 -1
  118. package/lib/payment/datatrans-v2/api/init.d.ts +0 -2
  119. package/lib/payment/datatrans-v2/api/init.js +0 -31
  120. package/lib/payment/datatrans-v2/api/init.js.map +0 -1
  121. package/lib/payment/datatrans-v2/api/makeFetcher.d.ts +0 -2
  122. package/lib/payment/datatrans-v2/api/makeFetcher.js +0 -41
  123. package/lib/payment/datatrans-v2/api/makeFetcher.js.map +0 -1
  124. package/lib/payment/datatrans-v2/api/secureFields.d.ts +0 -2
  125. package/lib/payment/datatrans-v2/api/secureFields.js +0 -14
  126. package/lib/payment/datatrans-v2/api/secureFields.js.map +0 -1
  127. package/lib/payment/datatrans-v2/api/settle.d.ts +0 -2
  128. package/lib/payment/datatrans-v2/api/settle.js +0 -10
  129. package/lib/payment/datatrans-v2/api/settle.js.map +0 -1
  130. package/lib/payment/datatrans-v2/api/status.d.ts +0 -2
  131. package/lib/payment/datatrans-v2/api/status.js +0 -7
  132. package/lib/payment/datatrans-v2/api/status.js.map +0 -1
  133. package/lib/payment/datatrans-v2/api/validate.d.ts +0 -2
  134. package/lib/payment/datatrans-v2/api/validate.js +0 -10
  135. package/lib/payment/datatrans-v2/api/validate.js.map +0 -1
  136. package/lib/payment/datatrans-v2/generateSignature.d.ts +0 -10
  137. package/lib/payment/datatrans-v2/generateSignature.js +0 -19
  138. package/lib/payment/datatrans-v2/generateSignature.js.map +0 -1
  139. package/lib/payment/datatrans-v2/getPaths.d.ts +0 -9
  140. package/lib/payment/datatrans-v2/getPaths.js +0 -9
  141. package/lib/payment/datatrans-v2/getPaths.js.map +0 -1
  142. package/lib/payment/datatrans-v2/index.d.ts +0 -1
  143. package/lib/payment/datatrans-v2/index.js +0 -384
  144. package/lib/payment/datatrans-v2/index.js.map +0 -1
  145. package/lib/payment/datatrans-v2/middleware.d.ts +0 -1
  146. package/lib/payment/datatrans-v2/middleware.js +0 -111
  147. package/lib/payment/datatrans-v2/middleware.js.map +0 -1
  148. package/lib/payment/datatrans-v2/parseRegistrationData.d.ts +0 -11
  149. package/lib/payment/datatrans-v2/parseRegistrationData.js +0 -26
  150. package/lib/payment/datatrans-v2/parseRegistrationData.js.map +0 -1
  151. package/lib/payment/datatrans-v2/roundedAmountFromOrder.d.ts +0 -7
  152. package/lib/payment/datatrans-v2/roundedAmountFromOrder.js +0 -10
  153. package/lib/payment/datatrans-v2/roundedAmountFromOrder.js.map +0 -1
  154. package/lib/payment/datatrans-v2/splitProperties.d.ts +0 -8
  155. package/lib/payment/datatrans-v2/splitProperties.js +0 -58
  156. package/lib/payment/datatrans-v2/splitProperties.js.map +0 -1
  157. package/lib/payment/invoice-prepaid.d.ts +0 -1
  158. package/lib/payment/invoice-prepaid.js +0 -30
  159. package/lib/payment/invoice-prepaid.js.map +0 -1
  160. package/lib/payment/invoice.d.ts +0 -1
  161. package/lib/payment/invoice.js +0 -27
  162. package/lib/payment/invoice.js.map +0 -1
  163. package/lib/payment/paypal-checkout.d.ts +0 -1
  164. package/lib/payment/paypal-checkout.js +0 -82
  165. package/lib/payment/paypal-checkout.js.map +0 -1
  166. package/lib/payment/postfinance-checkout/api.d.ts +0 -11
  167. package/lib/payment/postfinance-checkout/api.js +0 -109
  168. package/lib/payment/postfinance-checkout/api.js.map +0 -1
  169. package/lib/payment/postfinance-checkout/index.d.ts +0 -1
  170. package/lib/payment/postfinance-checkout/index.js +0 -186
  171. package/lib/payment/postfinance-checkout/index.js.map +0 -1
  172. package/lib/payment/postfinance-checkout/middleware.d.ts +0 -1
  173. package/lib/payment/postfinance-checkout/middleware.js +0 -42
  174. package/lib/payment/postfinance-checkout/middleware.js.map +0 -1
  175. package/lib/payment/postfinance-checkout/types.d.ts +0 -23
  176. package/lib/payment/postfinance-checkout/types.js +0 -12
  177. package/lib/payment/postfinance-checkout/types.js.map +0 -1
  178. package/lib/payment/postfinance-checkout/utils.d.ts +0 -4
  179. package/lib/payment/postfinance-checkout/utils.js +0 -20
  180. package/lib/payment/postfinance-checkout/utils.js.map +0 -1
  181. package/lib/payment/stripe.d.ts +0 -1
  182. package/lib/payment/stripe.js +0 -214
  183. package/lib/payment/stripe.js.map +0 -1
  184. package/lib/payment/worldline-saferpay/index.d.ts +0 -1
  185. package/lib/payment/worldline-saferpay/index.js +0 -112
  186. package/lib/payment/worldline-saferpay/index.js.map +0 -1
  187. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.d.ts +0 -14
  188. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.js +0 -29
  189. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.js.map +0 -1
  190. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.d.ts +0 -9
  191. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js +0 -28
  192. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js.map +0 -1
  193. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.d.ts +0 -4
  194. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.js +0 -2
  195. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.js.map +0 -1
  196. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.d.ts +0 -1
  197. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.js +0 -2
  198. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.js.map +0 -1
  199. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.d.ts +0 -73
  200. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.js +0 -2
  201. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.js.map +0 -1
  202. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.d.ts +0 -53
  203. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.js +0 -2
  204. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.js.map +0 -1
  205. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.d.ts +0 -13
  206. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.js +0 -2
  207. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.js.map +0 -1
  208. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.d.ts +0 -9
  209. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.js +0 -2
  210. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.js.map +0 -1
  211. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.d.ts +0 -5
  212. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.js +0 -2
  213. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.js.map +0 -1
  214. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.d.ts +0 -13
  215. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.js +0 -2
  216. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.js.map +0 -1
  217. package/lib/pricing/delivery-swiss-tax.d.ts +0 -15
  218. package/lib/pricing/delivery-swiss-tax.js +0 -98
  219. package/lib/pricing/delivery-swiss-tax.js.map +0 -1
  220. package/lib/pricing/discount-100-off.d.ts +0 -1
  221. package/lib/pricing/discount-100-off.js +0 -34
  222. package/lib/pricing/discount-100-off.js.map +0 -1
  223. package/lib/pricing/discount-half-price-manual.d.ts +0 -1
  224. package/lib/pricing/discount-half-price-manual.js +0 -34
  225. package/lib/pricing/discount-half-price-manual.js.map +0 -1
  226. package/lib/pricing/discount-half-price.d.ts +0 -1
  227. package/lib/pricing/discount-half-price.js +0 -37
  228. package/lib/pricing/discount-half-price.js.map +0 -1
  229. package/lib/pricing/free-delivery.d.ts +0 -2
  230. package/lib/pricing/free-delivery.js +0 -26
  231. package/lib/pricing/free-delivery.js.map +0 -1
  232. package/lib/pricing/free-payment.d.ts +0 -2
  233. package/lib/pricing/free-payment.js +0 -26
  234. package/lib/pricing/free-payment.js.map +0 -1
  235. package/lib/pricing/order-delivery.d.ts +0 -1
  236. package/lib/pricing/order-delivery.js +0 -33
  237. package/lib/pricing/order-delivery.js.map +0 -1
  238. package/lib/pricing/order-discount.d.ts +0 -1
  239. package/lib/pricing/order-discount.js +0 -110
  240. package/lib/pricing/order-discount.js.map +0 -1
  241. package/lib/pricing/order-items-discount.d.ts +0 -1
  242. package/lib/pricing/order-items-discount.js +0 -88
  243. package/lib/pricing/order-items-discount.js.map +0 -1
  244. package/lib/pricing/order-items.d.ts +0 -1
  245. package/lib/pricing/order-items.js +0 -44
  246. package/lib/pricing/order-items.js.map +0 -1
  247. package/lib/pricing/order-payment.d.ts +0 -1
  248. package/lib/pricing/order-payment.js +0 -33
  249. package/lib/pricing/order-payment.js.map +0 -1
  250. package/lib/pricing/product-catalog-price.d.ts +0 -1
  251. package/lib/pricing/product-catalog-price.js +0 -37
  252. package/lib/pricing/product-catalog-price.js.map +0 -1
  253. package/lib/pricing/product-discount.d.ts +0 -1
  254. package/lib/pricing/product-discount.js +0 -55
  255. package/lib/pricing/product-discount.js.map +0 -1
  256. package/lib/pricing/product-price-ECB-interbank-exchange.d.ts +0 -1
  257. package/lib/pricing/product-price-ECB-interbank-exchange.js +0 -90
  258. package/lib/pricing/product-price-ECB-interbank-exchange.js.map +0 -1
  259. package/lib/pricing/product-price-coinbase-exchange.d.ts +0 -1
  260. package/lib/pricing/product-price-coinbase-exchange.js +0 -60
  261. package/lib/pricing/product-price-coinbase-exchange.js.map +0 -1
  262. package/lib/pricing/product-price-cryptopay.d.ts +0 -1
  263. package/lib/pricing/product-price-cryptopay.js +0 -21
  264. package/lib/pricing/product-price-cryptopay.js.map +0 -1
  265. package/lib/pricing/product-price-rateconversion.d.ts +0 -1
  266. package/lib/pricing/product-price-rateconversion.js +0 -51
  267. package/lib/pricing/product-price-rateconversion.js.map +0 -1
  268. package/lib/pricing/product-price-round.d.ts +0 -11
  269. package/lib/pricing/product-price-round.js +0 -54
  270. package/lib/pricing/product-price-round.js.map +0 -1
  271. package/lib/pricing/product-swiss-tax.d.ts +0 -13
  272. package/lib/pricing/product-swiss-tax.js +0 -102
  273. package/lib/pricing/product-swiss-tax.js.map +0 -1
  274. package/lib/pricing/utils/cache.d.ts +0 -8
  275. package/lib/pricing/utils/cache.js +0 -28
  276. package/lib/pricing/utils/cache.js.map +0 -1
  277. package/lib/quotations/manual.d.ts +0 -1
  278. package/lib/quotations/manual.js +0 -21
  279. package/lib/quotations/manual.js.map +0 -1
  280. package/lib/warehousing/google-sheets.d.ts +0 -1
  281. package/lib/warehousing/google-sheets.js +0 -153
  282. package/lib/warehousing/google-sheets.js.map +0 -1
  283. package/lib/warehousing/store.d.ts +0 -1
  284. package/lib/warehousing/store.js +0 -33
  285. package/lib/warehousing/store.js.map +0 -1
  286. package/lib/worker/BulkImportWorker.d.ts +0 -2
  287. package/lib/worker/BulkImportWorker.js +0 -91
  288. package/lib/worker/BulkImportWorker.js.map +0 -1
  289. package/lib/worker/GenerateOrderWorker.d.ts +0 -1
  290. package/lib/worker/GenerateOrderWorker.js +0 -110
  291. package/lib/worker/GenerateOrderWorker.js.map +0 -1
  292. package/lib/worker/MessageWorker.js +0 -45
  293. package/lib/worker/MessageWorker.js.map +0 -1
  294. package/lib/worker/ZombieKillerWorker.d.ts +0 -7
  295. package/lib/worker/ZombieKillerWorker.js +0 -88
  296. package/lib/worker/ZombieKillerWorker.js.map +0 -1
  297. package/lib/worker/email.d.ts +0 -1
  298. package/lib/worker/email.js +0 -96
  299. package/lib/worker/email.js.map +0 -1
  300. package/lib/worker/external.d.ts +0 -2
  301. package/lib/worker/external.js +0 -13
  302. package/lib/worker/external.js.map +0 -1
  303. package/lib/worker/heartbeat.d.ts +0 -1
  304. package/lib/worker/heartbeat.js +0 -32
  305. package/lib/worker/heartbeat.js.map +0 -1
  306. package/lib/worker/http-request.d.ts +0 -8
  307. package/lib/worker/http-request.js +0 -61
  308. package/lib/worker/http-request.js.map +0 -1
  309. package/lib/worker/sms.d.ts +0 -1
  310. package/lib/worker/sms.js +0 -69
  311. package/lib/worker/sms.js.map +0 -1
  312. package/license +0 -274
  313. package/src/files/gridfs/gridfs-webhook.js +0 -60
  314. package/tsconfig.build.json +0 -26
@@ -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 Cache from './utils/cache';
4
- const CACHE_PERIOD = 60 * 60 * 24; // 1 day
5
- const SUPPORTED_CURRENCIES = [
6
- 'USD',
7
- 'JPY',
8
- 'BGN',
9
- 'CZK',
10
- 'DKK',
11
- 'GBP',
12
- 'HUF',
13
- 'PLN',
14
- 'RON',
15
- 'SEK',
16
- 'CHF',
17
- 'ISK',
18
- 'NOK',
19
- 'HRK',
20
- 'RUB',
21
- 'TRY',
22
- 'AUD',
23
- 'BRL',
24
- 'CAD',
25
- 'CNY',
26
- 'HKD',
27
- 'IDR',
28
- 'ILS',
29
- 'INR',
30
- 'KRW',
31
- 'MXN',
32
- 'MYR',
33
- 'NZD',
34
- 'PHP',
35
- 'SGD',
36
- 'THB',
37
- 'ZAR',
38
- ];
39
- const cache = new Cache(CACHE_PERIOD);
40
- const xmlJs = require('xml-js'); // eslint-disable-line
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 +0,0 @@
1
- export {};
@@ -1,21 +0,0 @@
1
- import bodyParser from 'body-parser';
2
- import { useMiddlewareWithCurrentContext } from '@unchainedshop/api';
3
- const { CRYPTOPAY_SECRET, CRYPTOPAY_PRICING_WEBHOOK_PATH = '/graphql/cryptopay-pricing' } = process.env;
4
- useMiddlewareWithCurrentContext(CRYPTOPAY_PRICING_WEBHOOK_PATH, bodyParser.json());
5
- useMiddlewareWithCurrentContext(CRYPTOPAY_PRICING_WEBHOOK_PATH, async (request, response) => {
6
- const resolvedContext = request.unchainedContext;
7
- const { baseCurrency, token, rate, timestamp, secret } = request.body;
8
- if (secret !== CRYPTOPAY_SECRET) {
9
- response.end(JSON.stringify({ success: false }));
10
- return;
11
- }
12
- const rateData = {
13
- baseCurrency,
14
- quoteCurrency: token,
15
- rate,
16
- timestamp,
17
- };
18
- const success = await resolvedContext.modules.products.prices.rates.updateRate(rateData);
19
- response.end(JSON.stringify({ success }));
20
- });
21
- //# 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,+BAA+B,CAAC,8BAA8B,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnF,+BAA+B,CAAC,8BAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAC1F,MAAM,eAAe,GAAG,OAAO,CAAC,gBAA2B,CAAC;IAC5D,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACtE,IAAI,MAAM,KAAK,gBAAgB,EAAE;QAC/B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO;KACR;IACD,MAAM,QAAQ,GAAqB;QACjC,YAAY;QACZ,aAAa,EAAE,KAAK;QACpB,IAAI;QACJ,SAAS;KACV,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC,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
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-price-round.js","sourceRoot":"","sources":["../../src/pricing/product-price-round.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CACvC,KAAK,GAAG,SAAS,KAAK,SAAS,GAAG,CAAC;IACjC,CAAC,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC;IACvB,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;AAShD,MAAM,yBAAyB,GAAuB;IACpD,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,cAAc,EACd,gBAAgB,EAChB,IAAI,GACe,EAAE,EAAE;IACvB,IAAI,gBAAgB;QAAE,yBAAyB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACpF,IAAI,cAAc;QAAE,yBAAyB,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9E,IAAI,IAAI,EAAE,MAAM;QAAE,yBAAyB,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAE1B;IACF,GAAG,qBAAqB;IAExB,GAAG,EAAE,oCAAoC;IACzC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,kDAAkD;IACzD,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,EAAE,6BAA6B;IAExC,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,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9C,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,yBAAyB,CAAC;gBAC7E,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBAErD,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAAE,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;gBAEtE,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC;gBAEtE,IAAI,WAAW,EAAE,MAAM,IAAI,cAAc,EAAE;oBACzC,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;oBACnC,cAAc,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBACvE,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;wBACnC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,QAAQ;wBACnE,SAAS,EAAE,YAAY,CAAC,SAAS;wBACjC,UAAU,EAAE,YAAY,CAAC,UAAU;wBACnC,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE;qBACzC,CAAC,CAAC;iBACJ;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}