addio-admin-sdk 1.7.89 → 1.7.90

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