addio-admin-sdk 1.7.89 → 1.7.90

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