addio-admin-sdk 1.7.167 → 1.7.168

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 (576) hide show
  1. package/.babelrc +17 -17
  2. package/.env +15 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/run_unit_test.yaml +48 -48
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +573 -573
  7. package/dist/Interfaces/Address/index.d.ts +21 -21
  8. package/dist/Interfaces/Address/index.js +16 -16
  9. package/dist/Interfaces/Algolia/index.d.ts +182 -180
  10. package/dist/Interfaces/Algolia/index.js +2 -2
  11. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  12. package/dist/Interfaces/Attachement/index.js +2 -2
  13. package/dist/Interfaces/Attribute/index.d.ts +53 -53
  14. package/dist/Interfaces/Attribute/index.js +10 -10
  15. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  16. package/dist/Interfaces/BGJob/index.js +25 -25
  17. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  18. package/dist/Interfaces/BaseClass/index.js +2 -2
  19. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  20. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  21. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  22. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  23. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  24. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  25. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  26. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  27. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  28. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  29. package/dist/Interfaces/Booking/index.d.ts +74 -74
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +15 -15
  32. package/dist/Interfaces/Brand/index.js +2 -2
  33. package/dist/Interfaces/CMS/index.d.ts +28 -28
  34. package/dist/Interfaces/CMS/index.js +5 -5
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IMarketPayload.d.ts +12 -12
  38. package/dist/Interfaces/Cart/IMarketPayload.js +2 -2
  39. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  40. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  41. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  42. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  43. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  44. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  45. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  46. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  47. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  48. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  49. package/dist/Interfaces/Cart/index.d.ts +451 -451
  50. package/dist/Interfaces/Cart/index.js +216 -216
  51. package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
  52. package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
  53. package/dist/Interfaces/CashDrawers/index.d.ts +38 -38
  54. package/dist/Interfaces/CashDrawers/index.js +19 -19
  55. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  56. package/dist/Interfaces/Catalogue/index.js +37 -37
  57. package/dist/Interfaces/Category/index.d.ts +33 -33
  58. package/dist/Interfaces/Category/index.js +2 -2
  59. package/dist/Interfaces/Chart/index.d.ts +11 -11
  60. package/dist/Interfaces/Chart/index.js +2 -2
  61. package/dist/Interfaces/Class/index.d.ts +8 -8
  62. package/dist/Interfaces/Class/index.js +2 -2
  63. package/dist/Interfaces/Consent/index.d.ts +6 -6
  64. package/dist/Interfaces/Consent/index.js +2 -2
  65. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  66. package/dist/Interfaces/Context/IContextProps.js +2 -2
  67. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  68. package/dist/Interfaces/Context/IContextState.js +2 -2
  69. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  70. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  71. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  72. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  73. package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
  74. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  75. package/dist/Interfaces/Customer/index.d.ts +104 -104
  76. package/dist/Interfaces/Customer/index.js +148 -148
  77. package/dist/Interfaces/Declination/index.d.ts +117 -117
  78. package/dist/Interfaces/Declination/index.js +66 -66
  79. package/dist/Interfaces/Document/index.d.ts +8 -8
  80. package/dist/Interfaces/Document/index.js +2 -2
  81. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  82. package/dist/Interfaces/Elastic/index.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  84. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  86. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  88. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  90. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  92. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  94. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  95. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  96. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  97. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  98. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  99. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  100. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  101. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  102. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  103. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  104. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  105. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  106. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  107. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  108. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  109. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  110. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  111. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  112. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  113. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  114. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  115. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  116. package/dist/Interfaces/Email/IEmail.js +60 -60
  117. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  118. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  119. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  120. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  121. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  122. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  123. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  124. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  125. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  126. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  127. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  128. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  129. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  130. package/dist/Interfaces/ExportSchema/index.js +2 -2
  131. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  132. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  133. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  134. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  135. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  136. package/dist/Interfaces/ExternalService/index.js +2 -2
  137. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  138. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  139. package/dist/Interfaces/G2/index.d.ts +556 -556
  140. package/dist/Interfaces/G2/index.js +38 -38
  141. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  142. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  143. package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
  144. package/dist/Interfaces/Indexed/Product/index.js +253 -253
  145. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  146. package/dist/Interfaces/Inventory/index.js +8 -8
  147. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  148. package/dist/Interfaces/Invoice/index.js +2 -2
  149. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  150. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  151. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  152. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  153. package/dist/Interfaces/Menu/index.d.ts +40 -40
  154. package/dist/Interfaces/Menu/index.js +16 -16
  155. package/dist/Interfaces/Note/index.d.ts +10 -10
  156. package/dist/Interfaces/Note/index.js +7 -7
  157. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  158. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  159. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  160. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  161. package/dist/Interfaces/Order/index.d.ts +4 -4
  162. package/dist/Interfaces/Order/index.js +2 -2
  163. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  164. package/dist/Interfaces/Org/IRelUser.js +2 -2
  165. package/dist/Interfaces/Org/index.d.ts +29 -29
  166. package/dist/Interfaces/Org/index.js +12 -12
  167. package/dist/Interfaces/Payment/index.d.ts +26 -26
  168. package/dist/Interfaces/Payment/index.js +14 -14
  169. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  170. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  171. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  172. package/dist/Interfaces/Product/IImportProduct.js +882 -882
  173. package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
  174. package/dist/Interfaces/Product/IInventoryItem.js +38 -38
  175. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  176. package/dist/Interfaces/Product/IPricing.js +180 -180
  177. package/dist/Interfaces/Product/index.d.ts +137 -137
  178. package/dist/Interfaces/Product/index.js +64 -64
  179. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  180. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  181. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  182. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  183. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  184. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  185. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  186. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  187. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  188. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  189. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  190. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  191. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  192. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  193. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  194. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  195. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  196. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  197. package/dist/Interfaces/Quote/index.d.ts +5 -5
  198. package/dist/Interfaces/Quote/index.js +2 -2
  199. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  200. package/dist/Interfaces/Refunds/index.js +2 -2
  201. package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
  202. package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
  203. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  204. package/dist/Interfaces/Schedule/index.js +2 -2
  205. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  206. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  207. package/dist/Interfaces/Services/IService.d.ts +16 -16
  208. package/dist/Interfaces/Services/IService.js +2 -2
  209. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  210. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  211. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  212. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  213. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  214. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  215. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  216. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  217. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  218. package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
  219. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  220. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  221. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  222. package/dist/Interfaces/Slider/GR.js +271 -271
  223. package/dist/Interfaces/Slider/index.d.ts +30 -30
  224. package/dist/Interfaces/Slider/index.js +2 -2
  225. package/dist/Interfaces/Space/IExternalService.d.ts +54 -54
  226. package/dist/Interfaces/Space/IExternalService.js +45 -45
  227. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  228. package/dist/Interfaces/Space/IMember.js +9 -9
  229. package/dist/Interfaces/Space/index.d.ts +414 -413
  230. package/dist/Interfaces/Space/index.js +176 -175
  231. package/dist/Interfaces/Space/index.js.map +1 -1
  232. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  233. package/dist/Interfaces/Specials/gr.js +2 -2
  234. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  235. package/dist/Interfaces/StockNotification/index.js +2 -2
  236. package/dist/Interfaces/Store/index.d.ts +63 -63
  237. package/dist/Interfaces/Store/index.js +27 -27
  238. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  239. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  240. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  241. package/dist/Interfaces/Supplier/index.js +24 -24
  242. package/dist/Interfaces/TCG/index.d.ts +194 -194
  243. package/dist/Interfaces/TCG/index.js +60 -60
  244. package/dist/Interfaces/Tag/index.d.ts +18 -18
  245. package/dist/Interfaces/Tag/index.js +2 -2
  246. package/dist/Interfaces/Tax/index.d.ts +13 -13
  247. package/dist/Interfaces/Tax/index.js +2 -2
  248. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  249. package/dist/Interfaces/TransferRequest/index.js +46 -46
  250. package/dist/Interfaces/Translation/index.d.ts +8 -8
  251. package/dist/Interfaces/Translation/index.js +5 -5
  252. package/dist/Interfaces/Update/index.d.ts +10 -10
  253. package/dist/Interfaces/Update/index.js +2 -2
  254. package/dist/Interfaces/User/IUser.d.ts +65 -65
  255. package/dist/Interfaces/User/IUser.js +8 -8
  256. package/dist/Interfaces/Version/index.d.ts +11 -11
  257. package/dist/Interfaces/Version/index.js +2 -2
  258. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  259. package/dist/Interfaces/Wishlist/index.js +2 -2
  260. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  261. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  262. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  263. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  264. package/dist/constants/enums.d.ts +6 -6
  265. package/dist/constants/enums.js +10 -10
  266. package/dist/constants/services.d.ts +2 -2
  267. package/dist/constants/services.js +122 -122
  268. package/dist/constants/version.d.ts +2 -2
  269. package/dist/constants/version.js +5 -5
  270. package/dist/index.d.ts +50 -50
  271. package/dist/index.js +266 -266
  272. package/dist/lib/Attribute/index.d.ts +14 -14
  273. package/dist/lib/Attribute/index.js +186 -186
  274. package/dist/lib/BGJob/index.d.ts +9 -9
  275. package/dist/lib/BGJob/index.js +216 -216
  276. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  277. package/dist/lib/BackgroundWorker/index.js +59 -59
  278. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  279. package/dist/lib/Blog/BlogArticle.js +10 -10
  280. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  281. package/dist/lib/Blog/BlogAuthor.js +10 -10
  282. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  283. package/dist/lib/Blog/BlogCategory.js +10 -10
  284. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  285. package/dist/lib/Blog/BlogKeyword.js +10 -10
  286. package/dist/lib/Booking/index.d.ts +85 -85
  287. package/dist/lib/Booking/index.js +596 -596
  288. package/dist/lib/Brand/index.d.ts +26 -26
  289. package/dist/lib/Brand/index.js +131 -131
  290. package/dist/lib/Cart/index.d.ts +354 -354
  291. package/dist/lib/Cart/index.js +4031 -4031
  292. package/dist/lib/CartReservedQuantities/index.d.ts +49 -49
  293. package/dist/lib/CartReservedQuantities/index.js +159 -159
  294. package/dist/lib/CashDrawerShift/index.d.ts +84 -84
  295. package/dist/lib/CashDrawerShift/index.js +206 -206
  296. package/dist/lib/Catalogue/index.d.ts +15 -15
  297. package/dist/lib/Catalogue/index.js +78 -78
  298. package/dist/lib/Category/index.d.ts +34 -34
  299. package/dist/lib/Category/index.js +230 -230
  300. package/dist/lib/Class/index.d.ts +16 -16
  301. package/dist/lib/Class/index.js +66 -66
  302. package/dist/lib/Consent/index.d.ts +4 -4
  303. package/dist/lib/Consent/index.js +29 -29
  304. package/dist/lib/Customer/index.d.ts +30 -30
  305. package/dist/lib/Customer/index.js +92 -92
  306. package/dist/lib/Declination/index.d.ts +9 -9
  307. package/dist/lib/Declination/index.js +26 -26
  308. package/dist/lib/Discount/index.d.ts +27 -27
  309. package/dist/lib/Discount/index.js +493 -493
  310. package/dist/lib/ElasticSearch/index.d.ts +13 -13
  311. package/dist/lib/ElasticSearch/index.js +50 -50
  312. package/dist/lib/Elavon/index.d.ts +18 -18
  313. package/dist/lib/Elavon/index.js +135 -135
  314. package/dist/lib/Email/AbandonedCartEmail.d.ts +16 -16
  315. package/dist/lib/Email/AbandonedCartEmail.js +24 -24
  316. package/dist/lib/Email/AccountConfirmationEmail.d.ts +19 -19
  317. package/dist/lib/Email/AccountConfirmationEmail.js +30 -30
  318. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +16 -16
  319. package/dist/lib/Email/AdminOrderConfirmationEmail.js +24 -24
  320. package/dist/lib/Email/ApplicationEmail.d.ts +16 -16
  321. package/dist/lib/Email/ApplicationEmail.js +24 -24
  322. package/dist/lib/Email/BackInStockEmail.d.ts +16 -16
  323. package/dist/lib/Email/BackInStockEmail.js +24 -24
  324. package/dist/lib/Email/ContactEmail.d.ts +16 -16
  325. package/dist/lib/Email/ContactEmail.js +24 -24
  326. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +16 -16
  327. package/dist/lib/Email/CustomerBookingAdminEmail.js +24 -24
  328. package/dist/lib/Email/CustomerBookingEmail.d.ts +16 -16
  329. package/dist/lib/Email/CustomerBookingEmail.js +24 -24
  330. package/dist/lib/Email/OrderConfirmationEmail.d.ts +16 -16
  331. package/dist/lib/Email/OrderConfirmationEmail.js +24 -24
  332. package/dist/lib/Email/OrderDenounciationEmail.d.ts +16 -16
  333. package/dist/lib/Email/OrderDenounciationEmail.js +24 -24
  334. package/dist/lib/Email/OrderSampleEmail.d.ts +16 -16
  335. package/dist/lib/Email/OrderSampleEmail.js +24 -24
  336. package/dist/lib/Email/OtherTypeEmails.d.ts +16 -16
  337. package/dist/lib/Email/OtherTypeEmails.js +27 -27
  338. package/dist/lib/Email/PasswordResetEmail.d.ts +16 -16
  339. package/dist/lib/Email/PasswordResetEmail.js +24 -24
  340. package/dist/lib/Email/PhotoShootEmail.d.ts +16 -16
  341. package/dist/lib/Email/PhotoShootEmail.js +24 -24
  342. package/dist/lib/Email/PickUpConfirmation.d.ts +16 -16
  343. package/dist/lib/Email/PickUpConfirmation.js +24 -24
  344. package/dist/lib/Email/ShippingConfirmation.d.ts +16 -16
  345. package/dist/lib/Email/ShippingConfirmation.js +24 -24
  346. package/dist/lib/Email/WelcomeEmail.d.ts +16 -16
  347. package/dist/lib/Email/WelcomeEmail.js +24 -24
  348. package/dist/lib/Email/index.d.ts +16 -16
  349. package/dist/lib/Email/index.js +31 -31
  350. package/dist/lib/ExternalService/Ebay.d.ts +74 -74
  351. package/dist/lib/ExternalService/Ebay.js +124 -124
  352. package/dist/lib/ExternalService/index.d.ts +5 -5
  353. package/dist/lib/ExternalService/index.js +10 -10
  354. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  355. package/dist/lib/FirstOrderTracking/index.js +10 -10
  356. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  357. package/dist/lib/Indexed/IndexedCart.js +91 -91
  358. package/dist/lib/Indexed/Product.d.ts +17 -17
  359. package/dist/lib/Indexed/Product.js +98 -98
  360. package/dist/lib/Inventory/index.d.ts +112 -112
  361. package/dist/lib/Inventory/index.js +492 -492
  362. package/dist/lib/Invoice/index.d.ts +16 -16
  363. package/dist/lib/Invoice/index.js +21 -21
  364. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  365. package/dist/lib/MarketplacePublication/index.js +426 -426
  366. package/dist/lib/Menu/index.d.ts +11 -11
  367. package/dist/lib/Menu/index.js +107 -107
  368. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  369. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  370. package/dist/lib/Note/index.d.ts +4 -4
  371. package/dist/lib/Note/index.js +6 -6
  372. package/dist/lib/Order/index.d.ts +27 -27
  373. package/dist/lib/Order/index.js +56 -56
  374. package/dist/lib/Org/index.d.ts +68 -68
  375. package/dist/lib/Org/index.js +216 -216
  376. package/dist/lib/PandaPay/index.d.ts +16 -16
  377. package/dist/lib/PandaPay/index.js +176 -176
  378. package/dist/lib/Paysafe/index.d.ts +11 -11
  379. package/dist/lib/Paysafe/index.js +41 -41
  380. package/dist/lib/Product/index.d.ts +182 -182
  381. package/dist/lib/Product/index.js +847 -847
  382. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  383. package/dist/lib/ProductAttribute/index.js +45 -45
  384. package/dist/lib/PromiseToPurchase/index.d.ts +109 -109
  385. package/dist/lib/PromiseToPurchase/index.js +343 -343
  386. package/dist/lib/PurchaseOrder/index.d.ts +20 -20
  387. package/dist/lib/PurchaseOrder/index.js +28 -28
  388. package/dist/lib/Queue/index.d.ts +40 -40
  389. package/dist/lib/Queue/index.js +254 -254
  390. package/dist/lib/Schedule/index.d.ts +5 -5
  391. package/dist/lib/Schedule/index.js +12 -12
  392. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  393. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  394. package/dist/lib/Service/index.d.ts +13 -13
  395. package/dist/lib/Service/index.js +21 -21
  396. package/dist/lib/Shipment/index.d.ts +28 -28
  397. package/dist/lib/Shipment/index.js +370 -370
  398. package/dist/lib/Slider/index.d.ts +22 -22
  399. package/dist/lib/Slider/index.js +119 -119
  400. package/dist/lib/Space/index.d.ts +1181 -1181
  401. package/dist/lib/Space/index.js +5841 -5841
  402. package/dist/lib/StockNotification/index.d.ts +4 -4
  403. package/dist/lib/StockNotification/index.js +6 -6
  404. package/dist/lib/Store/index.d.ts +5 -5
  405. package/dist/lib/Store/index.js +12 -12
  406. package/dist/lib/Supplier/Command.d.ts +5 -5
  407. package/dist/lib/Supplier/Command.js +10 -10
  408. package/dist/lib/Supplier/index.d.ts +25 -25
  409. package/dist/lib/Supplier/index.js +27 -27
  410. package/dist/lib/Tags/index.d.ts +6 -6
  411. package/dist/lib/Tags/index.js +26 -26
  412. package/dist/lib/Tax/index.d.ts +8 -8
  413. package/dist/lib/Tax/index.js +54 -54
  414. package/dist/lib/TransferRequest/index.d.ts +290 -290
  415. package/dist/lib/TransferRequest/index.js +1026 -1026
  416. package/dist/lib/Update/index.d.ts +10 -10
  417. package/dist/lib/Update/index.js +22 -22
  418. package/dist/lib/User/index.d.ts +89 -89
  419. package/dist/lib/User/index.js +328 -328
  420. package/dist/lib/Wishlist/index.d.ts +5 -5
  421. package/dist/lib/Wishlist/index.js +10 -10
  422. package/dist/lib/base.d.ts +14 -14
  423. package/dist/lib/base.js +62 -62
  424. package/dist/lib/baseService.d.ts +17 -17
  425. package/dist/lib/baseService.js +69 -69
  426. package/dist/rules/ADD/utils/buyback.d.ts +4 -4
  427. package/dist/rules/ADD/utils/buyback.js +135 -135
  428. package/dist/rules/GR/constants/data.d.ts +26 -26
  429. package/dist/rules/GR/constants/data.js +81 -81
  430. package/dist/rules/GR/constants/expedition.d.ts +4 -4
  431. package/dist/rules/GR/constants/expedition.js +9 -9
  432. package/dist/rules/GR/constants/products.d.ts +22 -22
  433. package/dist/rules/GR/constants/products.js +263 -263
  434. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  435. package/dist/rules/GR/interfaces/cart.js +41 -41
  436. package/dist/rules/GR/interfaces/data.d.ts +101 -101
  437. package/dist/rules/GR/interfaces/data.js +114 -114
  438. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  439. package/dist/rules/GR/interfaces/products.js +10 -10
  440. package/dist/rules/GR/utils/cart.d.ts +95 -95
  441. package/dist/rules/GR/utils/cart.js +839 -839
  442. package/dist/rules/GR/utils/data.d.ts +3 -3
  443. package/dist/rules/GR/utils/data.js +28 -28
  444. package/dist/rules/GR/utils/expedition.d.ts +140 -140
  445. package/dist/rules/GR/utils/expedition.js +2016 -2016
  446. package/dist/rules/GR/utils/g2.d.ts +209 -209
  447. package/dist/rules/GR/utils/g2.js +1002 -1002
  448. package/dist/rules/GR/utils/invoices.d.ts +51 -51
  449. package/dist/rules/GR/utils/invoices.js +215 -215
  450. package/dist/rules/GR/utils/products.d.ts +277 -277
  451. package/dist/rules/GR/utils/products.js +1350 -1350
  452. package/dist/rules/GR/utils/upsells.d.ts +111 -111
  453. package/dist/rules/GR/utils/upsells.js +215 -215
  454. package/dist/services/database/BaseProvider.d.ts +29 -29
  455. package/dist/services/database/BaseProvider.js +28 -28
  456. package/dist/services/database/BatchUtils.d.ts +14 -14
  457. package/dist/services/database/BatchUtils.js +43 -43
  458. package/dist/services/database/Config.d.ts +2 -2
  459. package/dist/services/database/Config.js +5 -5
  460. package/dist/services/database/DatabaseService.d.ts +125 -125
  461. package/dist/services/database/DatabaseService.js +237 -237
  462. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  463. package/dist/services/database/FirebaseProvider.js +235 -235
  464. package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
  465. package/dist/services/database/NotFirebaseProvider.js +262 -262
  466. package/dist/services/g2/G2OrderSlip.d.ts +49 -49
  467. package/dist/services/g2/G2OrderSlip.js +228 -228
  468. package/dist/services/g2/utils.d.ts +19 -19
  469. package/dist/services/g2/utils.js +967 -967
  470. package/dist/services/logs/index.d.ts +23 -23
  471. package/dist/services/logs/index.js +66 -66
  472. package/dist/services/marketplace/BaseMarketServiceClass.d.ts +69 -69
  473. package/dist/services/marketplace/BaseMarketServiceClass.js +133 -133
  474. package/dist/services/marketplace/CardtraderServiceClass.d.ts +33 -33
  475. package/dist/services/marketplace/CardtraderServiceClass.js +215 -215
  476. package/dist/services/marketplace/utils.d.ts +17 -17
  477. package/dist/services/marketplace/utils.js +32 -32
  478. package/dist/services/products/BaseClass.d.ts +50 -50
  479. package/dist/services/products/BaseClass.js +66 -66
  480. package/dist/services/products/TCGService.d.ts +32 -32
  481. package/dist/services/products/TCGService.js +555 -555
  482. package/dist/services/products/utils.d.ts +31 -31
  483. package/dist/services/products/utils.js +144 -144
  484. package/dist/utils/algolia.d.ts +46 -46
  485. package/dist/utils/algolia.js +21 -21
  486. package/dist/utils/anonymisation.d.ts +54 -54
  487. package/dist/utils/anonymisation.js +280 -280
  488. package/dist/utils/array.d.ts +5 -5
  489. package/dist/utils/array.js +14 -14
  490. package/dist/utils/aws.d.ts +36 -36
  491. package/dist/utils/aws.js +154 -154
  492. package/dist/utils/booking.d.ts +30 -30
  493. package/dist/utils/booking.js +127 -127
  494. package/dist/utils/cart.d.ts +272 -272
  495. package/dist/utils/cart.js +1169 -1169
  496. package/dist/utils/categories.d.ts +2 -2
  497. package/dist/utils/categories.js +54 -54
  498. package/dist/utils/cmv.d.ts +10 -10
  499. package/dist/utils/cmv.js +107 -107
  500. package/dist/utils/console.d.ts +6 -6
  501. package/dist/utils/console.js +59 -59
  502. package/dist/utils/context.d.ts +20 -20
  503. package/dist/utils/context.js +61 -61
  504. package/dist/utils/currency.d.ts +6 -6
  505. package/dist/utils/currency.js +91 -91
  506. package/dist/utils/data.d.ts +31 -31
  507. package/dist/utils/data.js +296 -296
  508. package/dist/utils/date.d.ts +1 -1
  509. package/dist/utils/date.js +16 -16
  510. package/dist/utils/dimensions.d.ts +3 -3
  511. package/dist/utils/dimensions.js +16 -16
  512. package/dist/utils/discount.d.ts +174 -174
  513. package/dist/utils/discount.js +1118 -1118
  514. package/dist/utils/errors.d.ts +118 -118
  515. package/dist/utils/errors.js +123 -123
  516. package/dist/utils/file-admin.d.ts +8 -8
  517. package/dist/utils/file-admin.js +39 -39
  518. package/dist/utils/file.d.ts +39 -39
  519. package/dist/utils/file.js +208 -208
  520. package/dist/utils/firebase-admin.d.ts +11 -11
  521. package/dist/utils/firebase-admin.js +73 -73
  522. package/dist/utils/firebase.d.ts +58 -58
  523. package/dist/utils/firebase.js +148 -148
  524. package/dist/utils/import.d.ts +1 -1
  525. package/dist/utils/import.js +21 -21
  526. package/dist/utils/inventories.d.ts +101 -101
  527. package/dist/utils/inventories.js +467 -467
  528. package/dist/utils/locale.d.ts +24 -24
  529. package/dist/utils/locale.js +91 -91
  530. package/dist/utils/mailchimp.d.ts +58 -58
  531. package/dist/utils/mailchimp.js +531 -531
  532. package/dist/utils/mathUtils.d.ts +17 -17
  533. package/dist/utils/mathUtils.js +324 -324
  534. package/dist/utils/mongodb.d.ts +1 -1
  535. package/dist/utils/mongodb.js +22 -22
  536. package/dist/utils/object.d.ts +32 -32
  537. package/dist/utils/object.js +133 -133
  538. package/dist/utils/payment.d.ts +10 -10
  539. package/dist/utils/payment.js +23 -23
  540. package/dist/utils/products.d.ts +39 -39
  541. package/dist/utils/products.js +195 -195
  542. package/dist/utils/promiseToPurchase.d.ts +88 -88
  543. package/dist/utils/promiseToPurchase.js +229 -229
  544. package/dist/utils/prosprsearch.d.ts +42 -42
  545. package/dist/utils/prosprsearch.js +216 -216
  546. package/dist/utils/refunds.d.ts +2 -2
  547. package/dist/utils/refunds.js +21 -21
  548. package/dist/utils/sdc.d.ts +10 -10
  549. package/dist/utils/sdc.js +1309 -1309
  550. package/dist/utils/searchIndexes.d.ts +58 -58
  551. package/dist/utils/searchIndexes.js +247 -247
  552. package/dist/utils/services.d.ts +42 -42
  553. package/dist/utils/services.js +409 -409
  554. package/dist/utils/shipment.d.ts +110 -110
  555. package/dist/utils/shipment.js +345 -345
  556. package/dist/utils/simpletexting.d.ts +2 -2
  557. package/dist/utils/simpletexting.js +45 -45
  558. package/dist/utils/sliders.d.ts +4 -4
  559. package/dist/utils/sliders.js +24 -24
  560. package/dist/utils/string.d.ts +16 -16
  561. package/dist/utils/string.js +192 -192
  562. package/dist/utils/tcgService.d.ts +88 -88
  563. package/dist/utils/tcgService.js +408 -408
  564. package/dist/utils/tools.d.ts +5 -5
  565. package/dist/utils/tools.js +13 -13
  566. package/dist/utils/transferRequests.d.ts +43 -43
  567. package/dist/utils/transferRequests.js +67 -67
  568. package/dist/utils/update.d.ts +7 -7
  569. package/dist/utils/update.js +137 -137
  570. package/dist/utils/weight.d.ts +3 -3
  571. package/dist/utils/weight.js +16 -16
  572. package/dist/utils/zones.d.ts +11 -11
  573. package/dist/utils/zones.js +218 -218
  574. package/package.json +107 -107
  575. package/publish.sh +143 -143
  576. package/readme.md +182 -182
@@ -1,494 +1,494 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const console_1 = require("../../utils/console");
7
- const discount_1 = require("../../utils/discount");
8
- const Space_1 = __importDefault(require("../Space"));
9
- const chunk_1 = __importDefault(require("lodash/chunk"));
10
- const baseService_1 = require("../baseService");
11
- const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
12
- const BatchUtils_1 = __importDefault(require("../../services/database/BatchUtils"));
13
- /**
14
- * Brand class
15
- */
16
- class Discount extends baseService_1.BaseServiceClass {
17
- constructor() {
18
- super(...arguments);
19
- /**
20
- * Get the discount properties
21
- */
22
- this.data = () => this._data;
23
- /**
24
- * Spread discount rule to relative object (product, cart or user)
25
- */
26
- this._spread = async () => {
27
- (0, console_1.workingMessage)('Spreading...');
28
- const associations = [];
29
- try {
30
- const association = await this._spreadTo(this.data().appliesTo.label);
31
- associations.push(association);
32
- }
33
- catch (error) {
34
- (0, console_1.errorMessage)(`Can't spread ${this.data().appliesTo.label}`);
35
- throw error;
36
- }
37
- (0, console_1.workingMessage)('Done spreading!');
38
- };
39
- this._unspread = async (label) => {
40
- (0, console_1.workingMessage)('Unspreading...');
41
- console.log('dans le _unspread');
42
- const associations = [];
43
- try {
44
- const association = await this._unspreadTo(!!label ? label : this.data().appliesTo.label);
45
- associations.push(association);
46
- }
47
- catch (error) {
48
- (0, console_1.errorMessage)(`Can't unspread ${this.data().appliesTo.label}`);
49
- throw error;
50
- }
51
- (0, console_1.workingMessage)('Done unspreading!');
52
- };
53
- this._spreadTo = async (typeOfSpread) => {
54
- try {
55
- switch (typeOfSpread) {
56
- case 'allproducts':
57
- return await this._spreadToProducts();
58
- case 'product':
59
- return await this._spreadToProduct();
60
- case 'category':
61
- return await this._spreadToProductCategories();
62
- default:
63
- break;
64
- }
65
- }
66
- catch (error) {
67
- console.log('error: ', error);
68
- }
69
- };
70
- this._unspreadTo = async (typeOfSpread) => {
71
- console.log('dans le _unspreadTo: ', typeOfSpread);
72
- switch (typeOfSpread) {
73
- case 'allproducts':
74
- return await this._unspreadToProducts();
75
- case 'product':
76
- return await this._unspreadToProduct();
77
- case 'category':
78
- console.log('calling unspread to Categories');
79
- return await this._unspreadToCategories();
80
- default:
81
- break;
82
- }
83
- };
84
- this._unspreadToProducts = async () => {
85
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
86
- throw new Error(`Can't access products collection to fetch all products`);
87
- }
88
- try {
89
- const allProducts = await this._fetchProductsByBatch({});
90
- for (let products of (0, chunk_1.default)(allProducts, 100)) {
91
- const batch = new BatchUtils_1.default();
92
- for (const productSnap of products) {
93
- if (!productSnap.exists)
94
- continue;
95
- const productData = productSnap.data;
96
- if (!!!productData)
97
- continue;
98
- if (!!!productData.declinations)
99
- continue;
100
- if (!!!productData.declinations.length)
101
- continue;
102
- const declinations = productData.declinations;
103
- try {
104
- batch.set(productSnap.path, productSnap.id, {
105
- declinations: declinations.map((_declination, _dIndex) => {
106
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
107
- const newDiscountRules = _declination.discount_rules
108
- .filter((_dr) => _dr.id !== this.data().id)
109
- .filter((_dr) => !!_dr);
110
- return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
111
- }
112
- return _declination;
113
- })
114
- }, { merge: true });
115
- }
116
- catch (error) {
117
- throw error;
118
- }
119
- // })
120
- }
121
- try {
122
- await batch.commit();
123
- }
124
- catch (error) {
125
- (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
126
- throw error;
127
- }
128
- }
129
- }
130
- catch (error) {
131
- throw error;
132
- }
133
- };
134
- this._unspreadToProduct = async () => {
135
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
136
- throw new Error(`Can't access products collection to fetch all products`);
137
- }
138
- const productSlug = this.data().appliesTo.value;
139
- const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
140
- if (!!!productSnap.length)
141
- return;
142
- const product = productSnap[0];
143
- if (!product.exists)
144
- return;
145
- if (!!!product)
146
- return;
147
- const productData = product.data;
148
- if (!!!productData)
149
- return;
150
- if (!!!productData.declinations)
151
- return;
152
- const declinations = productData.declinations;
153
- try {
154
- await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
155
- declinations: declinations.map((_declination, _dIndex) => {
156
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
157
- const newDiscountRules = _declination.discount_rules
158
- .filter((_dr) => _dr.id !== this.data().id)
159
- .filter((_dr) => !!_dr);
160
- return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
161
- }
162
- return _declination;
163
- })
164
- }, { merge: true });
165
- }
166
- catch (error) {
167
- throw error;
168
- }
169
- // })
170
- };
171
- this._spreadToProducts = async () => {
172
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
173
- throw new Error(`Can't access products collection to fetch all products`);
174
- }
175
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
176
- if (!!!space)
177
- return;
178
- try {
179
- const allProducts = await this._fetchProductsByBatch();
180
- for (let products of (0, chunk_1.default)(allProducts, 100)) {
181
- const batch = new BatchUtils_1.default();
182
- for (const productSnap of products) {
183
- if (!productSnap.exists)
184
- continue;
185
- const productData = productSnap.data;
186
- if (!!!productData)
187
- continue;
188
- if (!!!productData.declinations)
189
- continue;
190
- if (!!!productData.declinations.length)
191
- continue;
192
- const declinations = productData.declinations;
193
- const declinationsToAddDiscount = declinations
194
- .filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination))
195
- .map((d) => d.sku);
196
- const isSameSku = (sku) => {
197
- return !!declinationsToAddDiscount.some((aSku) => !!aSku && !!sku && aSku.toLowerCase().trim() === sku.toLowerCase().trim());
198
- };
199
- // declinations.forEach((_, dIndex) => {
200
- try {
201
- batch.set(productSnap.path, productSnap.id, {
202
- declinations: declinations.map((_declination, _dIndex) => {
203
- // if (dIndex !== _dIndex) return _declination
204
- if (_declination.discount_rules.some((_dr) => _dr.id === this.data().id))
205
- return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
206
- .map((_dr) => {
207
- if (_dr.id !== this.data().id)
208
- return _dr;
209
- if (!!isSameSku(_declination.sku)) {
210
- if (!!!this.data().draft)
211
- return this.data();
212
- }
213
- return undefined;
214
- })
215
- .filter((_dr) => !!_dr) });
216
- return Object.assign(Object.assign({}, _declination), { discount_rules: [
217
- ..._declination.discount_rules,
218
- ...(!!isSameSku(_declination.sku) ? [this.data()] : [])
219
- ] });
220
- })
221
- }, { merge: true });
222
- }
223
- catch (error) {
224
- console.log('error dans le catch: ', error);
225
- throw error;
226
- }
227
- // })
228
- }
229
- try {
230
- await batch.commit();
231
- }
232
- catch (error) {
233
- (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
234
- throw error;
235
- }
236
- }
237
- console.log(`Batch is done`);
238
- }
239
- catch (error) {
240
- throw error;
241
- }
242
- };
243
- this._spreadToProduct = async () => {
244
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
245
- throw new Error(`Can't access products collection to fetch all products`);
246
- }
247
- const productSlug = this.data().appliesTo.value;
248
- const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
249
- if (!!!productSnap.length)
250
- return;
251
- const product = productSnap[0];
252
- if (!product.exists)
253
- return;
254
- if (!!!product)
255
- return;
256
- const productData = product.data;
257
- if (!!!productData)
258
- return;
259
- if (!!!productData.declinations)
260
- return;
261
- const declinations = productData.declinations;
262
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
263
- if (!!!space)
264
- return;
265
- const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination));
266
- // declinationsToAddDiscount.forEach((_, dIndex) => {
267
- try {
268
- await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
269
- declinations: declinations.map((_declination, _dIndex) => {
270
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
271
- return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
272
- .map((_dr) => {
273
- if (_dr.id !== this.data().id)
274
- return _dr;
275
- if (!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
276
- if (!!this.data().draft)
277
- return undefined;
278
- return this.data();
279
- }
280
- return undefined;
281
- })
282
- .filter((_dr) => !!_dr) });
283
- return Object.assign(Object.assign({}, _declination), { discount_rules: [
284
- ..._declination.discount_rules,
285
- ...(!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
286
- ? [this.data()]
287
- : [])
288
- ] });
289
- })
290
- }, { merge: true });
291
- }
292
- catch (error) {
293
- throw error;
294
- }
295
- // })
296
- };
297
- this._spreadToProductCategories = async () => {
298
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
299
- throw new Error(`Can't access products collection to fetch all products`);
300
- }
301
- const discountData = this.data();
302
- if (!!!discountData)
303
- return;
304
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
305
- if (!!!space)
306
- return;
307
- try {
308
- const allProducts = await this._fetchProductsByBatch({
309
- queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
310
- });
311
- for (let products of (0, chunk_1.default)(allProducts, 20)) {
312
- const batch = new BatchUtils_1.default();
313
- for (const productSnap of products) {
314
- if (!productSnap.exists)
315
- continue;
316
- const productData = productSnap.data;
317
- if (!!!productData)
318
- continue;
319
- if (!!!productData.category)
320
- continue;
321
- if (!!!productData.declinations)
322
- continue;
323
- if (!!!productData.declinations.length)
324
- continue;
325
- const declinations = productData.declinations;
326
- // Puisque l'option "produit parent" est seulement existant si catégorie est sélectionné,
327
- // isoler les produits applicables ou qui ont la règle de prix déjà appliqué pour vérirication.
328
- // Si non-appliquable, skip la vérification pour éviter une sauvegarde inutile du produit
329
- if (!!discountData.rules && !!discountData.rules.length) {
330
- const rulesOnProduct = discountData.rules.filter((rule) => rule.field === 'product');
331
- if (!!rulesOnProduct.length) {
332
- const isProductSlugFoundInADiscountRule = rulesOnProduct.some((rule) => rule.ruleDetails.some((ruleDetail) => {
333
- return ruleDetail.operator == '=='
334
- ? ruleDetail.value.includes(productData.slug)
335
- : !ruleDetail.value.includes(productData.slug);
336
- }));
337
- const isRuleCurrentlyAppliedToDeclinations = declinations.some((decli) => (decli.discount_rules || []).some((rule) => rule.id == discountData.id));
338
- if (!isProductSlugFoundInADiscountRule && !isRuleCurrentlyAppliedToDeclinations)
339
- continue;
340
- }
341
- }
342
- const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination, productData.slug));
343
- try {
344
- batch.set(productSnap.path, productSnap.id, {
345
- declinations: declinations.map((_declination, _dIndex) => {
346
- if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
347
- return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
348
- .map((_dr) => {
349
- if (_dr.id !== this.data().id)
350
- return _dr;
351
- if (!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
352
- if (!!this.data().draft)
353
- return undefined;
354
- return this.data();
355
- }
356
- return undefined;
357
- })
358
- .filter((_dr) => !!_dr) });
359
- return Object.assign(Object.assign({}, _declination), { discount_rules: [
360
- ..._declination.discount_rules,
361
- ...(!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
362
- ? [this.data()]
363
- : [])
364
- ] });
365
- })
366
- }, { merge: true });
367
- }
368
- catch (error) {
369
- throw error;
370
- }
371
- }
372
- try {
373
- await batch.commit();
374
- }
375
- catch (error) {
376
- (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
377
- throw error;
378
- }
379
- }
380
- }
381
- catch (error) {
382
- throw error;
383
- }
384
- };
385
- this._unspreadToCategories = async () => {
386
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
387
- console.log('path is /, returning');
388
- throw new Error(`Can't access products collection to fetch all categories`);
389
- }
390
- const discountData = this.data();
391
- if (!!!discountData) {
392
- console.log('no discount data! Returning');
393
- return;
394
- }
395
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
396
- if (!!!space) {
397
- console.log('no space! returning');
398
- return;
399
- }
400
- try {
401
- const allProducts = await this._fetchProductsByBatch({
402
- queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
403
- });
404
- if (!!!allProducts.length) {
405
- console.log('no products with category found, returning!');
406
- return;
407
- }
408
- for (let products of (0, chunk_1.default)(allProducts, 20)) {
409
- const batch = new BatchUtils_1.default();
410
- for (const productSnap of products) {
411
- if (!productSnap.exists)
412
- continue;
413
- const productData = productSnap.data;
414
- if (!!!productData)
415
- continue;
416
- if (!!!productData.category)
417
- continue;
418
- if (!!!productData.declinations)
419
- continue;
420
- if (!!!productData.declinations.length)
421
- continue;
422
- const declinations = productData.declinations;
423
- // Vérifier si la règle de prix est déjà appliquée sur la déclinaison.
424
- // Si non, skip la vérification pour éviter une sauvegarde superflue en BD.
425
- const isRuleAlreadyInDecli = declinations.some((d) => (d.discount_rules || []).some((d) => d.id == discountData.id));
426
- if (!isRuleAlreadyInDecli)
427
- continue;
428
- try {
429
- batch.set(productSnap.path, productSnap.id, {
430
- declinations: declinations.map((_declination, _dIndex) => {
431
- if (!!_declination.discount_rules.some((_dr) => _dr.id === this.data().id)) {
432
- const newDiscountRules = _declination.discount_rules
433
- .filter((_dr) => _dr.id !== this.data().id)
434
- .filter((_dr) => !!_dr);
435
- return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
436
- }
437
- return _declination;
438
- })
439
- }, { merge: true });
440
- }
441
- catch (error) {
442
- throw error;
443
- }
444
- }
445
- try {
446
- await batch.commit();
447
- }
448
- catch (error) {
449
- (0, console_1.errorMessage)(`Error while commiting products unspread: ${error} - ${JSON.stringify(error)}`);
450
- throw error;
451
- }
452
- }
453
- }
454
- catch (error) {
455
- throw error;
456
- }
457
- };
458
- this._fetchProductsByBatch = async (props) => {
459
- let allProducts = [];
460
- let lastID = '';
461
- const fetchProductLimit = 50;
462
- const fetchProducts = async (lastID) => {
463
- const result = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), Object.assign(Object.assign({ orderBy: !!props && !!props.orderByField ? props.orderByField : 'id', limit: !!props && !!props.fetchLimit ? props.fetchLimit : 50 }, (!!lastID ? { startAfter: lastID } : {})), (!!props && !!props.queryToApply ? { query: props.queryToApply } : {})));
464
- return result;
465
- };
466
- try {
467
- while (true) {
468
- const result = await fetchProducts(lastID);
469
- allProducts.push(...result);
470
- if (!!result.length) {
471
- const lastEntryData = result[result.length - 1].data;
472
- if (!!!lastEntryData || !!!lastEntryData.id) {
473
- console.log('cannot continue checks for bulk fetch, last entry has no data or no id. Returning found entries up to this point.');
474
- break;
475
- }
476
- lastID = lastEntryData.id;
477
- }
478
- if (result.length < fetchProductLimit)
479
- break;
480
- }
481
- }
482
- catch (e) {
483
- console.log('error on fetching products with category: ', e);
484
- }
485
- return allProducts;
486
- };
487
- //#region GETTERS
488
- this.spread = this._spread;
489
- this.unspread = this._unspread;
490
- //#endregion
491
- }
492
- }
493
- exports.default = Discount;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const console_1 = require("../../utils/console");
7
+ const discount_1 = require("../../utils/discount");
8
+ const Space_1 = __importDefault(require("../Space"));
9
+ const chunk_1 = __importDefault(require("lodash/chunk"));
10
+ const baseService_1 = require("../baseService");
11
+ const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
12
+ const BatchUtils_1 = __importDefault(require("../../services/database/BatchUtils"));
13
+ /**
14
+ * Brand class
15
+ */
16
+ class Discount extends baseService_1.BaseServiceClass {
17
+ constructor() {
18
+ super(...arguments);
19
+ /**
20
+ * Get the discount properties
21
+ */
22
+ this.data = () => this._data;
23
+ /**
24
+ * Spread discount rule to relative object (product, cart or user)
25
+ */
26
+ this._spread = async () => {
27
+ (0, console_1.workingMessage)('Spreading...');
28
+ const associations = [];
29
+ try {
30
+ const association = await this._spreadTo(this.data().appliesTo.label);
31
+ associations.push(association);
32
+ }
33
+ catch (error) {
34
+ (0, console_1.errorMessage)(`Can't spread ${this.data().appliesTo.label}`);
35
+ throw error;
36
+ }
37
+ (0, console_1.workingMessage)('Done spreading!');
38
+ };
39
+ this._unspread = async (label) => {
40
+ (0, console_1.workingMessage)('Unspreading...');
41
+ console.log('dans le _unspread');
42
+ const associations = [];
43
+ try {
44
+ const association = await this._unspreadTo(!!label ? label : this.data().appliesTo.label);
45
+ associations.push(association);
46
+ }
47
+ catch (error) {
48
+ (0, console_1.errorMessage)(`Can't unspread ${this.data().appliesTo.label}`);
49
+ throw error;
50
+ }
51
+ (0, console_1.workingMessage)('Done unspreading!');
52
+ };
53
+ this._spreadTo = async (typeOfSpread) => {
54
+ try {
55
+ switch (typeOfSpread) {
56
+ case 'allproducts':
57
+ return await this._spreadToProducts();
58
+ case 'product':
59
+ return await this._spreadToProduct();
60
+ case 'category':
61
+ return await this._spreadToProductCategories();
62
+ default:
63
+ break;
64
+ }
65
+ }
66
+ catch (error) {
67
+ console.log('error: ', error);
68
+ }
69
+ };
70
+ this._unspreadTo = async (typeOfSpread) => {
71
+ console.log('dans le _unspreadTo: ', typeOfSpread);
72
+ switch (typeOfSpread) {
73
+ case 'allproducts':
74
+ return await this._unspreadToProducts();
75
+ case 'product':
76
+ return await this._unspreadToProduct();
77
+ case 'category':
78
+ console.log('calling unspread to Categories');
79
+ return await this._unspreadToCategories();
80
+ default:
81
+ break;
82
+ }
83
+ };
84
+ this._unspreadToProducts = async () => {
85
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
86
+ throw new Error(`Can't access products collection to fetch all products`);
87
+ }
88
+ try {
89
+ const allProducts = await this._fetchProductsByBatch({});
90
+ for (let products of (0, chunk_1.default)(allProducts, 100)) {
91
+ const batch = new BatchUtils_1.default();
92
+ for (const productSnap of products) {
93
+ if (!productSnap.exists)
94
+ continue;
95
+ const productData = productSnap.data;
96
+ if (!!!productData)
97
+ continue;
98
+ if (!!!productData.declinations)
99
+ continue;
100
+ if (!!!productData.declinations.length)
101
+ continue;
102
+ const declinations = productData.declinations;
103
+ try {
104
+ batch.set(productSnap.path, productSnap.id, {
105
+ declinations: declinations.map((_declination, _dIndex) => {
106
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
107
+ const newDiscountRules = _declination.discount_rules
108
+ .filter((_dr) => _dr.id !== this.data().id)
109
+ .filter((_dr) => !!_dr);
110
+ return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
111
+ }
112
+ return _declination;
113
+ })
114
+ }, { merge: true });
115
+ }
116
+ catch (error) {
117
+ throw error;
118
+ }
119
+ // })
120
+ }
121
+ try {
122
+ await batch.commit();
123
+ }
124
+ catch (error) {
125
+ (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
126
+ throw error;
127
+ }
128
+ }
129
+ }
130
+ catch (error) {
131
+ throw error;
132
+ }
133
+ };
134
+ this._unspreadToProduct = async () => {
135
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
136
+ throw new Error(`Can't access products collection to fetch all products`);
137
+ }
138
+ const productSlug = this.data().appliesTo.value;
139
+ const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
140
+ if (!!!productSnap.length)
141
+ return;
142
+ const product = productSnap[0];
143
+ if (!product.exists)
144
+ return;
145
+ if (!!!product)
146
+ return;
147
+ const productData = product.data;
148
+ if (!!!productData)
149
+ return;
150
+ if (!!!productData.declinations)
151
+ return;
152
+ const declinations = productData.declinations;
153
+ try {
154
+ await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
155
+ declinations: declinations.map((_declination, _dIndex) => {
156
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
157
+ const newDiscountRules = _declination.discount_rules
158
+ .filter((_dr) => _dr.id !== this.data().id)
159
+ .filter((_dr) => !!_dr);
160
+ return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
161
+ }
162
+ return _declination;
163
+ })
164
+ }, { merge: true });
165
+ }
166
+ catch (error) {
167
+ throw error;
168
+ }
169
+ // })
170
+ };
171
+ this._spreadToProducts = async () => {
172
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
173
+ throw new Error(`Can't access products collection to fetch all products`);
174
+ }
175
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
176
+ if (!!!space)
177
+ return;
178
+ try {
179
+ const allProducts = await this._fetchProductsByBatch();
180
+ for (let products of (0, chunk_1.default)(allProducts, 100)) {
181
+ const batch = new BatchUtils_1.default();
182
+ for (const productSnap of products) {
183
+ if (!productSnap.exists)
184
+ continue;
185
+ const productData = productSnap.data;
186
+ if (!!!productData)
187
+ continue;
188
+ if (!!!productData.declinations)
189
+ continue;
190
+ if (!!!productData.declinations.length)
191
+ continue;
192
+ const declinations = productData.declinations;
193
+ const declinationsToAddDiscount = declinations
194
+ .filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination))
195
+ .map((d) => d.sku);
196
+ const isSameSku = (sku) => {
197
+ return !!declinationsToAddDiscount.some((aSku) => !!aSku && !!sku && aSku.toLowerCase().trim() === sku.toLowerCase().trim());
198
+ };
199
+ // declinations.forEach((_, dIndex) => {
200
+ try {
201
+ batch.set(productSnap.path, productSnap.id, {
202
+ declinations: declinations.map((_declination, _dIndex) => {
203
+ // if (dIndex !== _dIndex) return _declination
204
+ if (_declination.discount_rules.some((_dr) => _dr.id === this.data().id))
205
+ return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
206
+ .map((_dr) => {
207
+ if (_dr.id !== this.data().id)
208
+ return _dr;
209
+ if (!!isSameSku(_declination.sku)) {
210
+ if (!!!this.data().draft)
211
+ return this.data();
212
+ }
213
+ return undefined;
214
+ })
215
+ .filter((_dr) => !!_dr) });
216
+ return Object.assign(Object.assign({}, _declination), { discount_rules: [
217
+ ..._declination.discount_rules,
218
+ ...(!!isSameSku(_declination.sku) ? [this.data()] : [])
219
+ ] });
220
+ })
221
+ }, { merge: true });
222
+ }
223
+ catch (error) {
224
+ console.log('error dans le catch: ', error);
225
+ throw error;
226
+ }
227
+ // })
228
+ }
229
+ try {
230
+ await batch.commit();
231
+ }
232
+ catch (error) {
233
+ (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
234
+ throw error;
235
+ }
236
+ }
237
+ console.log(`Batch is done`);
238
+ }
239
+ catch (error) {
240
+ throw error;
241
+ }
242
+ };
243
+ this._spreadToProduct = async () => {
244
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
245
+ throw new Error(`Can't access products collection to fetch all products`);
246
+ }
247
+ const productSlug = this.data().appliesTo.value;
248
+ const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
249
+ if (!!!productSnap.length)
250
+ return;
251
+ const product = productSnap[0];
252
+ if (!product.exists)
253
+ return;
254
+ if (!!!product)
255
+ return;
256
+ const productData = product.data;
257
+ if (!!!productData)
258
+ return;
259
+ if (!!!productData.declinations)
260
+ return;
261
+ const declinations = productData.declinations;
262
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
263
+ if (!!!space)
264
+ return;
265
+ const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination));
266
+ // declinationsToAddDiscount.forEach((_, dIndex) => {
267
+ try {
268
+ await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
269
+ declinations: declinations.map((_declination, _dIndex) => {
270
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
271
+ return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
272
+ .map((_dr) => {
273
+ if (_dr.id !== this.data().id)
274
+ return _dr;
275
+ if (!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
276
+ if (!!this.data().draft)
277
+ return undefined;
278
+ return this.data();
279
+ }
280
+ return undefined;
281
+ })
282
+ .filter((_dr) => !!_dr) });
283
+ return Object.assign(Object.assign({}, _declination), { discount_rules: [
284
+ ..._declination.discount_rules,
285
+ ...(!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
286
+ ? [this.data()]
287
+ : [])
288
+ ] });
289
+ })
290
+ }, { merge: true });
291
+ }
292
+ catch (error) {
293
+ throw error;
294
+ }
295
+ // })
296
+ };
297
+ this._spreadToProductCategories = async () => {
298
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
299
+ throw new Error(`Can't access products collection to fetch all products`);
300
+ }
301
+ const discountData = this.data();
302
+ if (!!!discountData)
303
+ return;
304
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
305
+ if (!!!space)
306
+ return;
307
+ try {
308
+ const allProducts = await this._fetchProductsByBatch({
309
+ queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
310
+ });
311
+ for (let products of (0, chunk_1.default)(allProducts, 20)) {
312
+ const batch = new BatchUtils_1.default();
313
+ for (const productSnap of products) {
314
+ if (!productSnap.exists)
315
+ continue;
316
+ const productData = productSnap.data;
317
+ if (!!!productData)
318
+ continue;
319
+ if (!!!productData.category)
320
+ continue;
321
+ if (!!!productData.declinations)
322
+ continue;
323
+ if (!!!productData.declinations.length)
324
+ continue;
325
+ const declinations = productData.declinations;
326
+ // Puisque l'option "produit parent" est seulement existant si catégorie est sélectionné,
327
+ // isoler les produits applicables ou qui ont la règle de prix déjà appliqué pour vérirication.
328
+ // Si non-appliquable, skip la vérification pour éviter une sauvegarde inutile du produit
329
+ if (!!discountData.rules && !!discountData.rules.length) {
330
+ const rulesOnProduct = discountData.rules.filter((rule) => rule.field === 'product');
331
+ if (!!rulesOnProduct.length) {
332
+ const isProductSlugFoundInADiscountRule = rulesOnProduct.some((rule) => rule.ruleDetails.some((ruleDetail) => {
333
+ return ruleDetail.operator == '=='
334
+ ? ruleDetail.value.includes(productData.slug)
335
+ : !ruleDetail.value.includes(productData.slug);
336
+ }));
337
+ const isRuleCurrentlyAppliedToDeclinations = declinations.some((decli) => (decli.discount_rules || []).some((rule) => rule.id == discountData.id));
338
+ if (!isProductSlugFoundInADiscountRule && !isRuleCurrentlyAppliedToDeclinations)
339
+ continue;
340
+ }
341
+ }
342
+ const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination, productData.slug));
343
+ try {
344
+ batch.set(productSnap.path, productSnap.id, {
345
+ declinations: declinations.map((_declination, _dIndex) => {
346
+ if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
347
+ return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
348
+ .map((_dr) => {
349
+ if (_dr.id !== this.data().id)
350
+ return _dr;
351
+ if (!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
352
+ if (!!this.data().draft)
353
+ return undefined;
354
+ return this.data();
355
+ }
356
+ return undefined;
357
+ })
358
+ .filter((_dr) => !!_dr) });
359
+ return Object.assign(Object.assign({}, _declination), { discount_rules: [
360
+ ..._declination.discount_rules,
361
+ ...(!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
362
+ ? [this.data()]
363
+ : [])
364
+ ] });
365
+ })
366
+ }, { merge: true });
367
+ }
368
+ catch (error) {
369
+ throw error;
370
+ }
371
+ }
372
+ try {
373
+ await batch.commit();
374
+ }
375
+ catch (error) {
376
+ (0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
377
+ throw error;
378
+ }
379
+ }
380
+ }
381
+ catch (error) {
382
+ throw error;
383
+ }
384
+ };
385
+ this._unspreadToCategories = async () => {
386
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
387
+ console.log('path is /, returning');
388
+ throw new Error(`Can't access products collection to fetch all categories`);
389
+ }
390
+ const discountData = this.data();
391
+ if (!!!discountData) {
392
+ console.log('no discount data! Returning');
393
+ return;
394
+ }
395
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
396
+ if (!!!space) {
397
+ console.log('no space! returning');
398
+ return;
399
+ }
400
+ try {
401
+ const allProducts = await this._fetchProductsByBatch({
402
+ queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
403
+ });
404
+ if (!!!allProducts.length) {
405
+ console.log('no products with category found, returning!');
406
+ return;
407
+ }
408
+ for (let products of (0, chunk_1.default)(allProducts, 20)) {
409
+ const batch = new BatchUtils_1.default();
410
+ for (const productSnap of products) {
411
+ if (!productSnap.exists)
412
+ continue;
413
+ const productData = productSnap.data;
414
+ if (!!!productData)
415
+ continue;
416
+ if (!!!productData.category)
417
+ continue;
418
+ if (!!!productData.declinations)
419
+ continue;
420
+ if (!!!productData.declinations.length)
421
+ continue;
422
+ const declinations = productData.declinations;
423
+ // Vérifier si la règle de prix est déjà appliquée sur la déclinaison.
424
+ // Si non, skip la vérification pour éviter une sauvegarde superflue en BD.
425
+ const isRuleAlreadyInDecli = declinations.some((d) => (d.discount_rules || []).some((d) => d.id == discountData.id));
426
+ if (!isRuleAlreadyInDecli)
427
+ continue;
428
+ try {
429
+ batch.set(productSnap.path, productSnap.id, {
430
+ declinations: declinations.map((_declination, _dIndex) => {
431
+ if (!!_declination.discount_rules.some((_dr) => _dr.id === this.data().id)) {
432
+ const newDiscountRules = _declination.discount_rules
433
+ .filter((_dr) => _dr.id !== this.data().id)
434
+ .filter((_dr) => !!_dr);
435
+ return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
436
+ }
437
+ return _declination;
438
+ })
439
+ }, { merge: true });
440
+ }
441
+ catch (error) {
442
+ throw error;
443
+ }
444
+ }
445
+ try {
446
+ await batch.commit();
447
+ }
448
+ catch (error) {
449
+ (0, console_1.errorMessage)(`Error while commiting products unspread: ${error} - ${JSON.stringify(error)}`);
450
+ throw error;
451
+ }
452
+ }
453
+ }
454
+ catch (error) {
455
+ throw error;
456
+ }
457
+ };
458
+ this._fetchProductsByBatch = async (props) => {
459
+ let allProducts = [];
460
+ let lastID = '';
461
+ const fetchProductLimit = 50;
462
+ const fetchProducts = async (lastID) => {
463
+ const result = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), Object.assign(Object.assign({ orderBy: !!props && !!props.orderByField ? props.orderByField : 'id', limit: !!props && !!props.fetchLimit ? props.fetchLimit : 50 }, (!!lastID ? { startAfter: lastID } : {})), (!!props && !!props.queryToApply ? { query: props.queryToApply } : {})));
464
+ return result;
465
+ };
466
+ try {
467
+ while (true) {
468
+ const result = await fetchProducts(lastID);
469
+ allProducts.push(...result);
470
+ if (!!result.length) {
471
+ const lastEntryData = result[result.length - 1].data;
472
+ if (!!!lastEntryData || !!!lastEntryData.id) {
473
+ console.log('cannot continue checks for bulk fetch, last entry has no data or no id. Returning found entries up to this point.');
474
+ break;
475
+ }
476
+ lastID = lastEntryData.id;
477
+ }
478
+ if (result.length < fetchProductLimit)
479
+ break;
480
+ }
481
+ }
482
+ catch (e) {
483
+ console.log('error on fetching products with category: ', e);
484
+ }
485
+ return allProducts;
486
+ };
487
+ //#region GETTERS
488
+ this.spread = this._spread;
489
+ this.unspread = this._unspread;
490
+ //#endregion
491
+ }
492
+ }
493
+ exports.default = Discount;
494
494
  //# sourceMappingURL=index.js.map