addio-admin-sdk 1.7.162 → 1.7.163

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/.claude/settings.local.json +7 -0
  3. package/.env +14 -0
  4. package/.env.dev +14 -14
  5. package/.github/workflows/run_unit_test.yaml +48 -48
  6. package/addio-sdk-doc.md +1473 -1473
  7. package/changelog.md +564 -564
  8. package/dist/Interfaces/Address/index.d.ts +21 -21
  9. package/dist/Interfaces/Address/index.js +16 -16
  10. package/dist/Interfaces/Algolia/index.d.ts +180 -180
  11. package/dist/Interfaces/Algolia/index.js +2 -2
  12. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  13. package/dist/Interfaces/Attachement/index.js +2 -2
  14. package/dist/Interfaces/Attribute/index.d.ts +53 -53
  15. package/dist/Interfaces/Attribute/index.js +10 -10
  16. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  17. package/dist/Interfaces/BGJob/index.js +25 -25
  18. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  19. package/dist/Interfaces/BaseClass/index.js +2 -2
  20. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  21. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  22. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  23. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  24. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  25. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  26. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  27. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  28. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  29. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  30. package/dist/Interfaces/Booking/index.d.ts +74 -74
  31. package/dist/Interfaces/Booking/index.js +17 -17
  32. package/dist/Interfaces/Brand/index.d.ts +15 -15
  33. package/dist/Interfaces/Brand/index.js +2 -2
  34. package/dist/Interfaces/CMS/index.d.ts +28 -28
  35. package/dist/Interfaces/CMS/index.js +5 -5
  36. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  37. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  38. package/dist/Interfaces/Cart/IMarketPayload.d.ts +12 -12
  39. package/dist/Interfaces/Cart/IMarketPayload.js +2 -2
  40. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  41. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  42. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  43. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  44. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  45. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  46. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  47. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  48. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  49. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  50. package/dist/Interfaces/Cart/index.d.ts +451 -451
  51. package/dist/Interfaces/Cart/index.js +216 -216
  52. package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
  53. package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
  54. package/dist/Interfaces/CashDrawers/index.d.ts +38 -38
  55. package/dist/Interfaces/CashDrawers/index.js +19 -19
  56. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  57. package/dist/Interfaces/Catalogue/index.js +37 -37
  58. package/dist/Interfaces/Category/index.d.ts +33 -33
  59. package/dist/Interfaces/Category/index.js +2 -2
  60. package/dist/Interfaces/Chart/index.d.ts +11 -11
  61. package/dist/Interfaces/Chart/index.js +2 -2
  62. package/dist/Interfaces/Class/index.d.ts +8 -8
  63. package/dist/Interfaces/Class/index.js +2 -2
  64. package/dist/Interfaces/Consent/index.d.ts +6 -6
  65. package/dist/Interfaces/Consent/index.js +2 -2
  66. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  67. package/dist/Interfaces/Context/IContextProps.js +2 -2
  68. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  69. package/dist/Interfaces/Context/IContextState.js +2 -2
  70. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  71. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  72. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  73. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  74. package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
  75. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  76. package/dist/Interfaces/Customer/index.d.ts +104 -104
  77. package/dist/Interfaces/Customer/index.js +148 -148
  78. package/dist/Interfaces/Declination/index.d.ts +117 -117
  79. package/dist/Interfaces/Declination/index.js +66 -66
  80. package/dist/Interfaces/Document/index.d.ts +8 -8
  81. package/dist/Interfaces/Document/index.js +2 -2
  82. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  83. package/dist/Interfaces/Elastic/index.js +2 -2
  84. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  85. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  86. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  87. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  88. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  89. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  90. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  91. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  92. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  93. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  94. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  95. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  96. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  97. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  98. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  99. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  100. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  101. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  102. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  103. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  104. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  105. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  106. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  107. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  108. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  109. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  110. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  111. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  112. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  113. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  114. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  115. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  116. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  117. package/dist/Interfaces/Email/IEmail.js +60 -60
  118. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  119. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  120. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  121. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  122. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  123. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  124. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  125. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  126. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  127. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  128. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  129. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  130. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  131. package/dist/Interfaces/ExportSchema/index.js +2 -2
  132. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  133. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  134. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  135. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  136. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  137. package/dist/Interfaces/ExternalService/index.js +2 -2
  138. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  139. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  140. package/dist/Interfaces/G2/index.d.ts +556 -556
  141. package/dist/Interfaces/G2/index.js +38 -38
  142. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  143. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  144. package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
  145. package/dist/Interfaces/Indexed/Product/index.js +253 -253
  146. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  147. package/dist/Interfaces/Inventory/index.js +8 -8
  148. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  149. package/dist/Interfaces/Invoice/index.js +2 -2
  150. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  151. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  152. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  153. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  154. package/dist/Interfaces/Menu/index.d.ts +40 -40
  155. package/dist/Interfaces/Menu/index.js +16 -16
  156. package/dist/Interfaces/Note/index.d.ts +10 -10
  157. package/dist/Interfaces/Note/index.js +7 -7
  158. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  159. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  160. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  161. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  162. package/dist/Interfaces/Order/index.d.ts +4 -4
  163. package/dist/Interfaces/Order/index.js +2 -2
  164. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  165. package/dist/Interfaces/Org/IRelUser.js +2 -2
  166. package/dist/Interfaces/Org/index.d.ts +29 -29
  167. package/dist/Interfaces/Org/index.js +12 -12
  168. package/dist/Interfaces/Payment/index.d.ts +26 -26
  169. package/dist/Interfaces/Payment/index.js +14 -14
  170. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  171. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  172. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  173. package/dist/Interfaces/Product/IImportProduct.js +882 -882
  174. package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
  175. package/dist/Interfaces/Product/IInventoryItem.js +38 -38
  176. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  177. package/dist/Interfaces/Product/IPricing.js +180 -180
  178. package/dist/Interfaces/Product/index.d.ts +137 -137
  179. package/dist/Interfaces/Product/index.js +64 -64
  180. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  181. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  182. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  183. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  184. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  185. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  186. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  187. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  188. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  189. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  190. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  191. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  192. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  193. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  194. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  195. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  196. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  197. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  198. package/dist/Interfaces/Quote/index.d.ts +5 -5
  199. package/dist/Interfaces/Quote/index.js +2 -2
  200. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  201. package/dist/Interfaces/Refunds/index.js +2 -2
  202. package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
  203. package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
  204. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  205. package/dist/Interfaces/Schedule/index.js +2 -2
  206. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  207. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  208. package/dist/Interfaces/Services/IService.d.ts +16 -16
  209. package/dist/Interfaces/Services/IService.js +2 -2
  210. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  211. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  212. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  213. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  214. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  215. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  216. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  217. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  218. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  219. package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
  220. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  221. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  222. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  223. package/dist/Interfaces/Slider/GR.js +271 -271
  224. package/dist/Interfaces/Slider/index.d.ts +30 -30
  225. package/dist/Interfaces/Slider/index.js +2 -2
  226. package/dist/Interfaces/Space/IExternalService.d.ts +53 -53
  227. package/dist/Interfaces/Space/IExternalService.js +44 -44
  228. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  229. package/dist/Interfaces/Space/IMember.js +9 -9
  230. package/dist/Interfaces/Space/index.d.ts +411 -411
  231. package/dist/Interfaces/Space/index.js +174 -174
  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 +169 -169
  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 +117 -117
  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 +335 -335
  291. package/dist/lib/Cart/index.js +3981 -3981
  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/Schedule/index.d.ts +5 -5
  389. package/dist/lib/Schedule/index.js +12 -12
  390. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  391. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  392. package/dist/lib/Service/index.d.ts +13 -13
  393. package/dist/lib/Service/index.js +21 -21
  394. package/dist/lib/Shipment/index.d.ts +28 -28
  395. package/dist/lib/Shipment/index.js +370 -370
  396. package/dist/lib/Slider/index.d.ts +22 -22
  397. package/dist/lib/Slider/index.js +119 -119
  398. package/dist/lib/Space/index.d.ts +1181 -1181
  399. package/dist/lib/Space/index.js +5841 -5841
  400. package/dist/lib/StockNotification/index.d.ts +4 -4
  401. package/dist/lib/StockNotification/index.js +6 -6
  402. package/dist/lib/Store/index.d.ts +5 -5
  403. package/dist/lib/Store/index.js +12 -12
  404. package/dist/lib/Supplier/Command.d.ts +5 -5
  405. package/dist/lib/Supplier/Command.js +10 -10
  406. package/dist/lib/Supplier/index.d.ts +25 -25
  407. package/dist/lib/Supplier/index.js +27 -27
  408. package/dist/lib/Tags/index.d.ts +6 -6
  409. package/dist/lib/Tags/index.js +26 -26
  410. package/dist/lib/Tax/index.d.ts +8 -8
  411. package/dist/lib/Tax/index.js +54 -54
  412. package/dist/lib/TransferRequest/index.d.ts +290 -290
  413. package/dist/lib/TransferRequest/index.js +1026 -1026
  414. package/dist/lib/Update/index.d.ts +10 -10
  415. package/dist/lib/Update/index.js +22 -22
  416. package/dist/lib/User/index.d.ts +89 -89
  417. package/dist/lib/User/index.js +328 -328
  418. package/dist/lib/Wishlist/index.d.ts +5 -5
  419. package/dist/lib/Wishlist/index.js +10 -10
  420. package/dist/lib/base.d.ts +14 -14
  421. package/dist/lib/base.js +62 -62
  422. package/dist/lib/baseService.d.ts +17 -17
  423. package/dist/lib/baseService.js +69 -69
  424. package/dist/rules/GR/constants/data.d.ts +26 -26
  425. package/dist/rules/GR/constants/data.js +81 -81
  426. package/dist/rules/GR/constants/expedition.d.ts +4 -4
  427. package/dist/rules/GR/constants/expedition.js +9 -9
  428. package/dist/rules/GR/constants/products.d.ts +22 -22
  429. package/dist/rules/GR/constants/products.js +263 -263
  430. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  431. package/dist/rules/GR/interfaces/cart.js +41 -41
  432. package/dist/rules/GR/interfaces/data.d.ts +101 -101
  433. package/dist/rules/GR/interfaces/data.js +114 -114
  434. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  435. package/dist/rules/GR/interfaces/products.js +10 -10
  436. package/dist/rules/GR/utils/cart.d.ts +95 -95
  437. package/dist/rules/GR/utils/cart.js +839 -839
  438. package/dist/rules/GR/utils/data.d.ts +3 -3
  439. package/dist/rules/GR/utils/data.js +28 -28
  440. package/dist/rules/GR/utils/expedition.d.ts +140 -140
  441. package/dist/rules/GR/utils/expedition.js +2016 -2016
  442. package/dist/rules/GR/utils/g2.d.ts +209 -209
  443. package/dist/rules/GR/utils/g2.js +1002 -1002
  444. package/dist/rules/GR/utils/invoices.d.ts +51 -51
  445. package/dist/rules/GR/utils/invoices.js +215 -215
  446. package/dist/rules/GR/utils/products.d.ts +277 -277
  447. package/dist/rules/GR/utils/products.js +1350 -1350
  448. package/dist/rules/GR/utils/upsells.d.ts +111 -111
  449. package/dist/rules/GR/utils/upsells.js +215 -215
  450. package/dist/services/database/BaseProvider.d.ts +29 -29
  451. package/dist/services/database/BaseProvider.js +28 -28
  452. package/dist/services/database/BatchUtils.d.ts +14 -14
  453. package/dist/services/database/BatchUtils.js +43 -43
  454. package/dist/services/database/Config.d.ts +2 -2
  455. package/dist/services/database/Config.js +5 -5
  456. package/dist/services/database/DatabaseService.d.ts +125 -125
  457. package/dist/services/database/DatabaseService.js +237 -237
  458. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  459. package/dist/services/database/FirebaseProvider.js +235 -235
  460. package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
  461. package/dist/services/database/NotFirebaseProvider.js +262 -262
  462. package/dist/services/g2/G2OrderSlip.d.ts +49 -49
  463. package/dist/services/g2/G2OrderSlip.js +228 -228
  464. package/dist/services/g2/utils.d.ts +19 -19
  465. package/dist/services/g2/utils.js +962 -954
  466. package/dist/services/g2/utils.js.map +1 -1
  467. package/dist/services/logs/index.d.ts +23 -23
  468. package/dist/services/logs/index.js +66 -66
  469. package/dist/services/marketplace/BaseMarketServiceClass.d.ts +69 -69
  470. package/dist/services/marketplace/BaseMarketServiceClass.js +133 -133
  471. package/dist/services/marketplace/CardtraderServiceClass.d.ts +33 -33
  472. package/dist/services/marketplace/CardtraderServiceClass.js +215 -215
  473. package/dist/services/marketplace/utils.d.ts +17 -17
  474. package/dist/services/marketplace/utils.js +32 -32
  475. package/dist/services/products/BaseClass.d.ts +50 -50
  476. package/dist/services/products/BaseClass.js +66 -66
  477. package/dist/services/products/TCGService.d.ts +32 -32
  478. package/dist/services/products/TCGService.js +555 -555
  479. package/dist/services/products/utils.d.ts +31 -31
  480. package/dist/services/products/utils.js +144 -144
  481. package/dist/utils/algolia.d.ts +46 -46
  482. package/dist/utils/algolia.js +21 -21
  483. package/dist/utils/anonymisation.d.ts +54 -54
  484. package/dist/utils/anonymisation.js +280 -280
  485. package/dist/utils/array.d.ts +5 -5
  486. package/dist/utils/array.js +14 -14
  487. package/dist/utils/aws.d.ts +36 -36
  488. package/dist/utils/aws.js +154 -154
  489. package/dist/utils/booking.d.ts +30 -30
  490. package/dist/utils/booking.js +127 -127
  491. package/dist/utils/cart.d.ts +272 -272
  492. package/dist/utils/cart.js +1169 -1169
  493. package/dist/utils/categories.d.ts +2 -2
  494. package/dist/utils/categories.js +54 -54
  495. package/dist/utils/cmv.d.ts +10 -10
  496. package/dist/utils/cmv.js +107 -107
  497. package/dist/utils/console.d.ts +6 -6
  498. package/dist/utils/console.js +59 -59
  499. package/dist/utils/context.d.ts +20 -20
  500. package/dist/utils/context.js +61 -61
  501. package/dist/utils/currency.d.ts +6 -6
  502. package/dist/utils/currency.js +91 -91
  503. package/dist/utils/data.d.ts +31 -31
  504. package/dist/utils/data.js +296 -296
  505. package/dist/utils/date.d.ts +1 -1
  506. package/dist/utils/date.js +16 -16
  507. package/dist/utils/dimensions.d.ts +3 -3
  508. package/dist/utils/dimensions.js +16 -16
  509. package/dist/utils/discount.d.ts +174 -174
  510. package/dist/utils/discount.js +1118 -1118
  511. package/dist/utils/errors.d.ts +118 -118
  512. package/dist/utils/errors.js +123 -123
  513. package/dist/utils/file-admin.d.ts +8 -8
  514. package/dist/utils/file-admin.js +39 -39
  515. package/dist/utils/file.d.ts +39 -39
  516. package/dist/utils/file.js +208 -208
  517. package/dist/utils/firebase-admin.d.ts +11 -11
  518. package/dist/utils/firebase-admin.js +73 -73
  519. package/dist/utils/firebase.d.ts +58 -58
  520. package/dist/utils/firebase.js +148 -148
  521. package/dist/utils/import.d.ts +1 -1
  522. package/dist/utils/import.js +21 -21
  523. package/dist/utils/inventories.d.ts +101 -101
  524. package/dist/utils/inventories.js +467 -467
  525. package/dist/utils/locale.d.ts +24 -24
  526. package/dist/utils/locale.js +91 -91
  527. package/dist/utils/mailchimp.d.ts +58 -58
  528. package/dist/utils/mailchimp.js +531 -531
  529. package/dist/utils/mathUtils.d.ts +17 -17
  530. package/dist/utils/mathUtils.js +324 -324
  531. package/dist/utils/mongodb.d.ts +1 -1
  532. package/dist/utils/mongodb.js +22 -22
  533. package/dist/utils/object.d.ts +32 -32
  534. package/dist/utils/object.js +133 -133
  535. package/dist/utils/payment.d.ts +10 -10
  536. package/dist/utils/payment.js +23 -23
  537. package/dist/utils/products.d.ts +39 -39
  538. package/dist/utils/products.js +195 -195
  539. package/dist/utils/promiseToPurchase.d.ts +88 -88
  540. package/dist/utils/promiseToPurchase.js +229 -229
  541. package/dist/utils/prosprsearch.d.ts +42 -42
  542. package/dist/utils/prosprsearch.js +216 -216
  543. package/dist/utils/refunds.d.ts +2 -2
  544. package/dist/utils/refunds.js +21 -21
  545. package/dist/utils/sdc.d.ts +10 -10
  546. package/dist/utils/sdc.js +1309 -1309
  547. package/dist/utils/searchIndexes.d.ts +58 -58
  548. package/dist/utils/searchIndexes.js +247 -247
  549. package/dist/utils/services.d.ts +42 -42
  550. package/dist/utils/services.js +409 -409
  551. package/dist/utils/shipment.d.ts +110 -110
  552. package/dist/utils/shipment.js +345 -345
  553. package/dist/utils/simpletexting.d.ts +2 -2
  554. package/dist/utils/simpletexting.js +45 -45
  555. package/dist/utils/sliders.d.ts +4 -4
  556. package/dist/utils/sliders.js +24 -24
  557. package/dist/utils/string.d.ts +16 -16
  558. package/dist/utils/string.js +192 -192
  559. package/dist/utils/tcgService.d.ts +81 -81
  560. package/dist/utils/tcgService.js +353 -353
  561. package/dist/utils/tools.d.ts +5 -5
  562. package/dist/utils/tools.js +13 -13
  563. package/dist/utils/transferRequests.d.ts +43 -43
  564. package/dist/utils/transferRequests.js +67 -67
  565. package/dist/utils/update.d.ts +7 -7
  566. package/dist/utils/update.js +137 -137
  567. package/dist/utils/weight.d.ts +3 -3
  568. package/dist/utils/weight.js +16 -16
  569. package/dist/utils/zones.d.ts +11 -11
  570. package/dist/utils/zones.js +218 -218
  571. package/package.json +107 -107
  572. package/publish.sh +143 -143
  573. package/readme.md +182 -182
  574. package/dist/lib/Queue/index.d.ts +0 -40
  575. package/dist/lib/Queue/index.js +0 -255
  576. package/dist/lib/Queue/index.js.map +0 -1
@@ -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