addio-admin-sdk 1.7.86 → 1.7.87

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