addio-admin-sdk 1.7.90 → 1.7.96

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 (557) hide show
  1. package/.babelrc +17 -17
  2. package/.env +15 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/publish_coverage.yam_ +69 -69
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +537 -537
  7. package/dist/Interfaces/Address/index.d.ts +21 -21
  8. package/dist/Interfaces/Address/index.js +16 -16
  9. package/dist/Interfaces/Algolia/index.d.ts +164 -164
  10. package/dist/Interfaces/Algolia/index.js +2 -2
  11. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  12. package/dist/Interfaces/Attachement/index.js +2 -2
  13. package/dist/Interfaces/Attribute/index.d.ts +52 -52
  14. package/dist/Interfaces/Attribute/index.js +10 -10
  15. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  16. package/dist/Interfaces/BGJob/index.js +25 -25
  17. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  18. package/dist/Interfaces/BaseClass/index.js +2 -2
  19. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  20. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  21. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  22. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  23. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  24. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  25. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  26. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  27. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  28. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  29. package/dist/Interfaces/Booking/index.d.ts +74 -74
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +15 -15
  32. package/dist/Interfaces/Brand/index.js +2 -2
  33. package/dist/Interfaces/CMS/index.d.ts +25 -25
  34. package/dist/Interfaces/CMS/index.js +2 -2
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  38. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  39. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  40. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  41. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  42. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  43. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  44. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  45. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  46. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  47. package/dist/Interfaces/Cart/index.d.ts +425 -425
  48. package/dist/Interfaces/Cart/index.js +192 -192
  49. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  50. package/dist/Interfaces/Catalogue/index.js +37 -37
  51. package/dist/Interfaces/Category/index.d.ts +33 -33
  52. package/dist/Interfaces/Category/index.js +2 -2
  53. package/dist/Interfaces/Chart/index.d.ts +11 -11
  54. package/dist/Interfaces/Chart/index.js +2 -2
  55. package/dist/Interfaces/Class/index.d.ts +8 -8
  56. package/dist/Interfaces/Class/index.js +2 -2
  57. package/dist/Interfaces/Consent/index.d.ts +6 -6
  58. package/dist/Interfaces/Consent/index.js +2 -2
  59. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  60. package/dist/Interfaces/Context/IContextProps.js +2 -2
  61. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  62. package/dist/Interfaces/Context/IContextState.js +2 -2
  63. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  64. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  65. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  66. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  67. package/dist/Interfaces/Customer/IStoreCredit.d.ts +12 -12
  68. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  69. package/dist/Interfaces/Customer/index.d.ts +97 -97
  70. package/dist/Interfaces/Customer/index.js +141 -141
  71. package/dist/Interfaces/Declination/index.d.ts +114 -114
  72. package/dist/Interfaces/Declination/index.js +60 -60
  73. package/dist/Interfaces/Document/index.d.ts +8 -8
  74. package/dist/Interfaces/Document/index.js +2 -2
  75. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  76. package/dist/Interfaces/Elastic/index.js +2 -2
  77. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  78. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  79. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  80. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  81. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  82. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  84. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  86. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  88. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  90. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  92. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  94. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  95. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  96. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  97. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  98. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  99. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  100. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  101. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  102. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  103. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  104. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  105. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  106. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  107. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  108. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  109. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  110. package/dist/Interfaces/Email/IEmail.js +56 -56
  111. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  112. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  113. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  114. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  115. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  116. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  117. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  118. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  119. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  120. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  121. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  122. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  123. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  124. package/dist/Interfaces/ExportSchema/index.js +2 -2
  125. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  126. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  127. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  128. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  129. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  130. package/dist/Interfaces/ExternalService/index.js +2 -2
  131. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  132. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  133. package/dist/Interfaces/G2/index.d.ts +556 -556
  134. package/dist/Interfaces/G2/index.js +36 -36
  135. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  136. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  137. package/dist/Interfaces/Indexed/Product/index.d.ts +97 -97
  138. package/dist/Interfaces/Indexed/Product/index.js +212 -212
  139. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  140. package/dist/Interfaces/Inventory/index.js +8 -8
  141. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  142. package/dist/Interfaces/Invoice/index.js +2 -2
  143. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  144. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  145. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  146. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  147. package/dist/Interfaces/Menu/index.d.ts +23 -23
  148. package/dist/Interfaces/Menu/index.js +10 -10
  149. package/dist/Interfaces/Note/index.d.ts +10 -10
  150. package/dist/Interfaces/Note/index.js +7 -7
  151. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  152. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  153. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  154. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  155. package/dist/Interfaces/Order/index.d.ts +4 -4
  156. package/dist/Interfaces/Order/index.js +2 -2
  157. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  158. package/dist/Interfaces/Org/IRelUser.js +2 -2
  159. package/dist/Interfaces/Org/index.d.ts +29 -29
  160. package/dist/Interfaces/Org/index.js +12 -12
  161. package/dist/Interfaces/Payment/index.d.ts +13 -13
  162. package/dist/Interfaces/Payment/index.js +2 -2
  163. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  164. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  165. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  166. package/dist/Interfaces/Product/IImportProduct.js +791 -791
  167. package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
  168. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  169. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  170. package/dist/Interfaces/Product/IPricing.js +174 -174
  171. package/dist/Interfaces/Product/index.d.ts +127 -127
  172. package/dist/Interfaces/Product/index.js +56 -56
  173. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  174. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  175. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  176. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  177. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  178. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  179. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  180. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  181. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  182. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  183. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  184. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  185. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  186. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  187. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  188. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  189. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  190. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  191. package/dist/Interfaces/Quote/index.d.ts +5 -5
  192. package/dist/Interfaces/Quote/index.js +2 -2
  193. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  194. package/dist/Interfaces/Refunds/index.js +2 -2
  195. package/dist/Interfaces/Rules/IDiscountRule.d.ts +137 -137
  196. package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
  197. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  198. package/dist/Interfaces/Schedule/index.js +2 -2
  199. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  200. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  201. package/dist/Interfaces/Services/IService.d.ts +12 -12
  202. package/dist/Interfaces/Services/IService.js +2 -2
  203. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  204. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  205. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  206. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  207. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  208. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  209. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  210. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  211. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  212. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  213. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  214. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  215. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  216. package/dist/Interfaces/Slider/GR.js +271 -271
  217. package/dist/Interfaces/Slider/index.d.ts +30 -30
  218. package/dist/Interfaces/Slider/index.js +2 -2
  219. package/dist/Interfaces/Space/IExternalService.d.ts +52 -52
  220. package/dist/Interfaces/Space/IExternalService.js +43 -43
  221. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  222. package/dist/Interfaces/Space/IMember.js +9 -9
  223. package/dist/Interfaces/Space/index.d.ts +390 -390
  224. package/dist/Interfaces/Space/index.js +160 -160
  225. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  226. package/dist/Interfaces/Specials/gr.js +2 -2
  227. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  228. package/dist/Interfaces/StockNotification/index.js +2 -2
  229. package/dist/Interfaces/Store/index.d.ts +62 -62
  230. package/dist/Interfaces/Store/index.js +27 -27
  231. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  232. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  233. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  234. package/dist/Interfaces/Supplier/index.js +24 -24
  235. package/dist/Interfaces/TCG/index.d.ts +110 -110
  236. package/dist/Interfaces/TCG/index.js +27 -27
  237. package/dist/Interfaces/Tag/index.d.ts +18 -18
  238. package/dist/Interfaces/Tag/index.js +2 -2
  239. package/dist/Interfaces/Tax/index.d.ts +13 -13
  240. package/dist/Interfaces/Tax/index.js +2 -2
  241. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  242. package/dist/Interfaces/TransferRequest/index.js +43 -43
  243. package/dist/Interfaces/Translation/index.d.ts +8 -8
  244. package/dist/Interfaces/Translation/index.js +5 -5
  245. package/dist/Interfaces/Update/index.d.ts +10 -10
  246. package/dist/Interfaces/Update/index.js +2 -2
  247. package/dist/Interfaces/User/IUser.d.ts +65 -65
  248. package/dist/Interfaces/User/IUser.js +8 -8
  249. package/dist/Interfaces/Version/index.d.ts +11 -11
  250. package/dist/Interfaces/Version/index.js +2 -2
  251. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  252. package/dist/Interfaces/Wishlist/index.js +2 -2
  253. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  254. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  255. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  256. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  257. package/dist/constants/enums.d.ts +6 -6
  258. package/dist/constants/enums.js +10 -10
  259. package/dist/constants/services.d.ts +2 -2
  260. package/dist/constants/services.js +111 -111
  261. package/dist/constants/version.d.ts +2 -2
  262. package/dist/constants/version.js +5 -5
  263. package/dist/index.d.ts +32 -32
  264. package/dist/index.js +242 -242
  265. package/dist/lib/Attribute/index.d.ts +14 -14
  266. package/dist/lib/Attribute/index.js +143 -143
  267. package/dist/lib/BGJob/index.d.ts +9 -9
  268. package/dist/lib/BGJob/index.js +212 -212
  269. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  270. package/dist/lib/BackgroundWorker/index.js +59 -59
  271. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  272. package/dist/lib/Blog/BlogArticle.js +10 -10
  273. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  274. package/dist/lib/Blog/BlogAuthor.js +10 -10
  275. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  276. package/dist/lib/Blog/BlogCategory.js +10 -10
  277. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  278. package/dist/lib/Blog/BlogKeyword.js +10 -10
  279. package/dist/lib/Booking/index.d.ts +70 -70
  280. package/dist/lib/Booking/index.js +576 -576
  281. package/dist/lib/Brand/index.d.ts +17 -17
  282. package/dist/lib/Brand/index.js +113 -113
  283. package/dist/lib/Cart/index.d.ts +206 -206
  284. package/dist/lib/Cart/index.js +3165 -3165
  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/Queue/index.d.ts +40 -0
  378. package/dist/lib/Queue/index.js +255 -0
  379. package/dist/lib/Queue/index.js.map +1 -0
  380. package/dist/lib/Schedule/index.d.ts +5 -5
  381. package/dist/lib/Schedule/index.js +12 -12
  382. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  383. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  384. package/dist/lib/Service/index.d.ts +5 -5
  385. package/dist/lib/Service/index.js +13 -13
  386. package/dist/lib/Shipment/index.d.ts +28 -28
  387. package/dist/lib/Shipment/index.js +357 -357
  388. package/dist/lib/Slider/index.d.ts +16 -16
  389. package/dist/lib/Slider/index.js +113 -113
  390. package/dist/lib/Space/index.d.ts +883 -883
  391. package/dist/lib/Space/index.js +5134 -5134
  392. package/dist/lib/StockNotification/index.d.ts +4 -4
  393. package/dist/lib/StockNotification/index.js +6 -6
  394. package/dist/lib/Store/index.d.ts +5 -5
  395. package/dist/lib/Store/index.js +12 -12
  396. package/dist/lib/Supplier/Command.d.ts +5 -5
  397. package/dist/lib/Supplier/Command.js +10 -10
  398. package/dist/lib/Supplier/index.d.ts +25 -25
  399. package/dist/lib/Supplier/index.js +22 -22
  400. package/dist/lib/Tags/index.d.ts +6 -6
  401. package/dist/lib/Tags/index.js +21 -21
  402. package/dist/lib/Tax/index.d.ts +8 -8
  403. package/dist/lib/Tax/index.js +54 -54
  404. package/dist/lib/TransferRequest/index.d.ts +112 -112
  405. package/dist/lib/TransferRequest/index.js +794 -794
  406. package/dist/lib/Update/index.d.ts +10 -10
  407. package/dist/lib/Update/index.js +22 -22
  408. package/dist/lib/User/index.d.ts +35 -35
  409. package/dist/lib/User/index.js +248 -248
  410. package/dist/lib/Wishlist/index.d.ts +5 -5
  411. package/dist/lib/Wishlist/index.js +10 -10
  412. package/dist/lib/base.d.ts +14 -14
  413. package/dist/lib/base.js +62 -62
  414. package/dist/lib/baseService.d.ts +17 -17
  415. package/dist/lib/baseService.js +43 -43
  416. package/dist/rules/GR/constants/data.d.ts +26 -26
  417. package/dist/rules/GR/constants/data.js +55 -55
  418. package/dist/rules/GR/constants/products.d.ts +8 -8
  419. package/dist/rules/GR/constants/products.js +234 -234
  420. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  421. package/dist/rules/GR/interfaces/cart.js +41 -41
  422. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  423. package/dist/rules/GR/interfaces/data.js +104 -104
  424. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  425. package/dist/rules/GR/interfaces/products.js +10 -10
  426. package/dist/rules/GR/utils/cart.d.ts +53 -53
  427. package/dist/rules/GR/utils/cart.js +637 -637
  428. package/dist/rules/GR/utils/data.d.ts +3 -3
  429. package/dist/rules/GR/utils/data.js +25 -25
  430. package/dist/rules/GR/utils/expedition.d.ts +71 -71
  431. package/dist/rules/GR/utils/expedition.js +1542 -1542
  432. package/dist/rules/GR/utils/g2.d.ts +176 -176
  433. package/dist/rules/GR/utils/g2.js +849 -849
  434. package/dist/rules/GR/utils/invoices.d.ts +24 -24
  435. package/dist/rules/GR/utils/invoices.js +174 -174
  436. package/dist/rules/GR/utils/products.d.ts +104 -104
  437. package/dist/rules/GR/utils/products.js +984 -984
  438. package/dist/rules/GR/utils/upsells.d.ts +79 -79
  439. package/dist/rules/GR/utils/upsells.js +183 -183
  440. package/dist/services/database/BaseProvider.d.ts +29 -29
  441. package/dist/services/database/BaseProvider.js +28 -28
  442. package/dist/services/database/BatchUtils.d.ts +14 -14
  443. package/dist/services/database/BatchUtils.js +43 -43
  444. package/dist/services/database/Config.d.ts +2 -2
  445. package/dist/services/database/Config.js +5 -5
  446. package/dist/services/database/DatabaseService.d.ts +41 -41
  447. package/dist/services/database/DatabaseService.js +152 -152
  448. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  449. package/dist/services/database/FirebaseProvider.js +218 -218
  450. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  451. package/dist/services/database/NotFirebaseProvider.js +243 -243
  452. package/dist/services/g2/G2OrderSlip.d.ts +42 -42
  453. package/dist/services/g2/G2OrderSlip.js +210 -210
  454. package/dist/services/g2/utils.d.ts +9 -9
  455. package/dist/services/g2/utils.js +703 -703
  456. package/dist/services/logs/index.d.ts +20 -20
  457. package/dist/services/logs/index.js +61 -61
  458. package/dist/services/products/BaseClass.d.ts +50 -50
  459. package/dist/services/products/BaseClass.js +64 -64
  460. package/dist/services/products/TCGService.d.ts +29 -29
  461. package/dist/services/products/TCGService.js +499 -499
  462. package/dist/services/products/utils.d.ts +9 -9
  463. package/dist/services/products/utils.js +94 -94
  464. package/dist/utils/algolia.d.ts +6 -6
  465. package/dist/utils/algolia.js +21 -21
  466. package/dist/utils/anonymisation.d.ts +30 -30
  467. package/dist/utils/anonymisation.js +250 -250
  468. package/dist/utils/array.d.ts +5 -5
  469. package/dist/utils/array.js +14 -14
  470. package/dist/utils/aws.d.ts +14 -14
  471. package/dist/utils/aws.js +126 -126
  472. package/dist/utils/booking.d.ts +22 -22
  473. package/dist/utils/booking.js +118 -118
  474. package/dist/utils/cart.d.ts +134 -134
  475. package/dist/utils/cart.js +867 -862
  476. package/dist/utils/cart.js.map +1 -1
  477. package/dist/utils/categories.d.ts +2 -2
  478. package/dist/utils/categories.js +54 -54
  479. package/dist/utils/cmv.d.ts +10 -10
  480. package/dist/utils/cmv.js +107 -107
  481. package/dist/utils/console.d.ts +6 -6
  482. package/dist/utils/console.js +59 -59
  483. package/dist/utils/context.d.ts +20 -20
  484. package/dist/utils/context.js +61 -61
  485. package/dist/utils/currency.d.ts +6 -6
  486. package/dist/utils/currency.js +61 -61
  487. package/dist/utils/data.d.ts +31 -31
  488. package/dist/utils/data.js +294 -294
  489. package/dist/utils/date.d.ts +1 -1
  490. package/dist/utils/date.js +16 -16
  491. package/dist/utils/dimensions.d.ts +3 -3
  492. package/dist/utils/dimensions.js +16 -16
  493. package/dist/utils/discount.d.ts +46 -46
  494. package/dist/utils/discount.js +934 -934
  495. package/dist/utils/errors.d.ts +113 -113
  496. package/dist/utils/errors.js +113 -113
  497. package/dist/utils/file-admin.d.ts +8 -8
  498. package/dist/utils/file-admin.js +38 -38
  499. package/dist/utils/file.d.ts +38 -38
  500. package/dist/utils/file.js +200 -200
  501. package/dist/utils/firebase-admin.d.ts +2 -2
  502. package/dist/utils/firebase-admin.js +61 -61
  503. package/dist/utils/firebase.d.ts +41 -41
  504. package/dist/utils/firebase.js +131 -131
  505. package/dist/utils/import.d.ts +1 -1
  506. package/dist/utils/import.js +21 -21
  507. package/dist/utils/inventories.d.ts +49 -49
  508. package/dist/utils/inventories.js +392 -392
  509. package/dist/utils/locale.d.ts +15 -15
  510. package/dist/utils/locale.js +78 -78
  511. package/dist/utils/mailchimp.d.ts +58 -58
  512. package/dist/utils/mailchimp.js +495 -495
  513. package/dist/utils/mathUtils.d.ts +17 -17
  514. package/dist/utils/mathUtils.js +315 -315
  515. package/dist/utils/mongodb.d.ts +1 -1
  516. package/dist/utils/mongodb.js +22 -22
  517. package/dist/utils/object.d.ts +13 -13
  518. package/dist/utils/object.js +115 -115
  519. package/dist/utils/payment.d.ts +10 -10
  520. package/dist/utils/payment.js +23 -23
  521. package/dist/utils/products.d.ts +32 -32
  522. package/dist/utils/products.js +186 -186
  523. package/dist/utils/promiseToPurchase.d.ts +56 -56
  524. package/dist/utils/promiseToPurchase.js +195 -195
  525. package/dist/utils/prosprsearch.d.ts +26 -26
  526. package/dist/utils/prosprsearch.js +182 -182
  527. package/dist/utils/refunds.d.ts +2 -2
  528. package/dist/utils/refunds.js +21 -21
  529. package/dist/utils/sdc.d.ts +10 -10
  530. package/dist/utils/sdc.js +1302 -1302
  531. package/dist/utils/searchIndexes.d.ts +21 -21
  532. package/dist/utils/searchIndexes.js +210 -210
  533. package/dist/utils/services.d.ts +42 -42
  534. package/dist/utils/services.js +409 -409
  535. package/dist/utils/shipment.d.ts +110 -110
  536. package/dist/utils/shipment.js +345 -345
  537. package/dist/utils/simpletexting.d.ts +2 -2
  538. package/dist/utils/simpletexting.js +45 -45
  539. package/dist/utils/sliders.d.ts +4 -4
  540. package/dist/utils/sliders.js +24 -24
  541. package/dist/utils/string.d.ts +16 -16
  542. package/dist/utils/string.js +191 -191
  543. package/dist/utils/tcgService.d.ts +2 -2
  544. package/dist/utils/tcgService.js +8 -8
  545. package/dist/utils/tools.d.ts +1 -1
  546. package/dist/utils/tools.js +9 -9
  547. package/dist/utils/transferRequests.d.ts +19 -19
  548. package/dist/utils/transferRequests.js +43 -43
  549. package/dist/utils/update.d.ts +7 -7
  550. package/dist/utils/update.js +125 -125
  551. package/dist/utils/weight.d.ts +3 -3
  552. package/dist/utils/weight.js +16 -16
  553. package/dist/utils/zones.d.ts +11 -11
  554. package/dist/utils/zones.js +218 -218
  555. package/package.json +110 -110
  556. package/publish.sh +143 -143
  557. package/readme.md +182 -182
@@ -1,863 +1,868 @@
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
- exports.getPurchasedPalletsQuantityForCustomer = exports.validateStoreCreditUsage = exports.calculateAmountForCustomPromo = exports.getLastUserWhoTookPayment = exports.getCartPaymentMethods = exports.getAddressStrArray = exports.getAllPromoAppliedPrices = exports.getSubtotalToCheckForPromo = exports.getILangForUpdateType = exports.getItemsToUpdateByTransfer = exports.getItemSaleUnitSlug = exports.getActiveTransfersByItemInCart = exports.getModifiedItems = exports.getOrderStoreInfo = exports.checkIfShippingSameAsBilling = exports.getShippingStoreInfo = exports.getAssignedToInfo = exports.getPaidByForIndexedCart = exports.getIndexedCartData = exports.getTaxProvinceFromShippingAddress = exports.getCurrentProvince = exports.verifyAndReturnToBeAddedCartItems = exports.addCartItems = exports.generateCartItemForSku = exports.getActualDiscountPrice = exports.getActualPromoPrice = exports.priceWasOverridden = exports.deleteCartItem = exports.verifyAndReturnToBeUpdatedCartItems = exports.updateCartItems = void 0;
7
- const toNumber_1 = __importDefault(require("lodash/toNumber"));
8
- const findIndex_1 = __importDefault(require("lodash/findIndex"));
9
- const remove_1 = __importDefault(require("lodash/remove"));
10
- const flatten_1 = __importDefault(require("lodash/flatten"));
11
- const orderBy_1 = __importDefault(require("lodash/orderBy"));
12
- const uniq_1 = __importDefault(require("lodash/uniq"));
13
- const moment_1 = __importDefault(require("moment"));
14
- const isEqual_1 = __importDefault(require("lodash/isEqual"));
15
- const find_1 = __importDefault(require("lodash/find"));
16
- const isNumber_1 = __importDefault(require("lodash/isNumber"));
17
- const round_1 = __importDefault(require("lodash/round"));
18
- const sumBy_1 = __importDefault(require("lodash/sumBy"));
19
- const Cart_1 = require("../Interfaces/Cart");
20
- const string_1 = require("./string");
21
- const g2_1 = require("../rules/GR/utils/g2");
22
- const object_1 = require("./object");
23
- const invoices_1 = require("../rules/GR/utils/invoices");
24
- const data_1 = require("./data");
25
- const services_1 = require("./services");
26
- const discount_1 = require("./discount");
27
- const IDiscountRule_1 = require("../Interfaces/Rules/IDiscountRule");
28
- const products_1 = require("./products");
29
- const TransferRequest_1 = require("../Interfaces/TransferRequest");
30
- const cart_1 = require("../rules/GR/utils/cart");
31
- const cart_2 = require("../rules/GR/interfaces/cart");
32
- const inventories_1 = require("./inventories");
33
- const searchIndexes_1 = require("./searchIndexes");
34
- const Cart_2 = __importDefault(require("../lib/Cart"));
35
- const updateCartItems = async (currentCart, items, fetchInventory, shouldCheckInventory = true, handleInventoryError) => {
36
- let updatedCart = Object.assign({}, currentCart);
37
- const itemsToUpdate = Array.isArray(items) ? items : [items];
38
- const updatedItems = [];
39
- for (const item of itemsToUpdate) {
40
- const cartItemIndex = (0, findIndex_1.default)(updatedCart.items, (i) => i.sku === item.sku);
41
- const cartItem = cartItemIndex !== -1 ? updatedCart.items[cartItemIndex] : undefined;
42
- if (!!cartItem) {
43
- if (!!shouldCheckInventory) {
44
- let inventoryItem = undefined;
45
- try {
46
- inventoryItem = !!cartItem && !!cartItem.is_service ? undefined : await fetchInventory(item.sku);
47
- }
48
- catch (e) {
49
- console.log('error on fetching inventoryItem: ', e);
50
- }
51
- if (!!inventoryItem) {
52
- const webStore = inventoryItem.web_inventory;
53
- if (!!!inventoryItem.is_infinite_stock && !!!cartItem.is_service) {
54
- if (!!!webStore || !!!webStore.available) {
55
- continue;
56
- }
57
- if (item.qte > webStore.available) {
58
- if (!!handleInventoryError) {
59
- await handleInventoryError(true);
60
- }
61
- updatedItems.push({
62
- sku: item.sku,
63
- updated: false
64
- });
65
- continue;
66
- }
67
- }
68
- }
69
- }
70
- updatedCart.items[cartItemIndex] = Object.assign(Object.assign({}, cartItem), { qte: item.qte, qte_override: item.qte_override });
71
- updatedItems.push({ sku: item.sku, updated: true });
72
- }
73
- }
74
- return { updatedCart, updatedItems };
75
- };
76
- exports.updateCartItems = updateCartItems;
77
- const verifyAndReturnToBeUpdatedCartItems = async (currentCartItems, items, fetchInventory, options = {}) => {
78
- let updatedCartItems = [...currentCartItems];
79
- const itemsToUpdate = Array.isArray(items) ? items : [items];
80
- const updatedDetails = [];
81
- for (const item of itemsToUpdate) {
82
- const cartItemIndex = (0, findIndex_1.default)(updatedCartItems, (i) => i.sku === item.sku);
83
- const cartItem = cartItemIndex !== -1 ? updatedCartItems[cartItemIndex] : undefined;
84
- if (!!cartItem) {
85
- if (!!options.shouldCheckInventory) {
86
- let inventoryItem = undefined;
87
- try {
88
- inventoryItem = !!cartItem && !!cartItem.is_service ? undefined : await fetchInventory(item.sku);
89
- }
90
- catch (e) {
91
- console.log('error on fetching inventoryItem: ', e);
92
- }
93
- if (!!inventoryItem) {
94
- let inventoryToCheck;
95
- if (options.shouldCheckStoreInventory) {
96
- const sameStoreInventory = inventoryItem.inventories.find((i) => i.store_id == options.shouldCheckStoreInventory);
97
- if (!!sameStoreInventory) {
98
- inventoryToCheck = sameStoreInventory.qty.available;
99
- }
100
- }
101
- else {
102
- inventoryToCheck = (0, object_1.recursiveCheckObject)(inventoryItem, 'web_inventory.available');
103
- }
104
- if (typeof inventoryToCheck == 'undefined') {
105
- updatedDetails.push({
106
- sku: item.sku,
107
- updated: false
108
- });
109
- continue;
110
- }
111
- if (!!!inventoryItem.is_infinite_stock && !!!cartItem.is_service) {
112
- if (!inventoryToCheck) {
113
- updatedDetails.push({
114
- sku: item.sku,
115
- updated: false
116
- });
117
- continue;
118
- }
119
- if (item.qte > inventoryToCheck) {
120
- if (!!options.handleInventoryError) {
121
- await options.handleInventoryError(true);
122
- }
123
- updatedDetails.push({
124
- sku: item.sku,
125
- updated: false
126
- });
127
- continue;
128
- }
129
- }
130
- }
131
- }
132
- updatedCartItems[cartItemIndex] = Object.assign(Object.assign({}, cartItem), { qte: item.qte, qte_override: item.qte_override });
133
- updatedDetails.push({ sku: item.sku, updated: true });
134
- }
135
- }
136
- return { updatedCartItems, updatedDetails };
137
- };
138
- exports.verifyAndReturnToBeUpdatedCartItems = verifyAndReturnToBeUpdatedCartItems;
139
- const deleteCartItem = (currentCart, sku, onlyIfUpsellOf) => {
140
- const deletedItemsCart = Object.assign({}, currentCart);
141
- sku.forEach((itm) => (0, remove_1.default)(deletedItemsCart.items, (item) => {
142
- if (!!item.is_upsell_of_sku && !!onlyIfUpsellOf)
143
- return item.sku === itm && item.is_upsell_of_sku === onlyIfUpsellOf;
144
- return item.sku === itm;
145
- }));
146
- return deletedItemsCart;
147
- };
148
- exports.deleteCartItem = deleteCartItem;
149
- const priceWasOverridden = (itemToCheck) => {
150
- return ((!!itemToCheck.promo_price && !!itemToCheck.promo_price.overridden) ||
151
- (!!itemToCheck.discount_price && !!itemToCheck.discount_price.overridden));
152
- };
153
- exports.priceWasOverridden = priceWasOverridden;
154
- const getActualPromoPrice = (item, output) => {
155
- const orgPrice = (0, exports.getActualDiscountPrice)(item, '$');
156
- let price = orgPrice;
157
- if (!!item.promo_price) {
158
- price = item.promo_price.amount;
159
- }
160
- if (output === '%')
161
- return !!!orgPrice ? 0 : (1 - price / orgPrice) * 100;
162
- return price;
163
- };
164
- exports.getActualPromoPrice = getActualPromoPrice;
165
- const getActualDiscountPrice = (item, output) => {
166
- let price = item.regular_price.amount;
167
- if (!!item.discount_price) {
168
- price = item.discount_price.amount;
169
- }
170
- if (output === '%')
171
- return (1 - price / item.regular_price.amount) * 100;
172
- return price;
173
- };
174
- exports.getActualDiscountPrice = getActualDiscountPrice;
175
- const generateCartItemForSku = async (indexedProduct, sku, qte) => {
176
- try {
177
- const sameDecli = indexedProduct.declinations.find((d) => d.sku == sku);
178
- if (!sameDecli)
179
- throw new Error('Could not find decli in product!');
180
- let decliImgs = sameDecli.images_path;
181
- if (!decliImgs) {
182
- const parentImgs = indexedProduct.image_files;
183
- if (!!parentImgs && parentImgs.length)
184
- decliImgs = parentImgs.slice(0, 1);
185
- else
186
- decliImgs = [];
187
- }
188
- return Object.assign(Object.assign(Object.assign({}, sameDecli), (!!decliImgs.length ? { images_path: decliImgs } : {})), { qte: qte, parent_slug: indexedProduct.slug, product_upsells: indexedProduct.product_upsells, categories: indexedProduct.categories });
189
- }
190
- catch (e) {
191
- console.log('error on converting prod to cart item: ', e.toString());
192
- return;
193
- }
194
- };
195
- exports.generateCartItemForSku = generateCartItemForSku;
196
- const addCartItems = async (currentCart, newItems, fetchInventory, shouldCheckInventory = true, handleInventoryError, defaultAdd = false, isServiceUpsellOfSku = false, customPriceList) => {
197
- let newCart = Object.assign({}, currentCart);
198
- let items = [...newItems];
199
- if (!!customPriceList) {
200
- items = items.map((i) => !!(0, exports.priceWasOverridden)(i) ? i : (0, g2_1.checkForCustomPriceEquivalent)(i, customPriceList));
201
- }
202
- let itemsToUpdate = [];
203
- const shouldAddItem = async (cartItem) => {
204
- const checkInventory = !!shouldCheckInventory && !!!cartItem.is_service && !!!cartItem.is_upsell_of_sku;
205
- let inventoryItem;
206
- if (!!fetchInventory) {
207
- try {
208
- inventoryItem = !!cartItem.is_service ? undefined : await fetchInventory(cartItem.sku);
209
- }
210
- catch (e) {
211
- console.log('error on fetching inventory: ', e);
212
- }
213
- }
214
- const itemAlreadyInCart = (0, findIndex_1.default)(newCart.items, (item) => item.sku === cartItem.sku);
215
- if (!!checkInventory) {
216
- if (!!!inventoryItem)
217
- return 'already_max_qte';
218
- if (!!inventoryItem.is_infinite_stock || !!cartItem.is_service || !!cartItem.is_sample)
219
- return cartItem;
220
- if (!!!inventoryItem.web_inventory || !!!inventoryItem.web_inventory.available) {
221
- return false;
222
- }
223
- if (cartItem.qte > inventoryItem.web_inventory.available) {
224
- return 'already_max_qte';
225
- }
226
- if (itemAlreadyInCart !== -1 && !!!isServiceUpsellOfSku) {
227
- if (!!shouldCheckInventory && !!inventoryItem.web_inventory && !!inventoryItem.web_inventory.available) {
228
- if ((0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte) >
229
- (0, toNumber_1.default)(inventoryItem.web_inventory.available)) {
230
- return 'already_max_qte';
231
- }
232
- }
233
- itemsToUpdate.push({
234
- sku: cartItem.sku,
235
- qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
236
- });
237
- return false;
238
- }
239
- }
240
- if (itemAlreadyInCart !== -1) {
241
- itemsToUpdate.push({
242
- sku: cartItem.sku,
243
- qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
244
- });
245
- return false;
246
- }
247
- return cartItem;
248
- };
249
- const itemsToAdd = Array.isArray(items)
250
- ? !!defaultAdd
251
- ? items
252
- : await Promise.all(items.map(async (cartItem) => await shouldAddItem(cartItem)))
253
- : !!defaultAdd
254
- ? [items]
255
- : [await shouldAddItem(items)];
256
- const filteredItems = itemsToAdd.filter((item) => !!item && item !== 'already_max_qte');
257
- const hasMaxQtyItems = itemsToAdd.find((i) => i === 'already_max_qte');
258
- if (!!hasMaxQtyItems && !!handleInventoryError) {
259
- await handleInventoryError(false);
260
- }
261
- if (!!itemsToUpdate.length) {
262
- const updateResult = await (0, exports.updateCartItems)(currentCart, itemsToUpdate, fetchInventory, shouldCheckInventory, handleInventoryError);
263
- if (!!updateResult) {
264
- newCart = updateResult.updatedCart;
265
- }
266
- }
267
- newCart = Object.assign(Object.assign({}, newCart), { items: [...newCart.items, ...filteredItems] });
268
- return {
269
- cartData: newCart,
270
- added: !!filteredItems && !!filteredItems.length,
271
- updated: !!itemsToUpdate && !!itemsToUpdate.length,
272
- maxQtyItems: !!hasMaxQtyItems
273
- };
274
- };
275
- exports.addCartItems = addCartItems;
276
- const verifyAndReturnToBeAddedCartItems = async (currentCart, newItems, fetchInventory, options = {}) => {
277
- let newCart = Object.assign({}, currentCart);
278
- let items = [...newItems];
279
- if (!!options.customPriceList) {
280
- items = items.map((i) => !!(0, exports.priceWasOverridden)(i) ? i : (0, g2_1.checkForCustomPriceEquivalent)(i, options.customPriceList));
281
- }
282
- let itemsToUpdate = [];
283
- const shouldAddItem = async (cartItem) => {
284
- const checkInventory = !!options.shouldCheckInventory && !!!cartItem.is_service && !!!cartItem.is_upsell_of_sku;
285
- let inventoryItem;
286
- if (!!fetchInventory) {
287
- try {
288
- inventoryItem = !!cartItem.is_service ? undefined : await fetchInventory(cartItem.sku);
289
- }
290
- catch (e) {
291
- console.log('error on fetching inventory: ', e);
292
- }
293
- }
294
- const itemAlreadyInCart = (0, findIndex_1.default)(newCart.items, (item) => item.sku === cartItem.sku);
295
- if (!!checkInventory) {
296
- if (!!!inventoryItem)
297
- return 'inventory_not_found';
298
- if (inventoryItem.is_infinite_stock || cartItem.is_service || cartItem.is_sample)
299
- return cartItem;
300
- let inventoryToCheck;
301
- if (options.shouldCheckStoreInventory) {
302
- const sameStoreInventory = inventoryItem.inventories.find((i) => i.store_id == options.shouldCheckStoreInventory);
303
- if (!!sameStoreInventory) {
304
- inventoryToCheck = sameStoreInventory.qty.available;
305
- }
306
- }
307
- else {
308
- inventoryToCheck = (0, object_1.recursiveCheckObject)(inventoryItem, 'web_inventory.available');
309
- }
310
- if (typeof inventoryToCheck == 'undefined') {
311
- return 'inventory_not_found';
312
- }
313
- if (cartItem.qte > inventoryToCheck) {
314
- return 'already_max_qte';
315
- }
316
- if (itemAlreadyInCart !== -1 && !!!options.isServiceUpsellOfSku) {
317
- if (!!options.shouldCheckInventory && !!inventoryToCheck) {
318
- if ((0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte) > (0, toNumber_1.default)(inventoryToCheck)) {
319
- return 'already_max_qte';
320
- }
321
- }
322
- itemsToUpdate.push({
323
- sku: cartItem.sku,
324
- qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
325
- });
326
- return false;
327
- }
328
- }
329
- if (itemAlreadyInCart !== -1) {
330
- itemsToUpdate.push({
331
- sku: cartItem.sku,
332
- qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
333
- });
334
- return false;
335
- }
336
- return cartItem;
337
- };
338
- const itemsToUse = Array.isArray(items) ? items : [items];
339
- const itemsToAdd = !!options.defaultAdd
340
- ? itemsToUse
341
- : await Promise.all(itemsToUse.map(async (cartItem) => await shouldAddItem(cartItem)));
342
- const filteredItems = itemsToAdd.filter((item) => !!item && typeof item !== 'string');
343
- const hasErrors = itemsToAdd.some((i) => i === 'already_max_qte' || i === 'inventory_not_found');
344
- if (!!hasErrors && !!options.handleInventoryError) {
345
- await options.handleInventoryError(false);
346
- }
347
- if (!!itemsToUpdate.length) {
348
- const updateResult = await (0, exports.verifyAndReturnToBeUpdatedCartItems)(currentCart.items, itemsToUpdate, fetchInventory, {
349
- shouldCheckInventory: options.shouldCheckInventory,
350
- handleInventoryError: options.handleInventoryError
351
- });
352
- if (!!updateResult) {
353
- newCart.items = updateResult.updatedCartItems;
354
- }
355
- }
356
- newCart = Object.assign(Object.assign({}, newCart), { items: [...newCart.items, ...filteredItems] });
357
- return {
358
- cartData: newCart,
359
- added: !!filteredItems && !!filteredItems.length,
360
- updated: !!itemsToUpdate && !!itemsToUpdate.length,
361
- hasErrors: hasErrors
362
- };
363
- };
364
- exports.verifyAndReturnToBeAddedCartItems = verifyAndReturnToBeAddedCartItems;
365
- const getCurrentProvince = (provinceToCheck) => {
366
- let formattedProvince = (0, string_1.stripAccents)(provinceToCheck.toLowerCase());
367
- return (0, find_1.default)(data_1.provinces, (province) => (0, string_1.stripAccents)(province.value.toLowerCase()) === formattedProvince ||
368
- (0, string_1.stripAccents)(province.label.toLowerCase()) === formattedProvince ||
369
- (0, string_1.stripAccents)(province.label_en.toLowerCase()) === formattedProvince);
370
- };
371
- exports.getCurrentProvince = getCurrentProvince;
372
- const getTaxProvinceFromShippingAddress = (address) => {
373
- let taxProvince;
374
- const shippingState = address.state.toLowerCase();
375
- const shortCartShippingState = data_1.provinces.find((p) => p.value.toLowerCase() == shippingState ||
376
- p.label.toLocaleLowerCase() == shippingState ||
377
- p.label_en.toLowerCase() == shippingState);
378
- if (!!shortCartShippingState)
379
- taxProvince = shortCartShippingState.value;
380
- return taxProvince;
381
- };
382
- exports.getTaxProvinceFromShippingAddress = getTaxProvinceFromShippingAddress;
383
- const getIndexedCartData = (cartData, space, options = {}) => {
384
- var _a, _b, _c, _d, _e;
385
- const getPaidAt = () => {
386
- let paidAt;
387
- try {
388
- paidAt =
389
- !!cartData && !!cartData.paid_at
390
- ? (0, data_1.formatDate)(cartData.paid_at)
391
- : !!options.setPaidAtIfUndefined
392
- ? (0, moment_1.default)().toDate()
393
- : null;
394
- }
395
- catch (error) {
396
- paidAt = cartData.paid_at || null;
397
- }
398
- return { paid_at: !!paidAt ? (0, moment_1.default)(paidAt).unix() : null };
399
- };
400
- const itemDict = {};
401
- for (let item of cartData.items) {
402
- itemDict[item.sku] = Object.assign(Object.assign({ qty: item.qte, refunded_qty: (_a = item.refunded_qty) !== null && _a !== void 0 ? _a : 0, refunded: (_b = item.refunded) !== null && _b !== void 0 ? _b : false }, (typeof item.qte_reserved != 'undefined' ? { reserved_qty: item.qte_reserved } : {})), (typeof item.qte_bypass_inventory_check != 'undefined'
403
- ? { bypass_inventory_check_qty: item.qte_bypass_inventory_check }
404
- : {}));
405
- }
406
- const cartPromos = (0, discount_1.getCartPromo)(cartData);
407
- let hasPromos = !!cartPromos && !!cartPromos.length;
408
- let hasCustomDiscount = !!cartData.items.some((i) => !!(0, object_1.recursiveCheckObject)(i, 'promo_price.authorization.note') ||
409
- !!(0, object_1.recursiveCheckObject)(i, 'discount_price.authorization.note'));
410
- const indexedCartData = Object.assign(Object.assign(Object.assign(Object.assign({ objectID: cartData.id, cart_type: cartData.cart_type, status: cartData.status, ref: cartData.ref || '', invoice_ref: (_c = cartData.invoice_ref) !== null && _c !== void 0 ? _c : null, created_at: !!options.createdAt ? (0, moment_1.default)(options.createdAt).unix() : null, updated_at: !!options.updatedAt
411
- ? (0, moment_1.default)(options.updatedAt).unix()
412
- : !!cartData.paid_at
413
- ? getPaidAt().paid_at
414
- : (0, moment_1.default)().unix(), processed_at: !!cartData.processed_by && !!cartData.processed_by.date
415
- ? (0, moment_1.default)((0, data_1.formatDate)(cartData.processed_by.date)).unix()
416
- : null, cart_promos_applied: cartPromos !== null && cartPromos !== void 0 ? cartPromos : null, has_promos: !!hasPromos ? hasPromos : null, has_custom_discount: !!hasCustomDiscount ? hasCustomDiscount : null, items: itemDict, is_booking: !!cartData.is_booking, is_promise_to_purchase: !!cartData.promise_to_purchase, has_transfers: !!cartData.has_transfers && !!options.associatedTransfers ? options.associatedTransfers : undefined }, getPaidAt()), (0, exports.getPaidByForIndexedCart)(cartData)), { subtotal: cartData.subtotal, total: cartData.total, is_pickup: !!cartData.is_pickup, out_of_zone: !!cartData.shipping_payload && !!cartData.shipping_payload.isOutOfArea, billing_phone: cartData.billing_address ? cartData.billing_address.expedition_recipient_phone : null, shipping_phone: cartData.shipping_address ? cartData.shipping_address.expedition_recipient_phone : null, customer_id: !!cartData.customer_id ? cartData.customer_id : null, customer_name: cartData.billing_address ? cartData.billing_address.expedition_recipient_name : null, customer_email: cartData.customer_info && cartData.customer_info.customer_default_email
417
- ? cartData.customer_info.customer_default_email
418
- : cartData.user_email
419
- ? cartData.user_email
420
- : null, customer_company_name: !!(0, object_1.recursiveCheckObject)(cartData, 'customer_info.company_name')
421
- ? (0, object_1.recursiveCheckObject)(cartData, 'customer_info.company_name')
422
- : !!options.customer && !!(0, object_1.recursiveCheckObject)(options.customer, 'company_info.invoice_info.legal_name')
423
- ? (0, object_1.recursiveCheckObject)(options.customer, 'company_info.invoice_info.legal_name')
424
- : null, is_detail_customer: !!!cartData.customer_info || !!!cartData.customer_info.pro_title || !!!cartData.customer_info.pro_proof_doc, customer_type: !!(0, object_1.recursiveCheckObject)(cartData, 'customer_info.pro_title')
425
- ? Cart_1.CartCustomerEnum.PRO
426
- : !!cartData.customer_id
427
- ? Cart_1.CartCustomerEnum.CONNECTED
428
- : Cart_1.CartCustomerEnum.GUEST, customer_rep: !!options.customer ? options.customer.represented_by : null, customer_external_class: (0, object_1.recursiveCheckObject)(cartData, 'customer_info.customer_external_class') ||
429
- (0, object_1.recursiveCheckObject)(options.customer, 'basic_info.customer_professionnal_info.external_customer_class') ||
430
- null, keywords: (0, uniq_1.default)((0, flatten_1.default)(cartData.items.map((item) => {
431
- return [...(item.name || []).map((n) => n.value), item.sku];
432
- }))), cart_slug_list: (0, uniq_1.default)(cartData.items.map((item) => {
433
- return item.parent_slug || '';
434
- })), from_marketplace: (_d = cartData.from_marketplace) !== null && _d !== void 0 ? _d : null }), (!!space.data().id && [services_1.SpaceIdEnum.GR, services_1.SpaceIdEnum.CMV].includes(space.data().id)
435
- ? Object.assign(Object.assign({}, (0, exports.getShippingStoreInfo)(cartData, space)), (services_1.SpaceIdEnum.GR === space.data().id
436
- ? Object.assign(Object.assign({ order_type: (0, invoices_1.getOrderTypeString)(cartData, {
437
- frOnly: true,
438
- slugSafe: (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.BOOKING_BETON, cartData),
439
- installAsType: true
440
- }) }, (0, exports.getAssignedToInfo)(cartData)), { project_number: (_e = (0, object_1.recursiveCheckObject)(cartData, 'shipping_payload.orderOrProjectNumber')) !== null && _e !== void 0 ? _e : null }) : {})) : {}));
441
- return indexedCartData;
442
- };
443
- exports.getIndexedCartData = getIndexedCartData;
444
- const getPaidByForIndexedCart = (order) => {
445
- if (!!!order.paid_by && !!!order.custom_payment_type)
446
- return { paid_by: null, multiple_payments: null };
447
- const currentPaidBy = !!order.custom_payment_type && !!order.custom_payment_type.method
448
- ? order.custom_payment_type.method
449
- : order.paid_by;
450
- if (currentPaidBy === Cart_1.PaymentTypeEnum.MULTIPLE && !!order.payment_details && !!order.payment_details.length) {
451
- const firstPayment = order.payment_details.length === 1 || order.payment_details[0].method !== Cart_1.PaymentTypeEnum.TOBERECEIVED
452
- ? order.payment_details[0]
453
- : order.payment_details[1];
454
- return {
455
- paid_by: firstPayment.method,
456
- multiple_payments: order.payment_details.length > 1
457
- };
458
- }
459
- else {
460
- return {
461
- paid_by: currentPaidBy !== null && currentPaidBy !== void 0 ? currentPaidBy : null,
462
- multiple_payments: null
463
- };
464
- }
465
- };
466
- exports.getPaidByForIndexedCart = getPaidByForIndexedCart;
467
- const getAssignedToInfo = (order) => {
468
- if (!!!order.assigned_to || !!!order.assigned_to.length)
469
- return { assigned_to: null };
470
- const mostRecentAssignedTo = (0, orderBy_1.default)(order.assigned_to, (assigned) => (0, moment_1.default)((0, data_1.formatDate)(assigned.date)).unix(), 'desc')[0];
471
- if (!!!mostRecentAssignedTo || !!!mostRecentAssignedTo.is_active)
472
- return { assigned_to: null };
473
- return {
474
- assigned_to: mostRecentAssignedTo.user_name
475
- };
476
- };
477
- exports.getAssignedToInfo = getAssignedToInfo;
478
- const getShippingStoreInfo = (order, space) => {
479
- if (!!order.is_pickup) {
480
- if (!!order.shipping_payload && !!order.shipping_payload.pickup_store && !!order.shipping_payload.pickup_store.id)
481
- return {
482
- store: {
483
- id: order.shipping_payload.pickup_store.id,
484
- name: order.shipping_payload.pickup_store.name
485
- }
486
- };
487
- if (!!order.shipping_address)
488
- return {
489
- store: (0, exports.getOrderStoreInfo)(space.data(), order.shipping_address.address)
490
- };
491
- }
492
- return { store: { id: 'Livraison', name: 'Livraison' } };
493
- };
494
- exports.getShippingStoreInfo = getShippingStoreInfo;
495
- const checkIfShippingSameAsBilling = (cart) => {
496
- return (!!cart.shipping_address &&
497
- !!cart.billing_address &&
498
- (0, isEqual_1.default)(cart.shipping_address.address, cart.billing_address.address));
499
- };
500
- exports.checkIfShippingSameAsBilling = checkIfShippingSameAsBilling;
501
- const getOrderStoreInfo = (spaceData, storeAddress) => {
502
- const defaultStoreInfo = {
503
- id: 'all',
504
- name: 'all'
505
- };
506
- try {
507
- if (!!!storeAddress || !!!spaceData)
508
- return defaultStoreInfo;
509
- const allStores = spaceData.stores_warehouses;
510
- const sameStore = allStores.find((store) => store.address.postal_code === storeAddress.postal_code);
511
- if (!!!sameStore)
512
- return defaultStoreInfo;
513
- return {
514
- id: sameStore.id,
515
- name: sameStore.name
516
- };
517
- }
518
- catch (e) {
519
- console.log('error on fetching store info for algo order: ', e);
520
- return defaultStoreInfo;
521
- }
522
- };
523
- exports.getOrderStoreInfo = getOrderStoreInfo;
524
- const getModifiedItems = (newItems, oldItems) => {
525
- let itemsForInventory = [];
526
- for (const i of newItems) {
527
- const itemInOldArray = oldItems.find((o) => o.sku === i.sku);
528
- if (!!!itemInOldArray) {
529
- itemsForInventory = [...itemsForInventory, i];
530
- continue;
531
- }
532
- if (i.qte === itemInOldArray.qte)
533
- continue;
534
- const newQte = i.qte - itemInOldArray.qte;
535
- itemsForInventory = [
536
- ...itemsForInventory,
537
- Object.assign(Object.assign({}, i), { qte: newQte })
538
- ];
539
- }
540
- for (const i of oldItems) {
541
- const itemInNewArray = newItems.find((o) => o.sku === i.sku);
542
- if (!!!itemInNewArray) {
543
- itemsForInventory = [
544
- ...itemsForInventory,
545
- Object.assign(Object.assign({}, i), { qte: i.qte == 0 ? 0 : i.qte * -1 })
546
- ];
547
- }
548
- }
549
- return itemsForInventory;
550
- };
551
- exports.getModifiedItems = getModifiedItems;
552
- const getActiveTransfersByItemInCart = (allTransfersForCart, cartItems) => {
553
- if (!!!allTransfersForCart || !!!allTransfersForCart.length)
554
- return [];
555
- const allActive = allTransfersForCart.filter((t) => !!!t.data().completed);
556
- if (!!!allActive.length)
557
- return [];
558
- let foundInTransfer = [];
559
- for (let item of cartItems) {
560
- const sameInTransfers = allActive.filter((t) => t.data().products.some((p) => p.sku == item.sku));
561
- if (!!sameInTransfers)
562
- foundInTransfer.push({
563
- sku: item.sku,
564
- transfers: sameInTransfers,
565
- hasUpdatableTransfer: sameInTransfers.some((t) => t.transferAllowsIndependantProductUpdate()),
566
- hasNonUpdatableTransfer: sameInTransfers.some((t) => !t.transferAllowsIndependantProductUpdate())
567
- });
568
- }
569
- return foundInTransfer;
570
- };
571
- exports.getActiveTransfersByItemInCart = getActiveTransfersByItemInCart;
572
- const getItemSaleUnitSlug = (item) => {
573
- const unit = (item.other_units || []).find((x) => x.is_sale_unit);
574
- return unit ? unit.unit_slug : '';
575
- };
576
- exports.getItemSaleUnitSlug = getItemSaleUnitSlug;
577
- const getItemsToUpdateByTransfer = (allCartTransfers, updatedItems) => {
578
- if (!!!allCartTransfers.length || !!!updatedItems.length)
579
- return;
580
- const skusFoundInTransfers = (0, exports.getActiveTransfersByItemInCart)(allCartTransfers, updatedItems.map((upItem) => upItem.item));
581
- if (!!!skusFoundInTransfers.length)
582
- return;
583
- let transfersToUpdate = {};
584
- for (let upItem of updatedItems) {
585
- const sku = upItem.item.sku;
586
- const qteToUpdate = upItem.qteToUpdate;
587
- let sameItemData = skusFoundInTransfers.find((s) => s.sku == sku);
588
- if (!!!sameItemData || !!!sameItemData.transfers.length)
589
- continue;
590
- const transfersWithSameItem = sameItemData.transfers;
591
- const filteredInventoriesByTransferStores = !!upItem.inventoryItem
592
- ? upItem.inventoryItem.inventories.filter((i) => transfersWithSameItem.some((t) => !!t.data().from && t.data().from == i.store_id))
593
- : undefined;
594
- if (qteToUpdate > 0) {
595
- const inventoryUnitQteToUpdate = (0, inventories_1.getConvertedUnitQuantity)(upItem.item.other_units, qteToUpdate, 'inventory_unit', true);
596
- const initializedStatusTransfers = transfersWithSameItem.filter((t) => t.data().status == TransferRequest_1.TransferRequestStatusEnum.INITIATED);
597
- if (!!initializedStatusTransfers.length) {
598
- const firstTransfer = initializedStatusTransfers[0];
599
- const transferID = firstTransfer.data().id;
600
- if (!!!transferID)
601
- continue;
602
- const dataForTransfer = transfersToUpdate[transferID] || [];
603
- dataForTransfer.push({
604
- sku,
605
- ajustmentQte: inventoryUnitQteToUpdate
606
- });
607
- transfersToUpdate[transferID] = dataForTransfer;
608
- continue;
609
- }
610
- const storeWithMostQuantities = !!filteredInventoriesByTransferStores
611
- ? filteredInventoriesByTransferStores.reduce((storeA, storeB) => (0, toNumber_1.default)(storeA.qty.available) > (0, toNumber_1.default)(storeB.qty.available) ? storeA : storeB)
612
- : undefined;
613
- const transferToUse = !!storeWithMostQuantities
614
- ? transfersWithSameItem.find((t) => t.data().from == storeWithMostQuantities.store_id)
615
- : transfersWithSameItem[0];
616
- if (!!!transferToUse || !!!transferToUse.data().id)
617
- continue;
618
- const dataForTransfer = transfersToUpdate[transferToUse.data().id] || [];
619
- dataForTransfer.push({ sku, ajustmentQte: inventoryUnitQteToUpdate });
620
- transfersToUpdate[transferToUse.data().id] = dataForTransfer;
621
- continue;
622
- }
623
- if (qteToUpdate < 0) {
624
- let qteToRemove = qteToUpdate * -1;
625
- let inventoryUnitQteToRemove = (0, inventories_1.getConvertedUnitQuantity)(upItem.item.other_units, qteToRemove, 'inventory_unit', true);
626
- const inventoriesByAvailabilityAsc = (0, orderBy_1.default)(filteredInventoriesByTransferStores, (i) => (0, toNumber_1.default)(i.qty.available));
627
- const transfersByInventory = (0, orderBy_1.default)(transfersWithSameItem, (t) => [
628
- t.data().status == TransferRequest_1.TransferRequestStatusEnum.INITIATED ? 0 : 1,
629
- inventoriesByAvailabilityAsc.findIndex((i) => i.store_id == t.data().from)
630
- ]);
631
- for (let transfer of transfersByInventory) {
632
- if (!!!transfer.data().id)
633
- continue;
634
- const sameProd = transfer.data().products.find((p) => p.sku == sku);
635
- if (!!!sameProd)
636
- continue;
637
- const currentQte = sameProd.qte;
638
- const qteToBeUpdated = currentQte < inventoryUnitQteToRemove ? currentQte : inventoryUnitQteToRemove;
639
- const dataForTransfer = transfersToUpdate[transfer.data().id] || [];
640
- dataForTransfer.push({ sku, ajustmentQte: qteToBeUpdated == 0 ? qteToBeUpdated : qteToBeUpdated * -1 });
641
- transfersToUpdate[transfer.data().id] = dataForTransfer;
642
- inventoryUnitQteToRemove -= qteToBeUpdated;
643
- if (qteToRemove <= 0)
644
- break;
645
- }
646
- }
647
- }
648
- return transfersToUpdate;
649
- };
650
- exports.getItemsToUpdateByTransfer = getItemsToUpdateByTransfer;
651
- const getILangForUpdateType = (updateType) => {
652
- const dict = {
653
- [`${Cart_1.UpdateTypeEnum.CART_CONTENT}`]: { fr: 'Ajustement de la commande', en: 'Updated cart content' },
654
- [`${Cart_1.UpdateTypeEnum.PROCESSING_STORE}`]: {
655
- fr: 'Changement succ. de traitement',
656
- en: 'Updated processing store'
657
- }
658
- };
659
- return dict[updateType || Cart_1.UpdateTypeEnum.CART_CONTENT];
660
- };
661
- exports.getILangForUpdateType = getILangForUpdateType;
662
- const getSubtotalToCheckForPromo = (allCartItems, currentCartSubtotal, space, feePromosTotalRemoved, removeServiceFees) => {
663
- const serviceFeeProducts = !!!removeServiceFees
664
- ? []
665
- : allCartItems.filter((i) => !!i.is_service && !(0, g2_1.isEscompteSuppItem)(i.sku));
666
- const serviceFeeSubtotal = !!!serviceFeeProducts.length
667
- ? 0
668
- : (0, sumBy_1.default)(serviceFeeProducts, (i) => {
669
- const itemPrice = (0, products_1.getLowestPrice)(i).price.amount;
670
- return (0, round_1.default)(((0, isNumber_1.default)(itemPrice) ? Number(itemPrice) : 0) * i.qte, space.data().product_preferences.decimals || 2);
671
- });
672
- let totalRemoved = serviceFeeSubtotal;
673
- if (!!totalRemoved) {
674
- totalRemoved -= feePromosTotalRemoved;
675
- }
676
- return currentCartSubtotal - totalRemoved;
677
- };
678
- exports.getSubtotalToCheckForPromo = getSubtotalToCheckForPromo;
679
- const getAllPromoAppliedPrices = (allPromos, subtotalToUse, items, space, isRefund) => {
680
- var _a;
681
- let promoAmounts = [];
682
- let updatedSubtotal = subtotalToUse;
683
- let cartPromos = allPromos.filter((c) => c.applies_to != Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES);
684
- cartPromos = (0, orderBy_1.default)(cartPromos, (p) => {
685
- if ([Cart_1.CartPromoAppliesToEnum.PRODUCT, Cart_1.CartPromoAppliesToEnum.ITEMS].includes(p.applies_to))
686
- return 1;
687
- if (p.promo_code && p.applies_to === Cart_1.CartPromoAppliesToEnum.SUBTOTAL) {
688
- return 3;
689
- }
690
- return 2;
691
- });
692
- let feePromosTotal = 0;
693
- for (let aPromo of cartPromos) {
694
- let productTotalAmount = 0;
695
- if ((isRefund || updatedSubtotal > 0) &&
696
- !!aPromo &&
697
- (aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.SUBTOTAL || aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT)) {
698
- let amountToRemove = 0;
699
- const amountUnit = aPromo.amount_unit || IDiscountRule_1.ResultActionEnum.PERCENT;
700
- const appliesToProduct = aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT;
701
- const subtotalToCheck = !!aPromo.exclude_services_and_fees &&
702
- !![IDiscountRule_1.ResultActionEnum.PERCENT, IDiscountRule_1.ResultActionEnum.PERCENT_SKU, IDiscountRule_1.ResultActionEnum.PERCENT_CATEGORY].includes(amountUnit) &&
703
- !!!appliesToProduct
704
- ? (0, exports.getSubtotalToCheckForPromo)(items, updatedSubtotal, space, feePromosTotal, true)
705
- : updatedSubtotal;
706
- if (appliesToProduct) {
707
- let skuArray = [];
708
- if (!!aPromo.item_given) {
709
- skuArray = (0, discount_1.getSkuArrayForPromo)(aPromo.item_given);
710
- }
711
- const itemToCheck = items.filter((item) => !!aPromo && !!skuArray.includes(item.sku));
712
- for (const anItem of itemToCheck) {
713
- productTotalAmount += amountUnit.includes('amount')
714
- ? anItem.qte
715
- : (0, products_1.getLowestPrice)(anItem).price.amount * anItem.qte;
716
- const newAmountToRemove = (0, data_1.getPromoTotalAmount)(items, aPromo, 'number', anItem.sku);
717
- if (typeof newAmountToRemove !== 'number')
718
- continue;
719
- if (!!anItem && !!anItem.is_service)
720
- feePromosTotal += newAmountToRemove;
721
- amountToRemove += newAmountToRemove;
722
- }
723
- }
724
- else {
725
- amountToRemove = (_a = aPromo.amount_removed) !== null && _a !== void 0 ? _a : 0;
726
- }
727
- amountToRemove = (0, round_1.default)(amountToRemove, 2);
728
- const newSubtotal = amountUnit === IDiscountRule_1.ResultActionEnum.AMOUNT || aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT
729
- ? updatedSubtotal - amountToRemove
730
- : updatedSubtotal - subtotalToCheck * (amountToRemove / 100);
731
- if (!!aPromo.discount_id) {
732
- promoAmounts.push({
733
- id: aPromo.discount_id,
734
- subtotalBefore: updatedSubtotal,
735
- subtotalAfter: (0, round_1.default)(newSubtotal, 2),
736
- amountRemoved: amountToRemove,
737
- productTotalAmount: productTotalAmount,
738
- appliesTo: aPromo.applies_to
739
- });
740
- }
741
- updatedSubtotal = (0, round_1.default)(newSubtotal, 2);
742
- }
743
- }
744
- return promoAmounts;
745
- };
746
- exports.getAllPromoAppliedPrices = getAllPromoAppliedPrices;
747
- const getAddressStrArray = (address) => {
748
- return [
749
- `${!!address.app ? address.app + ' - ' : ''}${address.line1 || ''}`,
750
- `${!!address.city ? address.city + ', ' : ''}${address.state || ''} ${address.postal_code || ''}`
751
- ].filter((addr) => !!addr.trim());
752
- };
753
- exports.getAddressStrArray = getAddressStrArray;
754
- const getCartPaymentMethods = (cartData) => {
755
- return !!cartData.payment_details
756
- ? (cartData.payment_details || []).map((p) => p.method)
757
- : !!cartData.paid_by
758
- ? [cartData.paid_by]
759
- : [];
760
- };
761
- exports.getCartPaymentMethods = getCartPaymentMethods;
762
- const getLastUserWhoTookPayment = (cartData, startCheckAt = 'processed_by') => {
763
- let foundUser = undefined;
764
- let allSteps = ['completed_by', 'updated_by', 'processed_by', 'created_by'];
765
- allSteps.splice(allSteps.indexOf(startCheckAt));
766
- const checkCartProp = (property) => {
767
- const foundData = cartData[property];
768
- if (!!!foundData)
769
- return;
770
- if (Array.isArray(foundData)) {
771
- return foundData.find((d) => d.took_payment);
772
- }
773
- return foundData;
774
- };
775
- for (const stepToCheck of allSteps) {
776
- foundUser = checkCartProp(stepToCheck);
777
- if (foundUser)
778
- break;
779
- }
780
- return foundUser;
781
- };
782
- exports.getLastUserWhoTookPayment = getLastUserWhoTookPayment;
783
- const calculateAmountForCustomPromo = (item, type, amount) => {
784
- if (type === Cart_1.CustomPromoType.UNIT_PRICE)
785
- return amount;
786
- const initialPrice = !!item.discount_price ? item.discount_price.amount : item.regular_price.amount;
787
- const promoAmount = (initialPrice * amount) / 100;
788
- return initialPrice - promoAmount;
789
- };
790
- exports.calculateAmountForCustomPromo = calculateAmountForCustomPromo;
791
- const validateStoreCreditUsage = async (creditToBeUsedInCart, customerID, space, creditSlug) => {
792
- const hasStoreCreditsSet = space.options.checkIfOptionIsSet('payment.space_has_store_credits');
793
- if (!hasStoreCreditsSet) {
794
- return {
795
- valid: false,
796
- error: {
797
- en: 'This retailer does not support store credits.',
798
- fr: "Ce commerçant n'offre pas de crédits en magasin."
799
- }
800
- };
801
- }
802
- if (!customerID) {
803
- return {
804
- valid: false,
805
- error: {
806
- en: 'Only logged-in users can use the credits.',
807
- fr: 'Seuls les utilisateur connectés peuvent utiliser les crédits.'
808
- }
809
- };
810
- }
811
- const creditAmount = creditToBeUsedInCart !== null && creditToBeUsedInCart !== void 0 ? creditToBeUsedInCart : 0;
812
- let valid = creditAmount >= 0;
813
- if (valid) {
814
- let clientCheck = await space.customers.credits.validate(customerID, creditSlug, creditAmount);
815
- valid = !clientCheck;
816
- }
817
- return Object.assign({ valid }, (!valid
818
- ? {
819
- error: {
820
- en: 'Insufficient credits.',
821
- fr: 'Crédits insufisant.'
822
- }
823
- }
824
- : {}));
825
- };
826
- exports.validateStoreCreditUsage = validateStoreCreditUsage;
827
- const getPurchasedPalletsQuantityForCustomer = async (space, customerId) => {
828
- const palletSku = '210000000';
829
- const completedStatus = Cart_1.CartStatusEnum.COMPLETED;
830
- try {
831
- const searchInfo = (0, searchIndexes_1.getFetchInfoAlgoliaAddioSearch)(space);
832
- const filterStr = `customer_id:${customerId} AND status:${completedStatus} AND (items.${palletSku}.refunded:false OR items.${palletSku}.refunded:true)`;
833
- const indexedOrders = await Cart_2.default.fetch({
834
- app: searchInfo.app,
835
- api: searchInfo.api,
836
- space,
837
- filters: '',
838
- hpp: 1000,
839
- page: 0,
840
- query: '',
841
- indice: 'orders',
842
- f: filterStr,
843
- useProspr: searchInfo.useProspr
844
- });
845
- if (!!!indexedOrders.hits || !!!indexedOrders.hits.length) {
846
- return 0;
847
- }
848
- let totalPallets = 0;
849
- indexedOrders.hits.forEach((indexedOrder) => {
850
- const palletItem = !!indexedOrder.items ? indexedOrder.items[palletSku] : undefined;
851
- if (palletItem) {
852
- totalPallets += (0, toNumber_1.default)(palletItem.qty || 0);
853
- }
854
- });
855
- return totalPallets;
856
- }
857
- catch (error) {
858
- console.error('Error fetching purchased pallets:', error);
859
- throw new Error(`Failed to fetch purchased pallets: ${error}`);
860
- }
861
- };
862
- exports.getPurchasedPalletsQuantityForCustomer = getPurchasedPalletsQuantityForCustomer;
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
+ exports.getPurchasedPalletsQuantityForCustomer = exports.validateStoreCreditUsage = exports.calculateAmountForCustomPromo = exports.getLastUserWhoTookPayment = exports.getCartPaymentMethods = exports.getAddressStrArray = exports.getAllPromoAppliedPrices = exports.getSubtotalToCheckForPromo = exports.getILangForUpdateType = exports.getItemsToUpdateByTransfer = exports.getItemSaleUnitSlug = exports.getActiveTransfersByItemInCart = exports.getModifiedItems = exports.getOrderStoreInfo = exports.checkIfShippingSameAsBilling = exports.getShippingStoreInfo = exports.getAssignedToInfo = exports.getPaidByForIndexedCart = exports.getIndexedCartData = exports.getTaxProvinceFromShippingAddress = exports.getCurrentProvince = exports.verifyAndReturnToBeAddedCartItems = exports.addCartItems = exports.generateCartItemForSku = exports.getActualDiscountPrice = exports.getActualPromoPrice = exports.priceWasOverridden = exports.deleteCartItem = exports.verifyAndReturnToBeUpdatedCartItems = exports.updateCartItems = void 0;
7
+ const toNumber_1 = __importDefault(require("lodash/toNumber"));
8
+ const findIndex_1 = __importDefault(require("lodash/findIndex"));
9
+ const remove_1 = __importDefault(require("lodash/remove"));
10
+ const flatten_1 = __importDefault(require("lodash/flatten"));
11
+ const orderBy_1 = __importDefault(require("lodash/orderBy"));
12
+ const uniq_1 = __importDefault(require("lodash/uniq"));
13
+ const moment_1 = __importDefault(require("moment"));
14
+ const isEqual_1 = __importDefault(require("lodash/isEqual"));
15
+ const find_1 = __importDefault(require("lodash/find"));
16
+ const isNumber_1 = __importDefault(require("lodash/isNumber"));
17
+ const round_1 = __importDefault(require("lodash/round"));
18
+ const sumBy_1 = __importDefault(require("lodash/sumBy"));
19
+ const Cart_1 = require("../Interfaces/Cart");
20
+ const string_1 = require("./string");
21
+ const g2_1 = require("../rules/GR/utils/g2");
22
+ const object_1 = require("./object");
23
+ const invoices_1 = require("../rules/GR/utils/invoices");
24
+ const data_1 = require("./data");
25
+ const services_1 = require("./services");
26
+ const discount_1 = require("./discount");
27
+ const IDiscountRule_1 = require("../Interfaces/Rules/IDiscountRule");
28
+ const products_1 = require("./products");
29
+ const TransferRequest_1 = require("../Interfaces/TransferRequest");
30
+ const cart_1 = require("../rules/GR/utils/cart");
31
+ const cart_2 = require("../rules/GR/interfaces/cart");
32
+ const inventories_1 = require("./inventories");
33
+ const searchIndexes_1 = require("./searchIndexes");
34
+ const Cart_2 = __importDefault(require("../lib/Cart"));
35
+ const updateCartItems = async (currentCart, items, fetchInventory, shouldCheckInventory = true, handleInventoryError) => {
36
+ let updatedCart = Object.assign({}, currentCart);
37
+ const itemsToUpdate = Array.isArray(items) ? items : [items];
38
+ const updatedItems = [];
39
+ for (const item of itemsToUpdate) {
40
+ const cartItemIndex = (0, findIndex_1.default)(updatedCart.items, (i) => i.sku === item.sku);
41
+ const cartItem = cartItemIndex !== -1 ? updatedCart.items[cartItemIndex] : undefined;
42
+ if (!!cartItem) {
43
+ if (!!shouldCheckInventory) {
44
+ let inventoryItem = undefined;
45
+ try {
46
+ inventoryItem = !!cartItem && !!cartItem.is_service ? undefined : await fetchInventory(item.sku);
47
+ }
48
+ catch (e) {
49
+ console.log('error on fetching inventoryItem: ', e);
50
+ }
51
+ if (!!inventoryItem) {
52
+ const webStore = inventoryItem.web_inventory;
53
+ if (!!!inventoryItem.is_infinite_stock && !!!cartItem.is_service) {
54
+ if (!!!webStore || !!!webStore.available) {
55
+ continue;
56
+ }
57
+ if (item.qte > webStore.available) {
58
+ if (!!handleInventoryError) {
59
+ await handleInventoryError(true);
60
+ }
61
+ updatedItems.push({
62
+ sku: item.sku,
63
+ updated: false
64
+ });
65
+ continue;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ updatedCart.items[cartItemIndex] = Object.assign(Object.assign({}, cartItem), { qte: item.qte, qte_override: item.qte_override });
71
+ updatedItems.push({ sku: item.sku, updated: true });
72
+ }
73
+ }
74
+ return { updatedCart, updatedItems };
75
+ };
76
+ exports.updateCartItems = updateCartItems;
77
+ const verifyAndReturnToBeUpdatedCartItems = async (currentCartItems, items, fetchInventory, options = {}) => {
78
+ let updatedCartItems = [...currentCartItems];
79
+ const updatedDetails = [];
80
+ for (const item of items) {
81
+ const cartItemIndex = (0, findIndex_1.default)(updatedCartItems, (i) => i.sku === item.sku);
82
+ const cartItem = cartItemIndex !== -1 ? updatedCartItems[cartItemIndex] : undefined;
83
+ if (!!cartItem) {
84
+ if (!!options.shouldCheckInventory) {
85
+ let inventoryItem = undefined;
86
+ try {
87
+ inventoryItem = !!cartItem && !!cartItem.is_service ? undefined : await fetchInventory(item.sku);
88
+ }
89
+ catch (e) {
90
+ console.log('error on fetching inventoryItem: ', e);
91
+ }
92
+ if (!!inventoryItem) {
93
+ let inventoryToCheck;
94
+ if (options.shouldCheckStoreInventory) {
95
+ const sameStoreInventory = inventoryItem.inventories.find((i) => i.store_id == options.shouldCheckStoreInventory);
96
+ if (!!sameStoreInventory) {
97
+ inventoryToCheck = sameStoreInventory.qty.available;
98
+ }
99
+ }
100
+ else {
101
+ inventoryToCheck = (0, object_1.recursiveCheckObject)(inventoryItem, 'web_inventory.available');
102
+ }
103
+ if (typeof inventoryToCheck == 'undefined') {
104
+ updatedDetails.push({
105
+ sku: item.sku,
106
+ updated: false
107
+ });
108
+ continue;
109
+ }
110
+ if (!!!inventoryItem.is_infinite_stock && !!!cartItem.is_service) {
111
+ if (!inventoryToCheck) {
112
+ updatedDetails.push({
113
+ sku: item.sku,
114
+ updated: false
115
+ });
116
+ continue;
117
+ }
118
+ if (item.qte > inventoryToCheck) {
119
+ if (!!options.handleInventoryError) {
120
+ await options.handleInventoryError(true);
121
+ }
122
+ updatedDetails.push({
123
+ sku: item.sku,
124
+ updated: false
125
+ });
126
+ continue;
127
+ }
128
+ }
129
+ }
130
+ }
131
+ updatedCartItems[cartItemIndex] = Object.assign(Object.assign({}, cartItem), { qte: item.qte, qte_override: item.qte_override });
132
+ updatedDetails.push({ sku: item.sku, updated: true });
133
+ }
134
+ }
135
+ return { updatedCartItems, updatedDetails };
136
+ };
137
+ exports.verifyAndReturnToBeUpdatedCartItems = verifyAndReturnToBeUpdatedCartItems;
138
+ const deleteCartItem = (currentCart, sku, onlyIfUpsellOf) => {
139
+ const deletedItemsCart = Object.assign({}, currentCart);
140
+ sku.forEach((itm) => (0, remove_1.default)(deletedItemsCart.items, (item) => {
141
+ if (!!item.is_upsell_of_sku && !!onlyIfUpsellOf)
142
+ return item.sku === itm && item.is_upsell_of_sku === onlyIfUpsellOf;
143
+ return item.sku === itm;
144
+ }));
145
+ return deletedItemsCart;
146
+ };
147
+ exports.deleteCartItem = deleteCartItem;
148
+ const priceWasOverridden = (itemToCheck) => {
149
+ return ((!!itemToCheck.promo_price && !!itemToCheck.promo_price.overridden) ||
150
+ (!!itemToCheck.discount_price && !!itemToCheck.discount_price.overridden));
151
+ };
152
+ exports.priceWasOverridden = priceWasOverridden;
153
+ const getActualPromoPrice = (item, output) => {
154
+ const orgPrice = (0, exports.getActualDiscountPrice)(item, '$');
155
+ let price = orgPrice;
156
+ if (!!item.promo_price) {
157
+ price = item.promo_price.amount;
158
+ }
159
+ if (output === '%')
160
+ return !!!orgPrice ? 0 : (1 - price / orgPrice) * 100;
161
+ return price;
162
+ };
163
+ exports.getActualPromoPrice = getActualPromoPrice;
164
+ const getActualDiscountPrice = (item, output) => {
165
+ let price = item.regular_price.amount;
166
+ if (!!item.discount_price) {
167
+ price = item.discount_price.amount;
168
+ }
169
+ if (output === '%')
170
+ return (1 - price / item.regular_price.amount) * 100;
171
+ return price;
172
+ };
173
+ exports.getActualDiscountPrice = getActualDiscountPrice;
174
+ const generateCartItemForSku = async (indexedProduct, sku, qte) => {
175
+ try {
176
+ const sameDecli = indexedProduct.declinations.find((d) => d.sku == sku);
177
+ if (!sameDecli)
178
+ throw new Error('Could not find decli in product!');
179
+ let decliImgs = sameDecli.images_path;
180
+ if (!decliImgs) {
181
+ const parentImgs = indexedProduct.image_files;
182
+ if (!!parentImgs && parentImgs.length)
183
+ decliImgs = parentImgs.slice(0, 1);
184
+ else
185
+ decliImgs = [];
186
+ }
187
+ return Object.assign(Object.assign(Object.assign({}, sameDecli), (!!decliImgs.length ? { images_path: decliImgs } : {})), { qte: qte, parent_slug: indexedProduct.slug, product_upsells: indexedProduct.product_upsells, categories: indexedProduct.categories });
188
+ }
189
+ catch (e) {
190
+ console.log('error on converting prod to cart item: ', e.toString());
191
+ return;
192
+ }
193
+ };
194
+ exports.generateCartItemForSku = generateCartItemForSku;
195
+ const addCartItems = async (currentCart, newItems, fetchInventory, shouldCheckInventory = true, handleInventoryError, defaultAdd = false, isServiceUpsellOfSku = false, customPriceList) => {
196
+ let newCart = Object.assign({}, currentCart);
197
+ let items = [...newItems];
198
+ if (!!customPriceList) {
199
+ items = items.map((i) => !!(0, exports.priceWasOverridden)(i) ? i : (0, g2_1.checkForCustomPriceEquivalent)(i, customPriceList));
200
+ }
201
+ let itemsToUpdate = [];
202
+ const shouldAddItem = async (cartItem) => {
203
+ const checkInventory = !!shouldCheckInventory && !!!cartItem.is_service && !!!cartItem.is_upsell_of_sku;
204
+ let inventoryItem;
205
+ if (!!fetchInventory) {
206
+ try {
207
+ inventoryItem = !!cartItem.is_service ? undefined : await fetchInventory(cartItem.sku);
208
+ }
209
+ catch (e) {
210
+ console.log('error on fetching inventory: ', e);
211
+ }
212
+ }
213
+ const itemAlreadyInCart = (0, findIndex_1.default)(newCart.items, (item) => item.sku === cartItem.sku);
214
+ if (!!checkInventory) {
215
+ if (!!!inventoryItem)
216
+ return 'already_max_qte';
217
+ if (!!inventoryItem.is_infinite_stock || !!cartItem.is_service || !!cartItem.is_sample)
218
+ return cartItem;
219
+ if (!!!inventoryItem.web_inventory || !!!inventoryItem.web_inventory.available) {
220
+ return false;
221
+ }
222
+ if (cartItem.qte > inventoryItem.web_inventory.available) {
223
+ return 'already_max_qte';
224
+ }
225
+ if (itemAlreadyInCart !== -1 && !!!isServiceUpsellOfSku) {
226
+ if (!!shouldCheckInventory && !!inventoryItem.web_inventory && !!inventoryItem.web_inventory.available) {
227
+ if ((0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte) >
228
+ (0, toNumber_1.default)(inventoryItem.web_inventory.available)) {
229
+ return 'already_max_qte';
230
+ }
231
+ }
232
+ itemsToUpdate.push({
233
+ sku: cartItem.sku,
234
+ qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
235
+ });
236
+ return false;
237
+ }
238
+ }
239
+ if (itemAlreadyInCart !== -1) {
240
+ itemsToUpdate.push({
241
+ sku: cartItem.sku,
242
+ qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
243
+ });
244
+ return false;
245
+ }
246
+ return cartItem;
247
+ };
248
+ const itemsToAdd = Array.isArray(items)
249
+ ? !!defaultAdd
250
+ ? items
251
+ : await Promise.all(items.map(async (cartItem) => await shouldAddItem(cartItem)))
252
+ : !!defaultAdd
253
+ ? [items]
254
+ : [await shouldAddItem(items)];
255
+ const filteredItems = itemsToAdd.filter((item) => !!item && item !== 'already_max_qte');
256
+ const hasMaxQtyItems = itemsToAdd.find((i) => i === 'already_max_qte');
257
+ if (!!hasMaxQtyItems && !!handleInventoryError) {
258
+ await handleInventoryError(false);
259
+ }
260
+ if (!!itemsToUpdate.length) {
261
+ const updateResult = await (0, exports.updateCartItems)(currentCart, itemsToUpdate, fetchInventory, shouldCheckInventory, handleInventoryError);
262
+ if (!!updateResult) {
263
+ newCart = updateResult.updatedCart;
264
+ }
265
+ }
266
+ newCart = Object.assign(Object.assign({}, newCart), { items: [...newCart.items, ...filteredItems] });
267
+ return {
268
+ cartData: newCart,
269
+ added: !!filteredItems && !!filteredItems.length,
270
+ updated: !!itemsToUpdate && !!itemsToUpdate.length,
271
+ maxQtyItems: !!hasMaxQtyItems
272
+ };
273
+ };
274
+ exports.addCartItems = addCartItems;
275
+ const verifyAndReturnToBeAddedCartItems = async (currentCart, newItems, fetchInventory, options = {}) => {
276
+ let newCart = Object.assign({}, currentCart);
277
+ let items = [...newItems];
278
+ if (!!options.customPriceList) {
279
+ items = items.map((i) => !!(0, exports.priceWasOverridden)(i) ? i : (0, g2_1.checkForCustomPriceEquivalent)(i, options.customPriceList));
280
+ }
281
+ let itemsToUpdate = [];
282
+ const shouldAddItem = async (cartItem) => {
283
+ const checkInventory = !!options.shouldCheckInventory && !!!cartItem.is_service && !!!cartItem.is_upsell_of_sku;
284
+ let inventoryItem;
285
+ if (!!fetchInventory) {
286
+ try {
287
+ inventoryItem = !!cartItem.is_service ? undefined : await fetchInventory(cartItem.sku);
288
+ }
289
+ catch (e) {
290
+ console.log('error on fetching inventory: ', e);
291
+ }
292
+ }
293
+ const itemAlreadyInCart = (0, findIndex_1.default)(newCart.items, (item) => item.sku === cartItem.sku);
294
+ if (!!checkInventory) {
295
+ if (!!!inventoryItem)
296
+ return 'inventory_not_found';
297
+ if (inventoryItem.is_infinite_stock || cartItem.is_service || cartItem.is_sample)
298
+ return cartItem;
299
+ let inventoryToCheck;
300
+ if (options.shouldCheckStoreInventory) {
301
+ const sameStoreInventory = inventoryItem.inventories.find((i) => i.store_id == options.shouldCheckStoreInventory);
302
+ if (!!sameStoreInventory) {
303
+ inventoryToCheck = sameStoreInventory.qty.available;
304
+ }
305
+ }
306
+ else {
307
+ inventoryToCheck = (0, object_1.recursiveCheckObject)(inventoryItem, 'web_inventory.available');
308
+ }
309
+ if (typeof inventoryToCheck == 'undefined') {
310
+ return 'inventory_not_found';
311
+ }
312
+ if (cartItem.qte > inventoryToCheck) {
313
+ return 'already_max_qte';
314
+ }
315
+ if (itemAlreadyInCart !== -1 && !!!options.isServiceUpsellOfSku) {
316
+ if (!!options.shouldCheckInventory && !!inventoryToCheck) {
317
+ if ((0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte) > (0, toNumber_1.default)(inventoryToCheck)) {
318
+ return 'already_max_qte';
319
+ }
320
+ }
321
+ itemsToUpdate.push({
322
+ sku: cartItem.sku,
323
+ qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
324
+ });
325
+ return false;
326
+ }
327
+ }
328
+ if (itemAlreadyInCart !== -1) {
329
+ itemsToUpdate.push({
330
+ sku: cartItem.sku,
331
+ qte: (0, toNumber_1.default)(newCart.items[itemAlreadyInCart].qte) + (0, toNumber_1.default)(cartItem.qte)
332
+ });
333
+ return false;
334
+ }
335
+ return cartItem;
336
+ };
337
+ const itemsToUse = Array.isArray(items) ? items : [items];
338
+ const itemsToAdd = !!options.defaultAdd
339
+ ? itemsToUse
340
+ : await Promise.all(itemsToUse.map(async (cartItem) => await shouldAddItem(cartItem)));
341
+ const filteredItems = itemsToAdd.filter((item) => !!item && typeof item !== 'string');
342
+ const hasErrors = itemsToAdd.some((i) => i === 'already_max_qte' || i === 'inventory_not_found');
343
+ if (!!hasErrors && !!options.handleInventoryError) {
344
+ await options.handleInventoryError(false);
345
+ }
346
+ if (!!itemsToUpdate.length) {
347
+ const updateResult = await (0, exports.verifyAndReturnToBeUpdatedCartItems)(currentCart.items, itemsToUpdate, fetchInventory, {
348
+ shouldCheckInventory: false
349
+ });
350
+ if (!!updateResult) {
351
+ newCart.items = updateResult.updatedCartItems;
352
+ }
353
+ }
354
+ newCart = Object.assign(Object.assign({}, newCart), { items: [...newCart.items, ...filteredItems] });
355
+ return {
356
+ cartData: newCart,
357
+ added: !!filteredItems && !!filteredItems.length,
358
+ updated: !!itemsToUpdate && !!itemsToUpdate.length,
359
+ hasErrors: hasErrors
360
+ };
361
+ };
362
+ exports.verifyAndReturnToBeAddedCartItems = verifyAndReturnToBeAddedCartItems;
363
+ const getCurrentProvince = (provinceToCheck) => {
364
+ let formattedProvince = (0, string_1.stripAccents)(provinceToCheck.toLowerCase());
365
+ return (0, find_1.default)(data_1.provinces, (province) => (0, string_1.stripAccents)(province.value.toLowerCase()) === formattedProvince ||
366
+ (0, string_1.stripAccents)(province.label.toLowerCase()) === formattedProvince ||
367
+ (0, string_1.stripAccents)(province.label_en.toLowerCase()) === formattedProvince);
368
+ };
369
+ exports.getCurrentProvince = getCurrentProvince;
370
+ const getTaxProvinceFromShippingAddress = (address) => {
371
+ let taxProvince;
372
+ const shippingState = address.state.toLowerCase();
373
+ const shortCartShippingState = data_1.provinces.find((p) => p.value.toLowerCase() == shippingState ||
374
+ p.label.toLocaleLowerCase() == shippingState ||
375
+ p.label_en.toLowerCase() == shippingState);
376
+ if (!!shortCartShippingState)
377
+ taxProvince = shortCartShippingState.value;
378
+ return taxProvince;
379
+ };
380
+ exports.getTaxProvinceFromShippingAddress = getTaxProvinceFromShippingAddress;
381
+ const getIndexedCartData = (cartData, space, options = {}) => {
382
+ var _a, _b, _c, _d, _e;
383
+ const getPaidAt = () => {
384
+ let paidAt;
385
+ try {
386
+ paidAt =
387
+ !!cartData && !!cartData.paid_at
388
+ ? (0, data_1.formatDate)(cartData.paid_at)
389
+ : !!options.setPaidAtIfUndefined
390
+ ? (0, moment_1.default)().toDate()
391
+ : null;
392
+ }
393
+ catch (error) {
394
+ paidAt = cartData.paid_at || null;
395
+ }
396
+ return { paid_at: !!paidAt ? (0, moment_1.default)(paidAt).unix() : null };
397
+ };
398
+ const itemDict = {};
399
+ for (let item of cartData.items) {
400
+ itemDict[item.sku] = Object.assign(Object.assign({ qty: item.qte, refunded_qty: (_a = item.refunded_qty) !== null && _a !== void 0 ? _a : 0, refunded: (_b = item.refunded) !== null && _b !== void 0 ? _b : false }, (typeof item.qte_reserved != 'undefined' ? { reserved_qty: item.qte_reserved } : {})), (typeof item.qte_bypass_inventory_check != 'undefined'
401
+ ? { bypass_inventory_check_qty: item.qte_bypass_inventory_check }
402
+ : {}));
403
+ }
404
+ const cartPromos = (0, discount_1.getCartPromo)(cartData);
405
+ let hasPromos = !!cartPromos && !!cartPromos.length;
406
+ let hasCustomDiscount = !!cartData.items.some((i) => !!(0, object_1.recursiveCheckObject)(i, 'promo_price.authorization.note') ||
407
+ !!(0, object_1.recursiveCheckObject)(i, 'discount_price.authorization.note'));
408
+ const indexedCartData = Object.assign(Object.assign(Object.assign(Object.assign({ objectID: cartData.id, cart_type: cartData.cart_type, status: cartData.status, ref: cartData.ref || '', invoice_ref: (_c = cartData.invoice_ref) !== null && _c !== void 0 ? _c : null, created_at: !!options.createdAt ? (0, moment_1.default)(options.createdAt).unix() : null, updated_at: !!options.updatedAt
409
+ ? (0, moment_1.default)(options.updatedAt).unix()
410
+ : !!cartData.paid_at
411
+ ? getPaidAt().paid_at
412
+ : (0, moment_1.default)().unix(), processed_at: !!cartData.processed_by && !!cartData.processed_by.date
413
+ ? (0, moment_1.default)((0, data_1.formatDate)(cartData.processed_by.date)).unix()
414
+ : null, cart_promos_applied: cartPromos !== null && cartPromos !== void 0 ? cartPromos : null, has_promos: !!hasPromos ? hasPromos : null, has_custom_discount: !!hasCustomDiscount ? hasCustomDiscount : null, items: itemDict, is_booking: !!cartData.is_booking, is_promise_to_purchase: !!cartData.promise_to_purchase, has_transfers: !!cartData.has_transfers && !!options.associatedTransfers ? options.associatedTransfers : undefined }, getPaidAt()), (0, exports.getPaidByForIndexedCart)(cartData)), { subtotal: cartData.subtotal, total: cartData.total, is_pickup: !!cartData.is_pickup, out_of_zone: !!cartData.shipping_payload && !!cartData.shipping_payload.isOutOfArea, billing_phone: cartData.billing_address ? cartData.billing_address.expedition_recipient_phone : null, shipping_phone: cartData.shipping_address ? cartData.shipping_address.expedition_recipient_phone : null, customer_id: !!cartData.customer_id ? cartData.customer_id : null, customer_name: cartData.billing_address ? cartData.billing_address.expedition_recipient_name : null, customer_email: cartData.customer_info && cartData.customer_info.customer_default_email
415
+ ? cartData.customer_info.customer_default_email
416
+ : cartData.user_email
417
+ ? cartData.user_email
418
+ : null, customer_company_name: !!(0, object_1.recursiveCheckObject)(cartData, 'customer_info.company_name')
419
+ ? (0, object_1.recursiveCheckObject)(cartData, 'customer_info.company_name')
420
+ : !!options.customer && !!(0, object_1.recursiveCheckObject)(options.customer, 'company_info.invoice_info.legal_name')
421
+ ? (0, object_1.recursiveCheckObject)(options.customer, 'company_info.invoice_info.legal_name')
422
+ : null, is_detail_customer: !!!cartData.customer_info || !!!cartData.customer_info.pro_title || !!!cartData.customer_info.pro_proof_doc, customer_type: !!(0, object_1.recursiveCheckObject)(cartData, 'customer_info.pro_title')
423
+ ? Cart_1.CartCustomerEnum.PRO
424
+ : !!cartData.customer_id
425
+ ? Cart_1.CartCustomerEnum.CONNECTED
426
+ : Cart_1.CartCustomerEnum.GUEST, customer_rep: !!options.customer ? options.customer.represented_by : null, customer_external_class: (0, object_1.recursiveCheckObject)(cartData, 'customer_info.customer_external_class') ||
427
+ (0, object_1.recursiveCheckObject)(options.customer, 'basic_info.customer_professionnal_info.external_customer_class') ||
428
+ null, keywords: (0, uniq_1.default)((0, flatten_1.default)(cartData.items.map((item) => {
429
+ return [...(item.name || []).map((n) => n.value), item.sku];
430
+ }))), cart_slug_list: (0, uniq_1.default)(cartData.items.map((item) => {
431
+ return item.parent_slug || '';
432
+ })), from_marketplace: (_d = cartData.from_marketplace) !== null && _d !== void 0 ? _d : null }), (!!space.data().id && [services_1.SpaceIdEnum.GR, services_1.SpaceIdEnum.CMV].includes(space.data().id)
433
+ ? Object.assign(Object.assign({}, (0, exports.getShippingStoreInfo)(cartData, space)), (services_1.SpaceIdEnum.GR === space.data().id
434
+ ? Object.assign(Object.assign({ order_type: (0, invoices_1.getOrderTypeString)(cartData, {
435
+ frOnly: true,
436
+ slugSafe: (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.BOOKING_BETON, cartData),
437
+ installAsType: true
438
+ }) }, (0, exports.getAssignedToInfo)(cartData)), { project_number: (_e = (0, object_1.recursiveCheckObject)(cartData, 'shipping_payload.orderOrProjectNumber')) !== null && _e !== void 0 ? _e : null }) : {})) : {}));
439
+ return indexedCartData;
440
+ };
441
+ exports.getIndexedCartData = getIndexedCartData;
442
+ const getPaidByForIndexedCart = (order) => {
443
+ if (!!!order.paid_by && !!!order.custom_payment_type)
444
+ return { paid_by: null, multiple_payments: null };
445
+ const currentPaidBy = !!order.custom_payment_type && !!order.custom_payment_type.method
446
+ ? order.custom_payment_type.method
447
+ : order.paid_by;
448
+ if (currentPaidBy === Cart_1.PaymentTypeEnum.MULTIPLE && !!order.payment_details && !!order.payment_details.length) {
449
+ const firstPayment = order.payment_details.length === 1 || order.payment_details[0].method !== Cart_1.PaymentTypeEnum.TOBERECEIVED
450
+ ? order.payment_details[0]
451
+ : order.payment_details[1];
452
+ return {
453
+ paid_by: firstPayment.method,
454
+ multiple_payments: order.payment_details.length > 1
455
+ };
456
+ }
457
+ else {
458
+ return {
459
+ paid_by: currentPaidBy !== null && currentPaidBy !== void 0 ? currentPaidBy : null,
460
+ multiple_payments: null
461
+ };
462
+ }
463
+ };
464
+ exports.getPaidByForIndexedCart = getPaidByForIndexedCart;
465
+ const getAssignedToInfo = (order) => {
466
+ if (!!!order.assigned_to || !!!order.assigned_to.length)
467
+ return { assigned_to: null };
468
+ const mostRecentAssignedTo = (0, orderBy_1.default)(order.assigned_to, (assigned) => (0, moment_1.default)((0, data_1.formatDate)(assigned.date)).unix(), 'desc')[0];
469
+ if (!!!mostRecentAssignedTo || !!!mostRecentAssignedTo.is_active)
470
+ return { assigned_to: null };
471
+ return {
472
+ assigned_to: mostRecentAssignedTo.user_name
473
+ };
474
+ };
475
+ exports.getAssignedToInfo = getAssignedToInfo;
476
+ const getShippingStoreInfo = (order, space) => {
477
+ if (!!order.is_pickup) {
478
+ if (!!order.shipping_payload && !!order.shipping_payload.pickup_store && !!order.shipping_payload.pickup_store.id)
479
+ return {
480
+ store: {
481
+ id: order.shipping_payload.pickup_store.id,
482
+ name: order.shipping_payload.pickup_store.name
483
+ }
484
+ };
485
+ if (!!order.shipping_address)
486
+ return {
487
+ store: (0, exports.getOrderStoreInfo)(space.data(), order.shipping_address.address)
488
+ };
489
+ }
490
+ return { store: { id: 'Livraison', name: 'Livraison' } };
491
+ };
492
+ exports.getShippingStoreInfo = getShippingStoreInfo;
493
+ const checkIfShippingSameAsBilling = (cart) => {
494
+ return (!!cart.shipping_address &&
495
+ !!cart.billing_address &&
496
+ (0, isEqual_1.default)(cart.shipping_address.address, cart.billing_address.address));
497
+ };
498
+ exports.checkIfShippingSameAsBilling = checkIfShippingSameAsBilling;
499
+ const getOrderStoreInfo = (spaceData, storeAddress) => {
500
+ const defaultStoreInfo = {
501
+ id: 'all',
502
+ name: 'all'
503
+ };
504
+ try {
505
+ if (!!!storeAddress || !!!spaceData)
506
+ return defaultStoreInfo;
507
+ const allStores = spaceData.stores_warehouses;
508
+ const sameStore = allStores.find((store) => store.address.postal_code === storeAddress.postal_code);
509
+ if (!!!sameStore)
510
+ return defaultStoreInfo;
511
+ return {
512
+ id: sameStore.id,
513
+ name: sameStore.name
514
+ };
515
+ }
516
+ catch (e) {
517
+ console.log('error on fetching store info for algo order: ', e);
518
+ return defaultStoreInfo;
519
+ }
520
+ };
521
+ exports.getOrderStoreInfo = getOrderStoreInfo;
522
+ const getModifiedItems = (newItems, oldItems) => {
523
+ let itemsForInventory = [];
524
+ for (const i of newItems) {
525
+ const itemInOldArray = oldItems.find((o) => o.sku === i.sku);
526
+ if (!!!itemInOldArray) {
527
+ itemsForInventory = [...itemsForInventory, i];
528
+ continue;
529
+ }
530
+ if (i.qte === itemInOldArray.qte)
531
+ continue;
532
+ const newQte = i.qte - itemInOldArray.qte;
533
+ itemsForInventory = [
534
+ ...itemsForInventory,
535
+ Object.assign(Object.assign({}, i), { qte: newQte })
536
+ ];
537
+ }
538
+ for (const i of oldItems) {
539
+ const itemInNewArray = newItems.find((o) => o.sku === i.sku);
540
+ if (!!!itemInNewArray) {
541
+ itemsForInventory = [
542
+ ...itemsForInventory,
543
+ Object.assign(Object.assign({}, i), { qte: i.qte == 0 ? 0 : i.qte * -1 })
544
+ ];
545
+ }
546
+ }
547
+ return itemsForInventory;
548
+ };
549
+ exports.getModifiedItems = getModifiedItems;
550
+ const getActiveTransfersByItemInCart = (allTransfersForCart, cartItems) => {
551
+ if (!!!allTransfersForCart || !!!allTransfersForCart.length)
552
+ return [];
553
+ const allActive = allTransfersForCart.filter((t) => !!!t.data().completed);
554
+ if (!!!allActive.length)
555
+ return [];
556
+ let foundInTransfer = [];
557
+ for (let item of cartItems) {
558
+ const sameInTransfers = allActive.filter((t) => t.data().products.some((p) => p.sku == item.sku));
559
+ if (!!sameInTransfers)
560
+ foundInTransfer.push({
561
+ sku: item.sku,
562
+ transfers: sameInTransfers,
563
+ hasUpdatableTransfer: sameInTransfers.some((t) => t.transferAllowsIndependantProductUpdate()),
564
+ hasNonUpdatableTransfer: sameInTransfers.some((t) => !t.transferAllowsIndependantProductUpdate())
565
+ });
566
+ }
567
+ return foundInTransfer;
568
+ };
569
+ exports.getActiveTransfersByItemInCart = getActiveTransfersByItemInCart;
570
+ const getItemSaleUnitSlug = (item) => {
571
+ const unit = (item.other_units || []).find((x) => x.is_sale_unit);
572
+ return unit ? unit.unit_slug : '';
573
+ };
574
+ exports.getItemSaleUnitSlug = getItemSaleUnitSlug;
575
+ const getItemsToUpdateByTransfer = (allCartTransfers, updatedItems) => {
576
+ if (!!!allCartTransfers.length || !!!updatedItems.length)
577
+ return;
578
+ const skusFoundInTransfers = (0, exports.getActiveTransfersByItemInCart)(allCartTransfers, updatedItems.map((upItem) => upItem.item));
579
+ if (!!!skusFoundInTransfers.length)
580
+ return;
581
+ let transfersToUpdate = {};
582
+ for (let upItem of updatedItems) {
583
+ const sku = upItem.item.sku;
584
+ const qteToUpdate = upItem.qteToUpdate;
585
+ let sameItemData = skusFoundInTransfers.find((s) => s.sku == sku);
586
+ if (!!!sameItemData || !!!sameItemData.transfers.length)
587
+ continue;
588
+ const transfersWithSameItem = sameItemData.transfers;
589
+ const filteredInventoriesByTransferStores = !!upItem.inventoryItem
590
+ ? upItem.inventoryItem.inventories.filter((i) => transfersWithSameItem.some((t) => !!t.data().from && t.data().from == i.store_id))
591
+ : undefined;
592
+ if (qteToUpdate > 0) {
593
+ const inventoryUnitQteToUpdate = (0, inventories_1.getConvertedUnitQuantity)(upItem.item.other_units, qteToUpdate, 'inventory_unit', true);
594
+ const initializedStatusTransfers = transfersWithSameItem.filter((t) => t.data().status == TransferRequest_1.TransferRequestStatusEnum.INITIATED);
595
+ if (!!initializedStatusTransfers.length) {
596
+ const firstTransfer = initializedStatusTransfers[0];
597
+ const transferID = firstTransfer.data().id;
598
+ if (!!!transferID)
599
+ continue;
600
+ const dataForTransfer = transfersToUpdate[transferID] || [];
601
+ dataForTransfer.push({
602
+ sku,
603
+ ajustmentQte: inventoryUnitQteToUpdate
604
+ });
605
+ transfersToUpdate[transferID] = dataForTransfer;
606
+ continue;
607
+ }
608
+ const storeWithMostQuantities = !!filteredInventoriesByTransferStores
609
+ ? filteredInventoriesByTransferStores.reduce((storeA, storeB) => (0, toNumber_1.default)(storeA.qty.available) > (0, toNumber_1.default)(storeB.qty.available) ? storeA : storeB)
610
+ : undefined;
611
+ const transferToUse = !!storeWithMostQuantities
612
+ ? transfersWithSameItem.find((t) => t.data().from == storeWithMostQuantities.store_id)
613
+ : transfersWithSameItem[0];
614
+ if (!!!transferToUse || !!!transferToUse.data().id)
615
+ continue;
616
+ const dataForTransfer = transfersToUpdate[transferToUse.data().id] || [];
617
+ dataForTransfer.push({ sku, ajustmentQte: inventoryUnitQteToUpdate });
618
+ transfersToUpdate[transferToUse.data().id] = dataForTransfer;
619
+ continue;
620
+ }
621
+ if (qteToUpdate < 0) {
622
+ let qteToRemove = qteToUpdate * -1;
623
+ let inventoryUnitQteToRemove = (0, inventories_1.getConvertedUnitQuantity)(upItem.item.other_units, qteToRemove, 'inventory_unit', true);
624
+ const inventoriesByAvailabilityAsc = (0, orderBy_1.default)(filteredInventoriesByTransferStores, (i) => (0, toNumber_1.default)(i.qty.available));
625
+ const transfersByInventory = (0, orderBy_1.default)(transfersWithSameItem, (t) => [
626
+ t.data().status == TransferRequest_1.TransferRequestStatusEnum.INITIATED ? 0 : 1,
627
+ inventoriesByAvailabilityAsc.findIndex((i) => i.store_id == t.data().from)
628
+ ]);
629
+ for (let transfer of transfersByInventory) {
630
+ if (!!!transfer.data().id)
631
+ continue;
632
+ const sameProd = transfer.data().products.find((p) => p.sku == sku);
633
+ if (!!!sameProd)
634
+ continue;
635
+ const currentQte = sameProd.qte;
636
+ const qteToBeUpdated = currentQte < inventoryUnitQteToRemove ? currentQte : inventoryUnitQteToRemove;
637
+ const dataForTransfer = transfersToUpdate[transfer.data().id] || [];
638
+ dataForTransfer.push({ sku, ajustmentQte: qteToBeUpdated == 0 ? qteToBeUpdated : qteToBeUpdated * -1 });
639
+ transfersToUpdate[transfer.data().id] = dataForTransfer;
640
+ inventoryUnitQteToRemove -= qteToBeUpdated;
641
+ if (qteToRemove <= 0)
642
+ break;
643
+ }
644
+ }
645
+ }
646
+ return transfersToUpdate;
647
+ };
648
+ exports.getItemsToUpdateByTransfer = getItemsToUpdateByTransfer;
649
+ const getILangForUpdateType = (updateType) => {
650
+ const dict = {
651
+ [`${Cart_1.UpdateTypeEnum.CART_CONTENT}`]: { fr: 'Ajustement de la commande', en: 'Updated cart content' },
652
+ [`${Cart_1.UpdateTypeEnum.PROCESSING_STORE}`]: {
653
+ fr: 'Changement succ. de traitement',
654
+ en: 'Updated processing store'
655
+ }
656
+ };
657
+ return dict[updateType || Cart_1.UpdateTypeEnum.CART_CONTENT];
658
+ };
659
+ exports.getILangForUpdateType = getILangForUpdateType;
660
+ const getSubtotalToCheckForPromo = (allCartItems, currentCartSubtotal, space, feePromosTotalRemoved, removeServiceFees) => {
661
+ const serviceFeeProducts = !!!removeServiceFees
662
+ ? []
663
+ : allCartItems.filter((i) => !!i.is_service && !(0, g2_1.isEscompteSuppItem)(i.sku));
664
+ const serviceFeeSubtotal = !!!serviceFeeProducts.length
665
+ ? 0
666
+ : (0, sumBy_1.default)(serviceFeeProducts, (i) => {
667
+ const itemPrice = (0, products_1.getLowestPrice)(i).price.amount;
668
+ return (0, round_1.default)(((0, isNumber_1.default)(itemPrice) ? Number(itemPrice) : 0) * i.qte, space.data().product_preferences.decimals || 2);
669
+ });
670
+ let totalRemoved = serviceFeeSubtotal;
671
+ if (!!totalRemoved) {
672
+ totalRemoved -= feePromosTotalRemoved;
673
+ }
674
+ return currentCartSubtotal - totalRemoved;
675
+ };
676
+ exports.getSubtotalToCheckForPromo = getSubtotalToCheckForPromo;
677
+ const getAllPromoAppliedPrices = (allPromos, subtotalToUse, items, space, isRefund) => {
678
+ var _a;
679
+ let promoAmounts = [];
680
+ let updatedSubtotal = subtotalToUse;
681
+ let cartPromos = allPromos.filter((c) => c.applies_to != Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES);
682
+ cartPromos = (0, orderBy_1.default)(cartPromos, (p) => {
683
+ if ([Cart_1.CartPromoAppliesToEnum.PRODUCT, Cart_1.CartPromoAppliesToEnum.ITEMS].includes(p.applies_to))
684
+ return 1;
685
+ if (p.promo_code && p.applies_to === Cart_1.CartPromoAppliesToEnum.SUBTOTAL) {
686
+ return 3;
687
+ }
688
+ return 2;
689
+ });
690
+ let feePromosTotal = 0;
691
+ for (let aPromo of cartPromos) {
692
+ let productTotalAmount = 0;
693
+ if ((isRefund || updatedSubtotal > 0) &&
694
+ !!aPromo &&
695
+ (aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.SUBTOTAL || aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT)) {
696
+ let amountToRemove = 0;
697
+ const amountUnit = aPromo.amount_unit || IDiscountRule_1.ResultActionEnum.PERCENT;
698
+ const appliesToProduct = aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT;
699
+ const subtotalToCheck = !!aPromo.exclude_services_and_fees &&
700
+ !![IDiscountRule_1.ResultActionEnum.PERCENT, IDiscountRule_1.ResultActionEnum.PERCENT_SKU, IDiscountRule_1.ResultActionEnum.PERCENT_CATEGORY].includes(amountUnit) &&
701
+ !!!appliesToProduct
702
+ ? (0, exports.getSubtotalToCheckForPromo)(items, updatedSubtotal, space, feePromosTotal, true)
703
+ : updatedSubtotal;
704
+ if (appliesToProduct) {
705
+ let skuArray = [];
706
+ if (!!aPromo.item_given) {
707
+ skuArray = (0, discount_1.getSkuArrayForPromo)(aPromo.item_given);
708
+ }
709
+ const itemToCheck = items.filter((item) => !!aPromo && !!skuArray.includes(item.sku));
710
+ for (const anItem of itemToCheck) {
711
+ productTotalAmount += amountUnit.includes('amount')
712
+ ? anItem.qte
713
+ : (0, products_1.getLowestPrice)(anItem).price.amount * anItem.qte;
714
+ const newAmountToRemove = (0, data_1.getPromoTotalAmount)(items, aPromo, 'number', anItem.sku);
715
+ if (typeof newAmountToRemove !== 'number')
716
+ continue;
717
+ if (!!anItem && !!anItem.is_service)
718
+ feePromosTotal += newAmountToRemove;
719
+ amountToRemove += newAmountToRemove;
720
+ }
721
+ }
722
+ else {
723
+ amountToRemove = (_a = aPromo.amount_removed) !== null && _a !== void 0 ? _a : 0;
724
+ }
725
+ amountToRemove = (0, round_1.default)(amountToRemove, 2);
726
+ const newSubtotal = amountUnit === IDiscountRule_1.ResultActionEnum.AMOUNT || aPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT
727
+ ? updatedSubtotal - amountToRemove
728
+ : updatedSubtotal - subtotalToCheck * (amountToRemove / 100);
729
+ if (!!aPromo.discount_id) {
730
+ promoAmounts.push({
731
+ id: aPromo.discount_id,
732
+ subtotalBefore: updatedSubtotal,
733
+ subtotalAfter: (0, round_1.default)(newSubtotal, 2),
734
+ amountRemoved: amountToRemove,
735
+ productTotalAmount: productTotalAmount,
736
+ appliesTo: aPromo.applies_to
737
+ });
738
+ }
739
+ updatedSubtotal = (0, round_1.default)(newSubtotal, 2);
740
+ }
741
+ }
742
+ return promoAmounts;
743
+ };
744
+ exports.getAllPromoAppliedPrices = getAllPromoAppliedPrices;
745
+ const getAddressStrArray = (address) => {
746
+ return [
747
+ `${!!address.app ? address.app + ' - ' : ''}${address.line1 || ''}`,
748
+ `${!!address.city ? address.city + ', ' : ''}${address.state || ''} ${address.postal_code || ''}`
749
+ ].filter((addr) => !!addr.trim());
750
+ };
751
+ exports.getAddressStrArray = getAddressStrArray;
752
+ const getCartPaymentMethods = (cartData) => {
753
+ return !!cartData.payment_details
754
+ ? (cartData.payment_details || []).map((p) => p.method)
755
+ : !!cartData.paid_by
756
+ ? [cartData.paid_by]
757
+ : [];
758
+ };
759
+ exports.getCartPaymentMethods = getCartPaymentMethods;
760
+ const getLastUserWhoTookPayment = (cartData, startCheckAt = 'processed_by') => {
761
+ let foundUser = undefined;
762
+ let allSteps = ['completed_by', 'updated_by', 'processed_by', 'created_by'];
763
+ allSteps.splice(allSteps.indexOf(startCheckAt));
764
+ const checkCartProp = (property) => {
765
+ const foundData = cartData[property];
766
+ if (!!!foundData)
767
+ return;
768
+ if (Array.isArray(foundData)) {
769
+ return foundData.find((d) => d.took_payment);
770
+ }
771
+ return foundData;
772
+ };
773
+ for (const stepToCheck of allSteps) {
774
+ foundUser = checkCartProp(stepToCheck);
775
+ if (foundUser)
776
+ break;
777
+ }
778
+ return foundUser;
779
+ };
780
+ exports.getLastUserWhoTookPayment = getLastUserWhoTookPayment;
781
+ const calculateAmountForCustomPromo = (item, type, amount) => {
782
+ if (type === Cart_1.CustomPromoType.UNIT_PRICE)
783
+ return amount;
784
+ const initialPrice = !!item.discount_price ? item.discount_price.amount : item.regular_price.amount;
785
+ const promoAmount = (initialPrice * amount) / 100;
786
+ return initialPrice - promoAmount;
787
+ };
788
+ exports.calculateAmountForCustomPromo = calculateAmountForCustomPromo;
789
+ const validateStoreCreditUsage = async (creditToBeUsedInCart, customerID, space, creditSlug) => {
790
+ const hasStoreCreditsSet = space.options.checkIfOptionIsSet('payment.space_has_store_credits');
791
+ if (!hasStoreCreditsSet) {
792
+ return {
793
+ valid: false,
794
+ error: {
795
+ en: 'This retailer does not support store credits.',
796
+ fr: "Ce commerçant n'offre pas de crédits en magasin."
797
+ }
798
+ };
799
+ }
800
+ if (!customerID) {
801
+ return {
802
+ valid: false,
803
+ error: {
804
+ en: 'Only logged-in users can use the credits.',
805
+ fr: 'Seuls les utilisateur connectés peuvent utiliser les crédits.'
806
+ }
807
+ };
808
+ }
809
+ const creditAmount = creditToBeUsedInCart !== null && creditToBeUsedInCart !== void 0 ? creditToBeUsedInCart : 0;
810
+ let valid = creditAmount >= 0;
811
+ if (valid) {
812
+ let clientCheck = await space.customers.credits.validate(customerID, creditSlug, creditAmount);
813
+ valid = !clientCheck;
814
+ }
815
+ return Object.assign({ valid }, (!valid
816
+ ? {
817
+ error: {
818
+ en: 'Insufficient credits.',
819
+ fr: 'Crédits insufisant.'
820
+ }
821
+ }
822
+ : {}));
823
+ };
824
+ exports.validateStoreCreditUsage = validateStoreCreditUsage;
825
+ const getPurchasedPalletsQuantityForCustomer = async (space, customerId) => {
826
+ const palletSku = '210000000';
827
+ const completedStatus = Cart_1.CartStatusEnum.COMPLETED;
828
+ try {
829
+ const searchInfo = (0, searchIndexes_1.getFetchInfoAlgoliaAddioSearch)(space);
830
+ const startDate = (0, moment_1.default)('2026-01-01');
831
+ const endDate = (0, moment_1.default)();
832
+ const filterStr = `customer_id:${customerId} AND status:${completedStatus} AND (created_at:${startDate.unix()} TO ${endDate.unix()}) AND (items.${palletSku}.refunded:false OR items.${palletSku}.refunded:true)`;
833
+ let totalPallets = 0;
834
+ let currentPage = 0;
835
+ let nbPages = 1;
836
+ while (currentPage < nbPages) {
837
+ const indexedOrders = await Cart_2.default.fetch({
838
+ app: searchInfo.app,
839
+ api: searchInfo.api,
840
+ space,
841
+ filters: '',
842
+ hpp: 1000,
843
+ page: currentPage,
844
+ query: '',
845
+ indice: 'orders',
846
+ f: filterStr,
847
+ useProspr: searchInfo.useProspr
848
+ });
849
+ nbPages = indexedOrders.nbPages;
850
+ if (!!indexedOrders.hits && !!indexedOrders.hits.length) {
851
+ indexedOrders.hits.forEach((indexedOrder) => {
852
+ const palletItem = !!indexedOrder.items ? indexedOrder.items[palletSku] : undefined;
853
+ if (palletItem) {
854
+ totalPallets += (0, toNumber_1.default)(palletItem.qty || 0);
855
+ }
856
+ });
857
+ }
858
+ currentPage++;
859
+ }
860
+ return totalPallets;
861
+ }
862
+ catch (error) {
863
+ console.error('Error fetching purchased pallets:', error);
864
+ throw new Error(`Failed to fetch purchased pallets: ${error}`);
865
+ }
866
+ };
867
+ exports.getPurchasedPalletsQuantityForCustomer = getPurchasedPalletsQuantityForCustomer;
863
868
  //# sourceMappingURL=cart.js.map