addio-admin-sdk 1.7.90 → 1.7.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/.babelrc +17 -17
  2. package/.env +15 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/publish_coverage.yam_ +69 -69
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +537 -537
  7. package/dist/Interfaces/Address/index.d.ts +21 -21
  8. package/dist/Interfaces/Address/index.js +16 -16
  9. package/dist/Interfaces/Algolia/index.d.ts +164 -164
  10. package/dist/Interfaces/Algolia/index.js +2 -2
  11. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  12. package/dist/Interfaces/Attachement/index.js +2 -2
  13. package/dist/Interfaces/Attribute/index.d.ts +52 -52
  14. package/dist/Interfaces/Attribute/index.js +10 -10
  15. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  16. package/dist/Interfaces/BGJob/index.js +25 -25
  17. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  18. package/dist/Interfaces/BaseClass/index.js +2 -2
  19. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  20. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  21. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  22. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  23. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  24. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  25. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  26. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  27. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  28. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  29. package/dist/Interfaces/Booking/index.d.ts +74 -74
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +15 -15
  32. package/dist/Interfaces/Brand/index.js +2 -2
  33. package/dist/Interfaces/CMS/index.d.ts +25 -25
  34. package/dist/Interfaces/CMS/index.js +2 -2
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  38. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  39. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  40. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  41. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  42. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  43. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  44. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  45. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  46. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  47. package/dist/Interfaces/Cart/index.d.ts +425 -425
  48. package/dist/Interfaces/Cart/index.js +192 -192
  49. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  50. package/dist/Interfaces/Catalogue/index.js +37 -37
  51. package/dist/Interfaces/Category/index.d.ts +33 -33
  52. package/dist/Interfaces/Category/index.js +2 -2
  53. package/dist/Interfaces/Chart/index.d.ts +11 -11
  54. package/dist/Interfaces/Chart/index.js +2 -2
  55. package/dist/Interfaces/Class/index.d.ts +8 -8
  56. package/dist/Interfaces/Class/index.js +2 -2
  57. package/dist/Interfaces/Consent/index.d.ts +6 -6
  58. package/dist/Interfaces/Consent/index.js +2 -2
  59. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  60. package/dist/Interfaces/Context/IContextProps.js +2 -2
  61. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  62. package/dist/Interfaces/Context/IContextState.js +2 -2
  63. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  64. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  65. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  66. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  67. package/dist/Interfaces/Customer/IStoreCredit.d.ts +12 -12
  68. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  69. package/dist/Interfaces/Customer/index.d.ts +97 -97
  70. package/dist/Interfaces/Customer/index.js +141 -141
  71. package/dist/Interfaces/Declination/index.d.ts +114 -114
  72. package/dist/Interfaces/Declination/index.js +60 -60
  73. package/dist/Interfaces/Document/index.d.ts +8 -8
  74. package/dist/Interfaces/Document/index.js +2 -2
  75. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  76. package/dist/Interfaces/Elastic/index.js +2 -2
  77. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  78. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  79. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  80. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  81. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  82. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  84. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  86. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  88. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  90. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  92. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  94. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  95. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  96. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  97. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  98. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  99. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  100. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  101. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  102. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  103. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  104. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  105. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  106. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  107. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  108. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  109. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  110. package/dist/Interfaces/Email/IEmail.js +56 -56
  111. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  112. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  113. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  114. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  115. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  116. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  117. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  118. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  119. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  120. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  121. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  122. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  123. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  124. package/dist/Interfaces/ExportSchema/index.js +2 -2
  125. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  126. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  127. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  128. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  129. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  130. package/dist/Interfaces/ExternalService/index.js +2 -2
  131. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  132. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  133. package/dist/Interfaces/G2/index.d.ts +556 -556
  134. package/dist/Interfaces/G2/index.js +36 -36
  135. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  136. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  137. package/dist/Interfaces/Indexed/Product/index.d.ts +97 -97
  138. package/dist/Interfaces/Indexed/Product/index.js +212 -212
  139. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  140. package/dist/Interfaces/Inventory/index.js +8 -8
  141. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  142. package/dist/Interfaces/Invoice/index.js +2 -2
  143. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  144. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  145. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  146. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  147. package/dist/Interfaces/Menu/index.d.ts +23 -23
  148. package/dist/Interfaces/Menu/index.js +10 -10
  149. package/dist/Interfaces/Note/index.d.ts +10 -10
  150. package/dist/Interfaces/Note/index.js +7 -7
  151. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  152. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  153. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  154. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  155. package/dist/Interfaces/Order/index.d.ts +4 -4
  156. package/dist/Interfaces/Order/index.js +2 -2
  157. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  158. package/dist/Interfaces/Org/IRelUser.js +2 -2
  159. package/dist/Interfaces/Org/index.d.ts +29 -29
  160. package/dist/Interfaces/Org/index.js +12 -12
  161. package/dist/Interfaces/Payment/index.d.ts +13 -13
  162. package/dist/Interfaces/Payment/index.js +2 -2
  163. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  164. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  165. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  166. package/dist/Interfaces/Product/IImportProduct.js +791 -791
  167. package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
  168. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  169. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  170. package/dist/Interfaces/Product/IPricing.js +174 -174
  171. package/dist/Interfaces/Product/index.d.ts +127 -127
  172. package/dist/Interfaces/Product/index.js +56 -56
  173. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  174. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  175. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  176. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  177. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  178. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  179. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  180. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  181. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  182. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  183. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  184. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  185. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  186. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  187. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  188. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  189. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  190. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  191. package/dist/Interfaces/Quote/index.d.ts +5 -5
  192. package/dist/Interfaces/Quote/index.js +2 -2
  193. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  194. package/dist/Interfaces/Refunds/index.js +2 -2
  195. package/dist/Interfaces/Rules/IDiscountRule.d.ts +137 -137
  196. package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
  197. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  198. package/dist/Interfaces/Schedule/index.js +2 -2
  199. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  200. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  201. package/dist/Interfaces/Services/IService.d.ts +12 -12
  202. package/dist/Interfaces/Services/IService.js +2 -2
  203. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  204. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  205. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  206. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  207. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  208. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  209. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  210. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  211. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  212. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  213. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  214. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  215. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  216. package/dist/Interfaces/Slider/GR.js +271 -271
  217. package/dist/Interfaces/Slider/index.d.ts +30 -30
  218. package/dist/Interfaces/Slider/index.js +2 -2
  219. package/dist/Interfaces/Space/IExternalService.d.ts +52 -52
  220. package/dist/Interfaces/Space/IExternalService.js +43 -43
  221. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  222. package/dist/Interfaces/Space/IMember.js +9 -9
  223. package/dist/Interfaces/Space/index.d.ts +390 -390
  224. package/dist/Interfaces/Space/index.js +160 -160
  225. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  226. package/dist/Interfaces/Specials/gr.js +2 -2
  227. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  228. package/dist/Interfaces/StockNotification/index.js +2 -2
  229. package/dist/Interfaces/Store/index.d.ts +62 -62
  230. package/dist/Interfaces/Store/index.js +27 -27
  231. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  232. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  233. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  234. package/dist/Interfaces/Supplier/index.js +24 -24
  235. package/dist/Interfaces/TCG/index.d.ts +110 -110
  236. package/dist/Interfaces/TCG/index.js +27 -27
  237. package/dist/Interfaces/Tag/index.d.ts +18 -18
  238. package/dist/Interfaces/Tag/index.js +2 -2
  239. package/dist/Interfaces/Tax/index.d.ts +13 -13
  240. package/dist/Interfaces/Tax/index.js +2 -2
  241. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  242. package/dist/Interfaces/TransferRequest/index.js +43 -43
  243. package/dist/Interfaces/Translation/index.d.ts +8 -8
  244. package/dist/Interfaces/Translation/index.js +5 -5
  245. package/dist/Interfaces/Update/index.d.ts +10 -10
  246. package/dist/Interfaces/Update/index.js +2 -2
  247. package/dist/Interfaces/User/IUser.d.ts +65 -65
  248. package/dist/Interfaces/User/IUser.js +8 -8
  249. package/dist/Interfaces/Version/index.d.ts +11 -11
  250. package/dist/Interfaces/Version/index.js +2 -2
  251. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  252. package/dist/Interfaces/Wishlist/index.js +2 -2
  253. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  254. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  255. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  256. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  257. package/dist/constants/enums.d.ts +6 -6
  258. package/dist/constants/enums.js +10 -10
  259. package/dist/constants/services.d.ts +2 -2
  260. package/dist/constants/services.js +111 -111
  261. package/dist/constants/version.d.ts +2 -2
  262. package/dist/constants/version.js +5 -5
  263. package/dist/index.d.ts +32 -32
  264. package/dist/index.js +242 -242
  265. package/dist/lib/Attribute/index.d.ts +14 -14
  266. package/dist/lib/Attribute/index.js +143 -143
  267. package/dist/lib/BGJob/index.d.ts +9 -9
  268. package/dist/lib/BGJob/index.js +212 -212
  269. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  270. package/dist/lib/BackgroundWorker/index.js +59 -59
  271. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  272. package/dist/lib/Blog/BlogArticle.js +10 -10
  273. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  274. package/dist/lib/Blog/BlogAuthor.js +10 -10
  275. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  276. package/dist/lib/Blog/BlogCategory.js +10 -10
  277. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  278. package/dist/lib/Blog/BlogKeyword.js +10 -10
  279. package/dist/lib/Booking/index.d.ts +70 -70
  280. package/dist/lib/Booking/index.js +576 -576
  281. package/dist/lib/Brand/index.d.ts +17 -17
  282. package/dist/lib/Brand/index.js +113 -113
  283. package/dist/lib/Cart/index.d.ts +206 -206
  284. package/dist/lib/Cart/index.js +3165 -3165
  285. package/dist/lib/Catalogue/index.d.ts +9 -9
  286. package/dist/lib/Catalogue/index.js +69 -69
  287. package/dist/lib/Category/index.d.ts +27 -27
  288. package/dist/lib/Category/index.js +190 -190
  289. package/dist/lib/Class/index.d.ts +12 -12
  290. package/dist/lib/Class/index.js +58 -58
  291. package/dist/lib/Consent/index.d.ts +4 -4
  292. package/dist/lib/Consent/index.js +29 -29
  293. package/dist/lib/Customer/index.d.ts +11 -11
  294. package/dist/lib/Customer/index.js +68 -68
  295. package/dist/lib/Declination/index.d.ts +9 -9
  296. package/dist/lib/Declination/index.js +24 -24
  297. package/dist/lib/Discount/index.d.ts +18 -18
  298. package/dist/lib/Discount/index.js +470 -470
  299. package/dist/lib/ElasticSearch/index.d.ts +8 -8
  300. package/dist/lib/ElasticSearch/index.js +45 -45
  301. package/dist/lib/Elavon/index.d.ts +18 -18
  302. package/dist/lib/Elavon/index.js +130 -130
  303. package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
  304. package/dist/lib/Email/AbandonedCartEmail.js +16 -16
  305. package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
  306. package/dist/lib/Email/AccountConfirmationEmail.js +22 -22
  307. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
  308. package/dist/lib/Email/AdminOrderConfirmationEmail.js +16 -16
  309. package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
  310. package/dist/lib/Email/ApplicationEmail.js +16 -16
  311. package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
  312. package/dist/lib/Email/BackInStockEmail.js +16 -16
  313. package/dist/lib/Email/ContactEmail.d.ts +8 -8
  314. package/dist/lib/Email/ContactEmail.js +16 -16
  315. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
  316. package/dist/lib/Email/CustomerBookingAdminEmail.js +16 -16
  317. package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
  318. package/dist/lib/Email/CustomerBookingEmail.js +16 -16
  319. package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
  320. package/dist/lib/Email/OrderConfirmationEmail.js +16 -16
  321. package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
  322. package/dist/lib/Email/OrderDenounciationEmail.js +16 -16
  323. package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
  324. package/dist/lib/Email/OrderSampleEmail.js +16 -16
  325. package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
  326. package/dist/lib/Email/OtherTypeEmails.js +19 -19
  327. package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
  328. package/dist/lib/Email/PasswordResetEmail.js +16 -16
  329. package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
  330. package/dist/lib/Email/PhotoShootEmail.js +16 -16
  331. package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
  332. package/dist/lib/Email/PickUpConfirmation.js +16 -16
  333. package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
  334. package/dist/lib/Email/ShippingConfirmation.js +16 -16
  335. package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
  336. package/dist/lib/Email/WelcomeEmail.js +16 -16
  337. package/dist/lib/Email/index.d.ts +8 -8
  338. package/dist/lib/Email/index.js +23 -23
  339. package/dist/lib/ExternalService/Ebay.d.ts +62 -62
  340. package/dist/lib/ExternalService/Ebay.js +102 -102
  341. package/dist/lib/ExternalService/index.d.ts +5 -5
  342. package/dist/lib/ExternalService/index.js +10 -10
  343. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  344. package/dist/lib/FirstOrderTracking/index.js +10 -10
  345. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  346. package/dist/lib/Indexed/IndexedCart.js +86 -86
  347. package/dist/lib/Indexed/Product.d.ts +17 -17
  348. package/dist/lib/Indexed/Product.js +48 -48
  349. package/dist/lib/Inventory/index.d.ts +49 -49
  350. package/dist/lib/Inventory/index.js +314 -314
  351. package/dist/lib/Invoice/index.d.ts +5 -5
  352. package/dist/lib/Invoice/index.js +10 -10
  353. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  354. package/dist/lib/MarketplacePublication/index.js +118 -118
  355. package/dist/lib/Menu/index.d.ts +11 -11
  356. package/dist/lib/Menu/index.js +105 -105
  357. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  358. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  359. package/dist/lib/Note/index.d.ts +4 -4
  360. package/dist/lib/Note/index.js +6 -6
  361. package/dist/lib/Order/index.d.ts +7 -7
  362. package/dist/lib/Order/index.js +33 -33
  363. package/dist/lib/Org/index.d.ts +27 -27
  364. package/dist/lib/Org/index.js +175 -175
  365. package/dist/lib/PandaPay/index.d.ts +16 -16
  366. package/dist/lib/PandaPay/index.js +170 -170
  367. package/dist/lib/Paysafe/index.d.ts +11 -11
  368. package/dist/lib/Paysafe/index.js +40 -40
  369. package/dist/lib/Product/index.d.ts +154 -154
  370. package/dist/lib/Product/index.js +793 -793
  371. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  372. package/dist/lib/ProductAttribute/index.js +45 -45
  373. package/dist/lib/PromiseToPurchase/index.d.ts +37 -37
  374. package/dist/lib/PromiseToPurchase/index.js +264 -264
  375. package/dist/lib/PurchaseOrder/index.d.ts +9 -9
  376. package/dist/lib/PurchaseOrder/index.js +16 -16
  377. package/dist/lib/Queue/index.d.ts +40 -0
  378. package/dist/lib/Queue/index.js +255 -0
  379. package/dist/lib/Queue/index.js.map +1 -0
  380. package/dist/lib/Schedule/index.d.ts +5 -5
  381. package/dist/lib/Schedule/index.js +12 -12
  382. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  383. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  384. package/dist/lib/Service/index.d.ts +5 -5
  385. package/dist/lib/Service/index.js +13 -13
  386. package/dist/lib/Shipment/index.d.ts +28 -28
  387. package/dist/lib/Shipment/index.js +357 -357
  388. package/dist/lib/Slider/index.d.ts +16 -16
  389. package/dist/lib/Slider/index.js +113 -113
  390. package/dist/lib/Space/index.d.ts +883 -883
  391. package/dist/lib/Space/index.js +5134 -5134
  392. package/dist/lib/StockNotification/index.d.ts +4 -4
  393. package/dist/lib/StockNotification/index.js +6 -6
  394. package/dist/lib/Store/index.d.ts +5 -5
  395. package/dist/lib/Store/index.js +12 -12
  396. package/dist/lib/Supplier/Command.d.ts +5 -5
  397. package/dist/lib/Supplier/Command.js +10 -10
  398. package/dist/lib/Supplier/index.d.ts +25 -25
  399. package/dist/lib/Supplier/index.js +22 -22
  400. package/dist/lib/Tags/index.d.ts +6 -6
  401. package/dist/lib/Tags/index.js +21 -21
  402. package/dist/lib/Tax/index.d.ts +8 -8
  403. package/dist/lib/Tax/index.js +54 -54
  404. package/dist/lib/TransferRequest/index.d.ts +112 -112
  405. package/dist/lib/TransferRequest/index.js +794 -794
  406. package/dist/lib/Update/index.d.ts +10 -10
  407. package/dist/lib/Update/index.js +22 -22
  408. package/dist/lib/User/index.d.ts +35 -35
  409. package/dist/lib/User/index.js +248 -248
  410. package/dist/lib/Wishlist/index.d.ts +5 -5
  411. package/dist/lib/Wishlist/index.js +10 -10
  412. package/dist/lib/base.d.ts +14 -14
  413. package/dist/lib/base.js +62 -62
  414. package/dist/lib/baseService.d.ts +17 -17
  415. package/dist/lib/baseService.js +43 -43
  416. package/dist/rules/GR/constants/data.d.ts +26 -26
  417. package/dist/rules/GR/constants/data.js +55 -55
  418. package/dist/rules/GR/constants/products.d.ts +8 -8
  419. package/dist/rules/GR/constants/products.js +234 -234
  420. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  421. package/dist/rules/GR/interfaces/cart.js +41 -41
  422. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  423. package/dist/rules/GR/interfaces/data.js +104 -104
  424. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  425. package/dist/rules/GR/interfaces/products.js +10 -10
  426. package/dist/rules/GR/utils/cart.d.ts +53 -53
  427. package/dist/rules/GR/utils/cart.js +637 -637
  428. package/dist/rules/GR/utils/data.d.ts +3 -3
  429. package/dist/rules/GR/utils/data.js +25 -25
  430. package/dist/rules/GR/utils/expedition.d.ts +71 -71
  431. package/dist/rules/GR/utils/expedition.js +1542 -1542
  432. package/dist/rules/GR/utils/g2.d.ts +176 -176
  433. package/dist/rules/GR/utils/g2.js +849 -849
  434. package/dist/rules/GR/utils/invoices.d.ts +24 -24
  435. package/dist/rules/GR/utils/invoices.js +174 -174
  436. package/dist/rules/GR/utils/products.d.ts +104 -104
  437. package/dist/rules/GR/utils/products.js +984 -984
  438. package/dist/rules/GR/utils/upsells.d.ts +79 -79
  439. package/dist/rules/GR/utils/upsells.js +183 -183
  440. package/dist/services/database/BaseProvider.d.ts +29 -29
  441. package/dist/services/database/BaseProvider.js +28 -28
  442. package/dist/services/database/BatchUtils.d.ts +14 -14
  443. package/dist/services/database/BatchUtils.js +43 -43
  444. package/dist/services/database/Config.d.ts +2 -2
  445. package/dist/services/database/Config.js +5 -5
  446. package/dist/services/database/DatabaseService.d.ts +41 -41
  447. package/dist/services/database/DatabaseService.js +152 -152
  448. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  449. package/dist/services/database/FirebaseProvider.js +218 -218
  450. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  451. package/dist/services/database/NotFirebaseProvider.js +243 -243
  452. package/dist/services/g2/G2OrderSlip.d.ts +42 -42
  453. package/dist/services/g2/G2OrderSlip.js +210 -210
  454. package/dist/services/g2/utils.d.ts +9 -9
  455. package/dist/services/g2/utils.js +703 -703
  456. package/dist/services/logs/index.d.ts +20 -20
  457. package/dist/services/logs/index.js +61 -61
  458. package/dist/services/products/BaseClass.d.ts +50 -50
  459. package/dist/services/products/BaseClass.js +64 -64
  460. package/dist/services/products/TCGService.d.ts +29 -29
  461. package/dist/services/products/TCGService.js +499 -499
  462. package/dist/services/products/utils.d.ts +9 -9
  463. package/dist/services/products/utils.js +94 -94
  464. package/dist/utils/algolia.d.ts +6 -6
  465. package/dist/utils/algolia.js +21 -21
  466. package/dist/utils/anonymisation.d.ts +30 -30
  467. package/dist/utils/anonymisation.js +250 -250
  468. package/dist/utils/array.d.ts +5 -5
  469. package/dist/utils/array.js +14 -14
  470. package/dist/utils/aws.d.ts +14 -14
  471. package/dist/utils/aws.js +126 -126
  472. package/dist/utils/booking.d.ts +22 -22
  473. package/dist/utils/booking.js +118 -118
  474. package/dist/utils/cart.d.ts +134 -134
  475. package/dist/utils/cart.js +867 -862
  476. package/dist/utils/cart.js.map +1 -1
  477. package/dist/utils/categories.d.ts +2 -2
  478. package/dist/utils/categories.js +54 -54
  479. package/dist/utils/cmv.d.ts +10 -10
  480. package/dist/utils/cmv.js +107 -107
  481. package/dist/utils/console.d.ts +6 -6
  482. package/dist/utils/console.js +59 -59
  483. package/dist/utils/context.d.ts +20 -20
  484. package/dist/utils/context.js +61 -61
  485. package/dist/utils/currency.d.ts +6 -6
  486. package/dist/utils/currency.js +61 -61
  487. package/dist/utils/data.d.ts +31 -31
  488. package/dist/utils/data.js +294 -294
  489. package/dist/utils/date.d.ts +1 -1
  490. package/dist/utils/date.js +16 -16
  491. package/dist/utils/dimensions.d.ts +3 -3
  492. package/dist/utils/dimensions.js +16 -16
  493. package/dist/utils/discount.d.ts +46 -46
  494. package/dist/utils/discount.js +934 -934
  495. package/dist/utils/errors.d.ts +113 -113
  496. package/dist/utils/errors.js +113 -113
  497. package/dist/utils/file-admin.d.ts +8 -8
  498. package/dist/utils/file-admin.js +38 -38
  499. package/dist/utils/file.d.ts +38 -38
  500. package/dist/utils/file.js +200 -200
  501. package/dist/utils/firebase-admin.d.ts +2 -2
  502. package/dist/utils/firebase-admin.js +61 -61
  503. package/dist/utils/firebase.d.ts +41 -41
  504. package/dist/utils/firebase.js +131 -131
  505. package/dist/utils/import.d.ts +1 -1
  506. package/dist/utils/import.js +21 -21
  507. package/dist/utils/inventories.d.ts +49 -49
  508. package/dist/utils/inventories.js +392 -392
  509. package/dist/utils/locale.d.ts +15 -15
  510. package/dist/utils/locale.js +78 -78
  511. package/dist/utils/mailchimp.d.ts +58 -58
  512. package/dist/utils/mailchimp.js +495 -495
  513. package/dist/utils/mathUtils.d.ts +17 -17
  514. package/dist/utils/mathUtils.js +315 -315
  515. package/dist/utils/mongodb.d.ts +1 -1
  516. package/dist/utils/mongodb.js +22 -22
  517. package/dist/utils/object.d.ts +13 -13
  518. package/dist/utils/object.js +115 -115
  519. package/dist/utils/payment.d.ts +10 -10
  520. package/dist/utils/payment.js +23 -23
  521. package/dist/utils/products.d.ts +32 -32
  522. package/dist/utils/products.js +186 -186
  523. package/dist/utils/promiseToPurchase.d.ts +56 -56
  524. package/dist/utils/promiseToPurchase.js +195 -195
  525. package/dist/utils/prosprsearch.d.ts +26 -26
  526. package/dist/utils/prosprsearch.js +182 -182
  527. package/dist/utils/refunds.d.ts +2 -2
  528. package/dist/utils/refunds.js +21 -21
  529. package/dist/utils/sdc.d.ts +10 -10
  530. package/dist/utils/sdc.js +1302 -1302
  531. package/dist/utils/searchIndexes.d.ts +21 -21
  532. package/dist/utils/searchIndexes.js +210 -210
  533. package/dist/utils/services.d.ts +42 -42
  534. package/dist/utils/services.js +409 -409
  535. package/dist/utils/shipment.d.ts +110 -110
  536. package/dist/utils/shipment.js +345 -345
  537. package/dist/utils/simpletexting.d.ts +2 -2
  538. package/dist/utils/simpletexting.js +45 -45
  539. package/dist/utils/sliders.d.ts +4 -4
  540. package/dist/utils/sliders.js +24 -24
  541. package/dist/utils/string.d.ts +16 -16
  542. package/dist/utils/string.js +191 -191
  543. package/dist/utils/tcgService.d.ts +2 -2
  544. package/dist/utils/tcgService.js +8 -8
  545. package/dist/utils/tools.d.ts +1 -1
  546. package/dist/utils/tools.js +9 -9
  547. package/dist/utils/transferRequests.d.ts +19 -19
  548. package/dist/utils/transferRequests.js +43 -43
  549. package/dist/utils/update.d.ts +7 -7
  550. package/dist/utils/update.js +125 -125
  551. package/dist/utils/weight.d.ts +3 -3
  552. package/dist/utils/weight.js +16 -16
  553. package/dist/utils/zones.d.ts +11 -11
  554. package/dist/utils/zones.js +218 -218
  555. package/package.json +110 -110
  556. package/publish.sh +143 -143
  557. package/readme.md +182 -182
@@ -1,638 +1,638 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getLabelForCartType = exports.getClientNumberForCart = exports.getPercentFromReducedPrice = exports.checkPriceForEscompte = exports.getLowestAppliedPrice = exports.getAppliedPrice = exports.getRecursiveItemsFromSubItems = exports.getRecursiveItems = exports.getGrassProductForCart = exports.getConcreteCartInfo = exports.orderCartItems = exports.getProTitleFromCart = exports.isPro = exports.getCartType = exports.checkCartTypeBeforeAddingItem = exports.checkIfDecliIsOkForMixedSale = exports.checkIfItemCanBeAddedToCart = exports.checkIfCartContainsType = exports.handleAddGrassItemsCart = void 0;
18
- const orderBy_1 = __importDefault(require("lodash/orderBy"));
19
- const flatten_1 = __importDefault(require("lodash/flatten"));
20
- const uniqBy_1 = __importDefault(require("lodash/uniqBy"));
21
- const toNumber_1 = __importDefault(require("lodash/toNumber"));
22
- const round_1 = __importDefault(require("lodash/round"));
23
- const moment_1 = __importDefault(require("moment"));
24
- const cart_1 = require("../interfaces/cart");
25
- const products_1 = require("./products");
26
- const upsells_1 = require("./upsells");
27
- const expedition_1 = require("./expedition");
28
- const products_2 = require("../constants/products");
29
- const Cart_1 = require("../../../Interfaces/Cart");
30
- const G2_1 = require("../../../Interfaces/G2");
31
- const locale_1 = require("../../../utils/locale");
32
- const inventories_1 = require("../../../utils/inventories");
33
- const products_3 = require("../../../utils/products");
34
- const data_1 = require("../../../utils/data");
35
- const data_2 = require("../interfaces/data");
36
- const g2_1 = require("./g2");
37
- const object_1 = require("../../../utils/object");
38
- const cart_2 = require("../../../utils/cart");
39
- const handleAddGrassItemsCart = async (cart, chosenDeclination, parentProduct, isUpdating, isRecommendedUpsell, formValues, fetchProduct, kentuckyBaseGrass, locale = 'fr', isPro, customPriceList, recommendedUpsellParentSlug) => {
40
- if (!!!chosenDeclination || !!!parentProduct)
41
- return {
42
- error: ''
43
- };
44
- let itemsToAdd = [];
45
- let itemsToUpdate = [];
46
- let itemsToDelete = [];
47
- let newShippingPayload = cart.shipping_payload;
48
- const prodUpsell = parentProduct.product_upsells;
49
- const onlySamplesInCart = !!cart.items.length && cart.items.every((item) => !!item.is_sample);
50
- if (!!onlySamplesInCart) {
51
- return {
52
- error: (0, locale_1.translateILang)({
53
- fr: "Pour ajouter ce produit à votre panier vous devez d'abord compléter la commande en cours ou vider votre panier",
54
- en: 'To add this product to your cart, you must first complete your current order or empty your cart'
55
- }, locale)
56
- };
57
- }
58
- if (!!isPro && !!customPriceList) {
59
- chosenDeclination = (0, g2_1.checkForCustomPriceEquivalent)(chosenDeclination, customPriceList, {
60
- removeTierPricing: chosenDeclination.sku === products_2.kentucky
61
- });
62
- }
63
- if (isUpdating && !!cart.items.find((i) => i.sku === chosenDeclination.sku)) {
64
- itemsToUpdate.push({
65
- sku: chosenDeclination.sku,
66
- qte: formValues.qte || 0
67
- });
68
- }
69
- else {
70
- itemsToAdd.push(Object.assign(Object.assign({}, chosenDeclination), { qte: formValues.qte || 0, parent_slug: !!isRecommendedUpsell && recommendedUpsellParentSlug ? recommendedUpsellParentSlug : parentProduct.slug, product_upsells: parentProduct.product_upsells, categories: parentProduct.categories }));
71
- }
72
- if (!!!isRecommendedUpsell) {
73
- let baseGrass = parentProduct;
74
- if (!!prodUpsell && !!prodUpsell.find((anUpsell) => anUpsell.recommendation_sku === products_2.kentucky)) {
75
- const baseGrassProd = kentuckyBaseGrass;
76
- if (!!baseGrassProd)
77
- baseGrass = baseGrassProd;
78
- }
79
- if (!!prodUpsell) {
80
- for (let anUpsell of prodUpsell) {
81
- if (!!!anUpsell.auto_add)
82
- continue;
83
- const sameProduct = await fetchProduct(anUpsell.recommendation_parent_slug, locale, undefined, true);
84
- if (!!!sameProduct || !!!sameProduct.declinations)
85
- continue;
86
- let sameDecli = (sameProduct.declinations || []).find((decli) => decli.sku === anUpsell.recommendation_sku);
87
- if (!!!sameDecli)
88
- continue;
89
- if (!!isPro && !!customPriceList) {
90
- sameDecli = (0, g2_1.checkForCustomPriceEquivalent)(sameDecli, customPriceList, {
91
- removeTierPricing: sameDecli.sku === products_2.kentucky
92
- });
93
- }
94
- const anUpsellProduct = Object.assign(Object.assign(Object.assign(Object.assign({}, sameDecli), { parent_slug: anUpsell.recommendation_parent_slug, recommended_qte: anUpsell.recommendation_qty, recommended_sku: anUpsell.recommendation_sku, matching_qte: !!anUpsell.matching_qty, auto_add: anUpsell.auto_add, actual_qte: anUpsell.actual_qty }), (!!anUpsell.is_recommendation ? { is_recommendation: true } : {})), (!!anUpsell.show_recommendation_msg ? { show_recommendation_msg: true } : {}));
95
- const ratio = (0, upsells_1.calculateUpsellQte)(anUpsellProduct, formValues.qte || 0);
96
- if (!!ratio) {
97
- if (isUpdating && !!cart.items.find((i) => i.sku === anUpsellProduct.sku)) {
98
- itemsToUpdate.push({
99
- sku: anUpsellProduct.sku,
100
- qte: ratio
101
- });
102
- }
103
- else {
104
- itemsToAdd.push(Object.assign(Object.assign({}, sameDecli), { qte: ratio, is_upsell_of_sku: chosenDeclination.sku, parent_slug: sameProduct.slug, product_upsells: sameProduct.product_upsells, categories: sameProduct.categories }));
105
- }
106
- }
107
- }
108
- }
109
- const currentInstallItem = cart.items.find((i) => i.parent_slug === 'installation-gazon');
110
- if (!!formValues.installation) {
111
- const upsell = baseGrass.product_upsells;
112
- if (!!upsell) {
113
- const allInstallFees = await (0, products_1.getInstallationArray)(Number(formValues.qte), upsell, fetchProduct, locale, isPro, chosenDeclination.sku, customPriceList, {
114
- engrais: !!formValues.engrais,
115
- roulage: !!formValues.roulage
116
- });
117
- const installationDecli = allInstallFees.find((fee) => fee.parent_slug === 'installation-gazon');
118
- const installIsDifferent = !!currentInstallItem && !!installationDecli && currentInstallItem.sku !== installationDecli.sku;
119
- for (let fee of allInstallFees) {
120
- if (isUpdating && !!cart.items.find((i) => i.sku === fee.sku) && !!!installIsDifferent) {
121
- itemsToUpdate.push({
122
- sku: fee.sku,
123
- qte: fee.qte
124
- });
125
- }
126
- else {
127
- itemsToAdd.push(fee);
128
- }
129
- }
130
- const minQteInstall = (0, expedition_1.getMinQteInstall)(!!isPro);
131
- if (typeof formValues.qte === 'number' && formValues.qte >= minQteInstall) {
132
- const minInstall = cart.items.find((item) => item.parent_slug === 'frais-minimum-gazon-pour-installation');
133
- if (!!minInstall) {
134
- itemsToDelete.push(minInstall.sku);
135
- }
136
- }
137
- const fertilisationItem = cart.items.find((i) => i.parent_slug === 'installation-fertilisation');
138
- if (isUpdating && !!!formValues.engrais && !!fertilisationItem) {
139
- itemsToDelete.push(fertilisationItem.sku);
140
- }
141
- const roulageItem = cart.items.find((i) => i.parent_slug === 'installation-roulage');
142
- if (isUpdating && !!!formValues.roulage && !!roulageItem) {
143
- itemsToDelete.push(roulageItem.sku);
144
- }
145
- const otherInstall = !!installIsDifferent ? currentInstallItem : undefined;
146
- if (!!otherInstall) {
147
- itemsToDelete.push(otherInstall.sku);
148
- itemsToDelete = [
149
- ...itemsToDelete,
150
- ...cart.items.filter((i) => i.is_upsell_of_sku === otherInstall.sku).map((i) => i.sku)
151
- ];
152
- }
153
- if (!!isPro) {
154
- newShippingPayload = Object.assign(Object.assign({}, newShippingPayload), { pro_installation_info: formValues.pro });
155
- const feeProduct = await fetchProduct('frais_extra_pro_installation', locale, undefined, true);
156
- const handleProSpec = (sku, isSelected) => {
157
- if (!!!feeProduct || !!!installationDecli)
158
- return;
159
- const itemIsInCart = !!cart.items.find((i) => i.sku === sku);
160
- if (isSelected) {
161
- let decli = feeProduct.declinations.find((d) => d.sku === sku);
162
- if (!!decli) {
163
- if (!!customPriceList) {
164
- decli = (0, g2_1.checkForCustomPriceEquivalent)(decli, customPriceList);
165
- }
166
- if (isUpdating && itemIsInCart && !!!otherInstall) {
167
- itemsToUpdate.push({
168
- sku: sku,
169
- qte: typeof formValues.qte === 'number' && formValues.qte < minQteInstall
170
- ? minQteInstall
171
- : formValues.qte || 0
172
- });
173
- }
174
- else {
175
- if (!!otherInstall) {
176
- itemsToDelete.push(decli.sku);
177
- }
178
- itemsToAdd.push(Object.assign(Object.assign({}, decli), { qte: typeof formValues.qte === 'number' && formValues.qte < minQteInstall
179
- ? minQteInstall
180
- : formValues.qte || 0, is_upsell_of_sku: installationDecli.sku, parent_slug: 'frais_extra_pro_installation' }));
181
- }
182
- }
183
- }
184
- else {
185
- if (itemIsInCart) {
186
- itemsToDelete.push(sku);
187
- }
188
- }
189
- };
190
- if (!!formValues.pro && !!formValues.pro.specs) {
191
- Object.entries(formValues.pro.specs).forEach((spec) => {
192
- handleProSpec(products_2.installationProSpecSkus[spec[0]], spec[1]);
193
- });
194
- }
195
- }
196
- }
197
- }
198
- else {
199
- if (!!isUpdating && !formValues.installation) {
200
- if (!!newShippingPayload && !!newShippingPayload.pro_installation_info) {
201
- const { pro_installation_info } = newShippingPayload, rest = __rest(newShippingPayload, ["pro_installation_info"]);
202
- newShippingPayload = Object.assign({}, rest);
203
- }
204
- itemsToDelete = [...itemsToDelete, ...(0, products_1.getAllInstallFromItems)(cart.items).map((i) => i.sku)];
205
- }
206
- }
207
- }
208
- itemsToAdd = (0, upsells_1.removeExceptionAutoAddUpsells)(itemsToAdd);
209
- if (!!isUpdating) {
210
- if (!!cart.items) {
211
- const fusion = [
212
- ...cart.items.filter((i) => itemsToUpdate.some((update) => i.sku === update.sku) || i.is_upsell_of_sku === 'summary'),
213
- ...itemsToAdd
214
- ];
215
- let productsToRemove = fusion.filter((item) => {
216
- const removedBecauseException = !!!(0, upsells_1.removeExceptionAutoAddUpsells)(fusion).some((i) => i.sku === item.sku);
217
- return item.is_upsell_of_sku === 'summary' || !!removedBecauseException;
218
- });
219
- itemsToAdd = itemsToAdd.filter((i) => !!!productsToRemove.map((r) => r.sku).includes(i.sku));
220
- if (!!productsToRemove.length) {
221
- itemsToDelete = [...itemsToDelete, ...productsToRemove.map((item) => item.sku)];
222
- if (newShippingPayload) {
223
- const { pro_installation_info } = newShippingPayload;
224
- newShippingPayload = Object.assign(Object.assign({}, newShippingPayload), (!!pro_installation_info ? { pro_installation_info } : {}));
225
- }
226
- }
227
- }
228
- }
229
- return {
230
- itemsToAdd,
231
- itemsToUpdate,
232
- itemsToDelete,
233
- newShippingPayload
234
- };
235
- };
236
- exports.handleAddGrassItemsCart = handleAddGrassItemsCart;
237
- const checkIfCartContainsType = (type, cartData, excludeUndefinedForAccessories = true, excludeUndefinedForBeton = true) => {
238
- switch (type) {
239
- case cart_1.CartGeneralTypeEnum.RETURN_PALLETS:
240
- return !!cartData.shipping_payload && !!cartData.shipping_payload.pallet_return_memo_ref;
241
- case cart_1.CartGeneralTypeEnum.GRASS:
242
- return !!cartData.items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'gazon') && !!!i.is_sample);
243
- case cart_1.CartGeneralTypeEnum.VRAC:
244
- return !!cartData.items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'vrac'));
245
- case cart_1.CartGeneralTypeEnum.INSTALLATION:
246
- return !!cartData.items.some((i) => i.parent_slug === 'installation-gazon');
247
- case cart_1.CartGeneralTypeEnum.SAMPLE:
248
- return !!cartData.items.some((i) => !!i.is_sample);
249
- case cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES:
250
- return (!!cartData.items &&
251
- !!cartData.items.length &&
252
- cartData.items
253
- .filter((i) => !!!i.is_service)
254
- .every((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'accessoire', excludeUndefinedForAccessories)));
255
- case cart_1.CartGeneralTypeEnum.BETON:
256
- return (!!cartData.items &&
257
- !!cartData.items.length &&
258
- cartData.items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'beton', excludeUndefinedForBeton) && !!!i.is_sample));
259
- default:
260
- return false;
261
- }
262
- };
263
- exports.checkIfCartContainsType = checkIfCartContainsType;
264
- const checkIfItemCanBeAddedToCart = (prod, parentProdType, cartData, addToCart = false, declination = undefined, useParent = false, autoAdd = false) => {
265
- const addItToCart = !!autoAdd ? true : (0, exports.checkCartTypeBeforeAddingItem)(prod, declination, cartData);
266
- if (!!!addItToCart) {
267
- return {
268
- addToCart: false,
269
- error: {
270
- fr: "Pour ajouter ce type de produit à votre panier vous devez d'abord compléter la commande en cours ou vider votre panier.",
271
- en: 'To add this type of product to your cart, you must first complete the current order or empty your cart.'
272
- }
273
- };
274
- }
275
- let prodDeclination = declination;
276
- if (!!!useParent) {
277
- switch (parentProdType) {
278
- case 'gazon':
279
- prodDeclination =
280
- prodDeclination || prod.declinations.find((declination) => !!!declination.is_sample);
281
- break;
282
- case 'beton':
283
- break;
284
- case 'other':
285
- case 'vrac':
286
- if (!!!prod.declinations.find((decli) => !!decli.other_units)) {
287
- prodDeclination =
288
- prodDeclination || prod.declinations.find((declination) => !!!declination.is_sample);
289
- }
290
- }
291
- }
292
- const decliIsSample = !!prodDeclination && !!prodDeclination.is_sample;
293
- if (!!decliIsSample) {
294
- if (!!cartData && !!cartData.items.length) {
295
- switch (true) {
296
- case cartData.items.length === 4:
297
- return {
298
- addToCart: false,
299
- error: {
300
- fr: 'Un maximum de quatre échantillons est permis à la fois par commande.',
301
- en: 'A maximum of four samples can be added to your cart.'
302
- }
303
- };
304
- case !!cartData.items.find((item) => !!prodDeclination && item.sku === prodDeclination.sku):
305
- return {
306
- addToCart: false,
307
- error: {
308
- fr: 'Vous avez déjà cet échantillon au panier.',
309
- en: 'This sample is already in your cart.'
310
- }
311
- };
312
- default:
313
- addToCart = true;
314
- }
315
- }
316
- else {
317
- addToCart = true;
318
- }
319
- }
320
- else if (!!prodDeclination && !!!(0, products_1.checkIfProductIsOfType)(prod, 'gazon')) {
321
- addToCart = true;
322
- }
323
- return {
324
- addToCart: addToCart,
325
- declinationChecked: prodDeclination,
326
- showForm: true
327
- };
328
- };
329
- exports.checkIfItemCanBeAddedToCart = checkIfItemCanBeAddedToCart;
330
- const checkIfDecliIsOkForMixedSale = (decli, typeToCheck) => {
331
- return (decli.attributes &&
332
- !!decli.attributes[data_2.AttributesIdEnumGR.VENTE_MIXTE] &&
333
- !!decli.attributes[data_2.AttributesIdEnumGR.VENTE_MIXTE].includes(typeToCheck));
334
- };
335
- exports.checkIfDecliIsOkForMixedSale = checkIfDecliIsOkForMixedSale;
336
- const checkCartTypeBeforeAddingItem = (prod, declination, cartData, forceCartType) => {
337
- if (!!!cartData || !!!cartData.items || !!!cartData.items.length) {
338
- if (!!!forceCartType)
339
- return true;
340
- }
341
- const cartType = !!forceCartType ? forceCartType : !!cartData ? (0, exports.getCartType)(cartData) : '';
342
- if (!!!cartType)
343
- return true;
344
- const items = !!cartData ? cartData.items : [];
345
- if (!!cartData && !!cartData.is_booking)
346
- return false;
347
- if ((!!!prod.declinations.find((decli) => !!decli.is_sample) || (!!declination && !declination.is_sample)) &&
348
- cartType === cart_1.CartGeneralTypeEnum.SAMPLE) {
349
- return false;
350
- }
351
- if (!!declination && !!declination.is_sample && cartType !== cart_1.CartGeneralTypeEnum.SAMPLE) {
352
- return false;
353
- }
354
- if (!!(0, products_1.checkIfProductIsOfType)(prod, 'gazon') && cartType !== cart_1.CartGeneralTypeEnum.SAMPLE) {
355
- if (!!items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'gazon')))
356
- return false;
357
- if (!!items.some((i) => !!!(0, exports.checkIfDecliIsOkForMixedSale)(i, 'gazon')))
358
- return false;
359
- }
360
- let currentCartUpsells = [];
361
- try {
362
- currentCartUpsells = (0, uniqBy_1.default)((0, flatten_1.default)(items.map((i) => i.product_upsells || [])), (i) => !!i.recommendation_sku ? i.recommendation_sku : i.recommendation_parent_slug);
363
- }
364
- catch (e) {
365
- if (!!process.env.IS_TEST_ENV)
366
- console.log('error on fetching cart upsells: ', e.toString());
367
- }
368
- if (cartType === cart_1.CartGeneralTypeEnum.GRASS) {
369
- if (!!!prod.declinations.some((decli) => (0, exports.checkIfDecliIsOkForMixedSale)(decli, 'gazon')) ||
370
- (!!declination && !!!(0, exports.checkIfDecliIsOkForMixedSale)(declination, 'gazon'))) {
371
- if (!!!currentCartUpsells.length ||
372
- (!!currentCartUpsells.length &&
373
- (!!!prod.declinations.find((decli) => !!currentCartUpsells.find((item) => (!!item.use_parent &&
374
- item.recommendation_parent_slug &&
375
- item.recommendation_parent_slug === prod.slug) ||
376
- item.recommendation_sku === decli.sku)) ||
377
- (!!declination &&
378
- !!!currentCartUpsells.find((item) => item.recommendation_sku === declination.sku ||
379
- (!!item.use_parent &&
380
- item.recommendation_parent_slug &&
381
- item.recommendation_parent_slug === prod.slug)))))) {
382
- return false;
383
- }
384
- }
385
- else {
386
- }
387
- }
388
- if (cartType !== cart_1.CartGeneralTypeEnum.VRAC &&
389
- (prod.declinations.every((decli) => !!(0, products_1.checkIfProductIsOfType)(decli, 'vrac')) ||
390
- (!!declination && !!(0, products_1.checkIfProductIsOfType)(declination, 'vrac'))) &&
391
- items.some((i) => !!!(0, exports.checkIfDecliIsOkForMixedSale)(i, 'vrac'))) {
392
- return false;
393
- }
394
- if (cartType === cart_1.CartGeneralTypeEnum.VRAC &&
395
- (!!!prod.declinations.some((decli) => !!(0, products_1.checkIfProductIsOfType)(decli, 'vrac') || !!(0, exports.checkIfDecliIsOkForMixedSale)(decli, 'vrac')) ||
396
- (!!declination &&
397
- !!!(0, products_1.checkIfProductIsOfType)(declination, 'vrac', true) &&
398
- !!!(0, exports.checkIfDecliIsOkForMixedSale)(declination, 'vrac')))) {
399
- return false;
400
- }
401
- return true;
402
- };
403
- exports.checkCartTypeBeforeAddingItem = checkCartTypeBeforeAddingItem;
404
- const getCartType = (cartData) => {
405
- switch (true) {
406
- case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.RETURN_PALLETS, cartData):
407
- return cart_1.CartGeneralTypeEnum.RETURN_PALLETS;
408
- case !!cartData.is_booking:
409
- return !!cartData.is_booking_beton ? cart_1.CartGeneralTypeEnum.BOOKING_BETON : cart_1.CartGeneralTypeEnum.BOOKING;
410
- case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.SAMPLE, cartData):
411
- return cart_1.CartGeneralTypeEnum.SAMPLE;
412
- case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.VRAC, cartData):
413
- return cart_1.CartGeneralTypeEnum.VRAC;
414
- case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.GRASS, cartData):
415
- return cart_1.CartGeneralTypeEnum.GRASS;
416
- case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES, cartData):
417
- return cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES;
418
- default:
419
- return cart_1.CartGeneralTypeEnum.BETON;
420
- }
421
- };
422
- exports.getCartType = getCartType;
423
- const isPro = (invoice) => {
424
- return !!(0, exports.getProTitleFromCart)(invoice);
425
- };
426
- exports.isPro = isPro;
427
- const getProTitleFromCart = (invoice) => {
428
- return (0, object_1.recursiveCheckObject)(invoice, 'customer_info.pro_title');
429
- };
430
- exports.getProTitleFromCart = getProTitleFromCart;
431
- const orderCartItems = (cart) => {
432
- return (0, orderBy_1.default)(!!cart.promise_to_purchase && !!cart.promise_to_purchase.ids
433
- ? (0, g2_1.groupArrayOfItemsByItemAndCorrespondingEscompteItem)(cart.items)
434
- : cart.items, (item) => {
435
- const upsellRelativeItem = !!item.is_upsell_of_sku
436
- ? cart.items.find((i) => i.sku === item.is_upsell_of_sku)
437
- : undefined;
438
- if (!!!item.is_service ||
439
- ((0, g2_1.isEscompteSuppItem)(item.sku) && !!upsellRelativeItem && !!!upsellRelativeItem.is_service))
440
- return 0;
441
- if (item.is_service && item.sku === 'FRSBETON')
442
- return 1;
443
- return 2;
444
- });
445
- };
446
- exports.orderCartItems = orderCartItems;
447
- const getConcreteCartInfo = async (cartData, fetchInventoryItem, pickupStoreId, inventoryItemsArray) => {
448
- const containsYellowProduct = (0, products_1.getConcreteItemsByAvailability)(cartData, 'delais-a-prevoir');
449
- const containsGreenProduct = (0, products_1.getConcreteItemsByAvailability)(cartData, 'en-stock', true);
450
- const containsRedProduct = (0, products_1.getConcreteItemsByAvailability)(cartData, 'aucune-production-prevue');
451
- let isInStock = true;
452
- const storeId = !!pickupStoreId ? pickupStoreId : (0, object_1.recursiveCheckObject)(cartData, 'shipping_payload.pickup_store.id');
453
- if (!!storeId && !!containsGreenProduct.length) {
454
- const inventoryItems = !!inventoryItemsArray && !!inventoryItemsArray.length
455
- ? inventoryItemsArray
456
- : (await Promise.all(containsGreenProduct.map(async (item) => !!item.is_service ? undefined : await fetchInventoryItem(item.sku)))).filter((i) => !!i);
457
- isInStock =
458
- !!inventoryItems &&
459
- !!inventoryItems.length &&
460
- inventoryItems.every((inventoryItem) => {
461
- const cartItem = containsGreenProduct.find((i) => i.sku === inventoryItem.sku);
462
- if (!!!cartItem)
463
- return false;
464
- const inventoryStock = inventoryItem.inventories.find((i) => i.store_id === storeId);
465
- if (!!!inventoryStock || !!!inventoryStock.qty)
466
- return false;
467
- const convertedQuantity = (0, inventories_1.getConvertedUnitQuantity)(inventoryItem.other_units || [], inventoryStock.qty.available || 0, 'sale_unit');
468
- return convertedQuantity >= cartItem.qte;
469
- });
470
- }
471
- return {
472
- type: !!containsRedProduct.length ? 'red' : !!containsYellowProduct.length ? 'yellow' : 'green',
473
- inStock: isInStock
474
- };
475
- };
476
- exports.getConcreteCartInfo = getConcreteCartInfo;
477
- const getGrassProductForCart = (item) => {
478
- if (!!!item)
479
- return;
480
- return {
481
- slug: item.parent_slug || '',
482
- sku: item.sku,
483
- qte: item.qte,
484
- price: (0, products_3.getLowestPrice)(item).price.amount
485
- };
486
- };
487
- exports.getGrassProductForCart = getGrassProductForCart;
488
- const getRecursiveItems = (cartItems, cartContainsGrass, keepFees) => {
489
- const getRecusiveItem = (item) => {
490
- const subItems = cartItems.filter((i) => i.is_upsell_of_sku === item.sku).map((subI) => getRecusiveItem(subI));
491
- return Object.assign(Object.assign({}, item), { sub_items: !!subItems && !!subItems.length ? subItems : undefined });
492
- };
493
- const newItemList = cartItems
494
- .map((i) => getRecusiveItem(i))
495
- .filter((i) => (!!keepFees && !!i.is_upsell_of_sku && i.is_upsell_of_sku === 'summary') ||
496
- (!!i.sub_items && !!!i.is_upsell_of_sku) ||
497
- (!!!i.is_upsell_of_sku && !!!i.sub_items));
498
- return !!!cartContainsGrass ? newItemList : (0, orderBy_1.default)(newItemList, (i) => !!i.sub_items, 'desc');
499
- };
500
- exports.getRecursiveItems = getRecursiveItems;
501
- const getRecursiveItemsFromSubItems = (item) => {
502
- const getRecusiveItem = (item) => {
503
- const subItems = item.sub_items;
504
- if (!!subItems) {
505
- const items = [item, ...(0, flatten_1.default)(subItems.map((i) => getRecusiveItem(i)))];
506
- return items;
507
- }
508
- return [item];
509
- };
510
- return !!item.sub_items ? [item, ...(0, flatten_1.default)(item.sub_items.map((i) => getRecusiveItem(i)))] : [item];
511
- };
512
- exports.getRecursiveItemsFromSubItems = getRecursiveItemsFromSubItems;
513
- const getAppliedPrice = (item, options = {}) => {
514
- const applied = (0, exports.getLowestAppliedPrice)(item);
515
- if (!!options.getLowest) {
516
- return applied.amount;
517
- }
518
- if ((!!!item.promo_price && !!!item.discount_price) || !!options.isBookingBeton) {
519
- return item.regular_price.amount;
520
- }
521
- const itemPriceIsEscompte = (!!item.promo_price && (0, exports.checkPriceForEscompte)(item.promo_price)) ||
522
- (!!item.discount_price && (0, exports.checkPriceForEscompte)(item.discount_price));
523
- if (!!itemPriceIsEscompte) {
524
- if (!!item.discount_price)
525
- return item.discount_price.amount;
526
- return item.regular_price.amount;
527
- }
528
- return applied.amount;
529
- };
530
- exports.getAppliedPrice = getAppliedPrice;
531
- const getLowestAppliedPrice = (item) => {
532
- const regular = item.regular_price;
533
- const promo = item.promo_price;
534
- const discount = item.discount_price;
535
- const regularPrice = regular.amount || 0;
536
- const promoPrice = !!promo ? promo.amount : regularPrice;
537
- const discountPrice = !!discount ? discount.amount : regularPrice;
538
- if (!!promo && promoPrice <= discountPrice && promoPrice <= regularPrice) {
539
- return promo;
540
- }
541
- if (!!discount && discountPrice <= promoPrice && discountPrice <= regularPrice) {
542
- return discount;
543
- }
544
- return regular;
545
- };
546
- exports.getLowestAppliedPrice = getLowestAppliedPrice;
547
- const checkPriceForEscompte = (price) => {
548
- const priceType = price.price_type;
549
- const posUnitPrice = `pos_custom_${Cart_1.CustomPromoType.UNIT_PRICE}`;
550
- const isEscompteType = !!priceType &&
551
- !!![
552
- G2_1.CustomPriceItemTypeEnum.ENTENTE,
553
- G2_1.CustomPriceItemTypeEnum.REG,
554
- posUnitPrice,
555
- products_3.priceTypeEnum.TIER_PRICING
556
- ].includes(priceType);
557
- return !!isEscompteType;
558
- };
559
- exports.checkPriceForEscompte = checkPriceForEscompte;
560
- const getPercentFromReducedPrice = (item, isPro) => {
561
- const typeToCheck = !!item.promo_price && !!item.promo_price.price_type ? 'promo' : 'discount';
562
- const priceToCheck = typeToCheck === 'promo' ? item.promo_price : item.discount_price;
563
- if (!!!priceToCheck || (!!!isPro && !!!priceToCheck.overridden))
564
- return;
565
- if (!!!(0, exports.checkPriceForEscompte)(priceToCheck))
566
- return;
567
- if (typeToCheck === 'promo')
568
- return (0, round_1.default)((0, cart_2.getActualPromoPrice)(item, '%'), 2);
569
- return (0, round_1.default)((0, cart_2.getActualDiscountPrice)(item, '%'), 2);
570
- };
571
- exports.getPercentFromReducedPrice = getPercentFromReducedPrice;
572
- const getClientNumberForCart = (cartData, space, options = {}) => {
573
- if (!!!cartData)
574
- return '';
575
- const proTitle = (0, object_1.recursiveCheckObject)(cartData, 'customer_info.pro_title');
576
- const isWebCart = cartData.cart_type === Cart_1.CartTypeEnum.WEB || !!cartData.is_from_web;
577
- const paFoundInCart = (0, object_1.recursiveCheckObject)(cartData, 'promise_to_purchase');
578
- let isPA = !!((0, object_1.recursiveCheckObject)(paFoundInCart, 'ids') || []).length;
579
- if (!!paFoundInCart && !!options.checkIfEscPaApplied) {
580
- const bankTypes = !!space ? space.bankTypes.get() : [];
581
- const grassBank = bankTypes.find((b) => (0, locale_1.getLocaleOfDictionnary)(b.name, 'fr').toLowerCase() == 'gazon');
582
- const atLeastOneEscPaApplied = cartData.items.some((i) => (0, g2_1.isEscompteSuppItem)(i.sku)) ||
583
- (!!grassBank &&
584
- (paFoundInCart.banks_used || []).some((b) => b.bank_type_id == grassBank.id) &&
585
- cartData.items.some((i) => i.sku == products_2.kentucky));
586
- isPA = atLeastOneEscPaApplied;
587
- }
588
- if (!!proTitle && !!cartData.customer_id) {
589
- return `${cartData.customer_id}${!!isPA ? 'PA' : ''}`;
590
- }
591
- if (!!isWebCart) {
592
- return `${!!cartData.is_pickup ? 'COM' : 'LIV'}${!!cartData.paid_at ? (0, moment_1.default)((0, data_1.formatDate)(cartData.paid_at)).format('YY') : '00'}WEB`;
593
- }
594
- if (!!options.isQuote) {
595
- return proTitle === 'anonymous-pos-pro' ? 'Paysagiste' : 'Détail';
596
- }
597
- return _getPOSCustomerTypeForCart(cartData);
598
- };
599
- exports.getClientNumberForCart = getClientNumberForCart;
600
- const _getPOSCustomerTypeForCart = (cartData) => {
601
- const isPickup = !!cartData && !!cartData.is_pickup;
602
- const isPro = !!cartData.customer_info && !!cartData.customer_info.pro_title;
603
- const currentYear = !!cartData.paid_at ? (0, moment_1.default)((0, data_1.formatDate)(cartData.paid_at)).format('YY') : '00';
604
- const storeNb = !!cartData.created_by && !!cartData.created_by.at_store_number ? cartData.created_by.at_store_number : 0;
605
- const aNumber = (0, toNumber_1.default)(storeNb);
606
- let endOfCode = '';
607
- if (!!!aNumber) {
608
- endOfCode = `${!!isPro ? '3' : ''}${storeNb}`;
609
- }
610
- else {
611
- endOfCode = `${!!isPro ? '3' : aNumber < 10 ? '0' : ''}${aNumber}`;
612
- }
613
- return `${!!isPickup ? 'COM' : 'LIV'}${currentYear}${endOfCode}`;
614
- };
615
- const getLabelForCartType = (value) => {
616
- switch (value) {
617
- case cart_1.CartGeneralTypeEnum.RETURN_PALLETS:
618
- return 'Retour palettes';
619
- case cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES:
620
- return 'Accessoires seulement';
621
- case cart_1.CartGeneralTypeEnum.BETON:
622
- return 'Béton';
623
- case cart_1.CartGeneralTypeEnum.SAMPLE:
624
- return 'Échantillons';
625
- case cart_1.CartGeneralTypeEnum.GRASS:
626
- return 'Gazon';
627
- case cart_1.CartGeneralTypeEnum.INSTALLATION:
628
- return 'Installation';
629
- case cart_1.CartGeneralTypeEnum.VRAC:
630
- return 'Vrac';
631
- case Cart_1.CartContentTypeEnum.MIXED:
632
- return 'Mixte';
633
- default:
634
- return value;
635
- }
636
- };
637
- exports.getLabelForCartType = getLabelForCartType;
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getLabelForCartType = exports.getClientNumberForCart = exports.getPercentFromReducedPrice = exports.checkPriceForEscompte = exports.getLowestAppliedPrice = exports.getAppliedPrice = exports.getRecursiveItemsFromSubItems = exports.getRecursiveItems = exports.getGrassProductForCart = exports.getConcreteCartInfo = exports.orderCartItems = exports.getProTitleFromCart = exports.isPro = exports.getCartType = exports.checkCartTypeBeforeAddingItem = exports.checkIfDecliIsOkForMixedSale = exports.checkIfItemCanBeAddedToCart = exports.checkIfCartContainsType = exports.handleAddGrassItemsCart = void 0;
18
+ const orderBy_1 = __importDefault(require("lodash/orderBy"));
19
+ const flatten_1 = __importDefault(require("lodash/flatten"));
20
+ const uniqBy_1 = __importDefault(require("lodash/uniqBy"));
21
+ const toNumber_1 = __importDefault(require("lodash/toNumber"));
22
+ const round_1 = __importDefault(require("lodash/round"));
23
+ const moment_1 = __importDefault(require("moment"));
24
+ const cart_1 = require("../interfaces/cart");
25
+ const products_1 = require("./products");
26
+ const upsells_1 = require("./upsells");
27
+ const expedition_1 = require("./expedition");
28
+ const products_2 = require("../constants/products");
29
+ const Cart_1 = require("../../../Interfaces/Cart");
30
+ const G2_1 = require("../../../Interfaces/G2");
31
+ const locale_1 = require("../../../utils/locale");
32
+ const inventories_1 = require("../../../utils/inventories");
33
+ const products_3 = require("../../../utils/products");
34
+ const data_1 = require("../../../utils/data");
35
+ const data_2 = require("../interfaces/data");
36
+ const g2_1 = require("./g2");
37
+ const object_1 = require("../../../utils/object");
38
+ const cart_2 = require("../../../utils/cart");
39
+ const handleAddGrassItemsCart = async (cart, chosenDeclination, parentProduct, isUpdating, isRecommendedUpsell, formValues, fetchProduct, kentuckyBaseGrass, locale = 'fr', isPro, customPriceList, recommendedUpsellParentSlug) => {
40
+ if (!!!chosenDeclination || !!!parentProduct)
41
+ return {
42
+ error: ''
43
+ };
44
+ let itemsToAdd = [];
45
+ let itemsToUpdate = [];
46
+ let itemsToDelete = [];
47
+ let newShippingPayload = cart.shipping_payload;
48
+ const prodUpsell = parentProduct.product_upsells;
49
+ const onlySamplesInCart = !!cart.items.length && cart.items.every((item) => !!item.is_sample);
50
+ if (!!onlySamplesInCart) {
51
+ return {
52
+ error: (0, locale_1.translateILang)({
53
+ fr: "Pour ajouter ce produit à votre panier vous devez d'abord compléter la commande en cours ou vider votre panier",
54
+ en: 'To add this product to your cart, you must first complete your current order or empty your cart'
55
+ }, locale)
56
+ };
57
+ }
58
+ if (!!isPro && !!customPriceList) {
59
+ chosenDeclination = (0, g2_1.checkForCustomPriceEquivalent)(chosenDeclination, customPriceList, {
60
+ removeTierPricing: chosenDeclination.sku === products_2.kentucky
61
+ });
62
+ }
63
+ if (isUpdating && !!cart.items.find((i) => i.sku === chosenDeclination.sku)) {
64
+ itemsToUpdate.push({
65
+ sku: chosenDeclination.sku,
66
+ qte: formValues.qte || 0
67
+ });
68
+ }
69
+ else {
70
+ itemsToAdd.push(Object.assign(Object.assign({}, chosenDeclination), { qte: formValues.qte || 0, parent_slug: !!isRecommendedUpsell && recommendedUpsellParentSlug ? recommendedUpsellParentSlug : parentProduct.slug, product_upsells: parentProduct.product_upsells, categories: parentProduct.categories }));
71
+ }
72
+ if (!!!isRecommendedUpsell) {
73
+ let baseGrass = parentProduct;
74
+ if (!!prodUpsell && !!prodUpsell.find((anUpsell) => anUpsell.recommendation_sku === products_2.kentucky)) {
75
+ const baseGrassProd = kentuckyBaseGrass;
76
+ if (!!baseGrassProd)
77
+ baseGrass = baseGrassProd;
78
+ }
79
+ if (!!prodUpsell) {
80
+ for (let anUpsell of prodUpsell) {
81
+ if (!!!anUpsell.auto_add)
82
+ continue;
83
+ const sameProduct = await fetchProduct(anUpsell.recommendation_parent_slug, locale, undefined, true);
84
+ if (!!!sameProduct || !!!sameProduct.declinations)
85
+ continue;
86
+ let sameDecli = (sameProduct.declinations || []).find((decli) => decli.sku === anUpsell.recommendation_sku);
87
+ if (!!!sameDecli)
88
+ continue;
89
+ if (!!isPro && !!customPriceList) {
90
+ sameDecli = (0, g2_1.checkForCustomPriceEquivalent)(sameDecli, customPriceList, {
91
+ removeTierPricing: sameDecli.sku === products_2.kentucky
92
+ });
93
+ }
94
+ const anUpsellProduct = Object.assign(Object.assign(Object.assign(Object.assign({}, sameDecli), { parent_slug: anUpsell.recommendation_parent_slug, recommended_qte: anUpsell.recommendation_qty, recommended_sku: anUpsell.recommendation_sku, matching_qte: !!anUpsell.matching_qty, auto_add: anUpsell.auto_add, actual_qte: anUpsell.actual_qty }), (!!anUpsell.is_recommendation ? { is_recommendation: true } : {})), (!!anUpsell.show_recommendation_msg ? { show_recommendation_msg: true } : {}));
95
+ const ratio = (0, upsells_1.calculateUpsellQte)(anUpsellProduct, formValues.qte || 0);
96
+ if (!!ratio) {
97
+ if (isUpdating && !!cart.items.find((i) => i.sku === anUpsellProduct.sku)) {
98
+ itemsToUpdate.push({
99
+ sku: anUpsellProduct.sku,
100
+ qte: ratio
101
+ });
102
+ }
103
+ else {
104
+ itemsToAdd.push(Object.assign(Object.assign({}, sameDecli), { qte: ratio, is_upsell_of_sku: chosenDeclination.sku, parent_slug: sameProduct.slug, product_upsells: sameProduct.product_upsells, categories: sameProduct.categories }));
105
+ }
106
+ }
107
+ }
108
+ }
109
+ const currentInstallItem = cart.items.find((i) => i.parent_slug === 'installation-gazon');
110
+ if (!!formValues.installation) {
111
+ const upsell = baseGrass.product_upsells;
112
+ if (!!upsell) {
113
+ const allInstallFees = await (0, products_1.getInstallationArray)(Number(formValues.qte), upsell, fetchProduct, locale, isPro, chosenDeclination.sku, customPriceList, {
114
+ engrais: !!formValues.engrais,
115
+ roulage: !!formValues.roulage
116
+ });
117
+ const installationDecli = allInstallFees.find((fee) => fee.parent_slug === 'installation-gazon');
118
+ const installIsDifferent = !!currentInstallItem && !!installationDecli && currentInstallItem.sku !== installationDecli.sku;
119
+ for (let fee of allInstallFees) {
120
+ if (isUpdating && !!cart.items.find((i) => i.sku === fee.sku) && !!!installIsDifferent) {
121
+ itemsToUpdate.push({
122
+ sku: fee.sku,
123
+ qte: fee.qte
124
+ });
125
+ }
126
+ else {
127
+ itemsToAdd.push(fee);
128
+ }
129
+ }
130
+ const minQteInstall = (0, expedition_1.getMinQteInstall)(!!isPro);
131
+ if (typeof formValues.qte === 'number' && formValues.qte >= minQteInstall) {
132
+ const minInstall = cart.items.find((item) => item.parent_slug === 'frais-minimum-gazon-pour-installation');
133
+ if (!!minInstall) {
134
+ itemsToDelete.push(minInstall.sku);
135
+ }
136
+ }
137
+ const fertilisationItem = cart.items.find((i) => i.parent_slug === 'installation-fertilisation');
138
+ if (isUpdating && !!!formValues.engrais && !!fertilisationItem) {
139
+ itemsToDelete.push(fertilisationItem.sku);
140
+ }
141
+ const roulageItem = cart.items.find((i) => i.parent_slug === 'installation-roulage');
142
+ if (isUpdating && !!!formValues.roulage && !!roulageItem) {
143
+ itemsToDelete.push(roulageItem.sku);
144
+ }
145
+ const otherInstall = !!installIsDifferent ? currentInstallItem : undefined;
146
+ if (!!otherInstall) {
147
+ itemsToDelete.push(otherInstall.sku);
148
+ itemsToDelete = [
149
+ ...itemsToDelete,
150
+ ...cart.items.filter((i) => i.is_upsell_of_sku === otherInstall.sku).map((i) => i.sku)
151
+ ];
152
+ }
153
+ if (!!isPro) {
154
+ newShippingPayload = Object.assign(Object.assign({}, newShippingPayload), { pro_installation_info: formValues.pro });
155
+ const feeProduct = await fetchProduct('frais_extra_pro_installation', locale, undefined, true);
156
+ const handleProSpec = (sku, isSelected) => {
157
+ if (!!!feeProduct || !!!installationDecli)
158
+ return;
159
+ const itemIsInCart = !!cart.items.find((i) => i.sku === sku);
160
+ if (isSelected) {
161
+ let decli = feeProduct.declinations.find((d) => d.sku === sku);
162
+ if (!!decli) {
163
+ if (!!customPriceList) {
164
+ decli = (0, g2_1.checkForCustomPriceEquivalent)(decli, customPriceList);
165
+ }
166
+ if (isUpdating && itemIsInCart && !!!otherInstall) {
167
+ itemsToUpdate.push({
168
+ sku: sku,
169
+ qte: typeof formValues.qte === 'number' && formValues.qte < minQteInstall
170
+ ? minQteInstall
171
+ : formValues.qte || 0
172
+ });
173
+ }
174
+ else {
175
+ if (!!otherInstall) {
176
+ itemsToDelete.push(decli.sku);
177
+ }
178
+ itemsToAdd.push(Object.assign(Object.assign({}, decli), { qte: typeof formValues.qte === 'number' && formValues.qte < minQteInstall
179
+ ? minQteInstall
180
+ : formValues.qte || 0, is_upsell_of_sku: installationDecli.sku, parent_slug: 'frais_extra_pro_installation' }));
181
+ }
182
+ }
183
+ }
184
+ else {
185
+ if (itemIsInCart) {
186
+ itemsToDelete.push(sku);
187
+ }
188
+ }
189
+ };
190
+ if (!!formValues.pro && !!formValues.pro.specs) {
191
+ Object.entries(formValues.pro.specs).forEach((spec) => {
192
+ handleProSpec(products_2.installationProSpecSkus[spec[0]], spec[1]);
193
+ });
194
+ }
195
+ }
196
+ }
197
+ }
198
+ else {
199
+ if (!!isUpdating && !formValues.installation) {
200
+ if (!!newShippingPayload && !!newShippingPayload.pro_installation_info) {
201
+ const { pro_installation_info } = newShippingPayload, rest = __rest(newShippingPayload, ["pro_installation_info"]);
202
+ newShippingPayload = Object.assign({}, rest);
203
+ }
204
+ itemsToDelete = [...itemsToDelete, ...(0, products_1.getAllInstallFromItems)(cart.items).map((i) => i.sku)];
205
+ }
206
+ }
207
+ }
208
+ itemsToAdd = (0, upsells_1.removeExceptionAutoAddUpsells)(itemsToAdd);
209
+ if (!!isUpdating) {
210
+ if (!!cart.items) {
211
+ const fusion = [
212
+ ...cart.items.filter((i) => itemsToUpdate.some((update) => i.sku === update.sku) || i.is_upsell_of_sku === 'summary'),
213
+ ...itemsToAdd
214
+ ];
215
+ let productsToRemove = fusion.filter((item) => {
216
+ const removedBecauseException = !!!(0, upsells_1.removeExceptionAutoAddUpsells)(fusion).some((i) => i.sku === item.sku);
217
+ return item.is_upsell_of_sku === 'summary' || !!removedBecauseException;
218
+ });
219
+ itemsToAdd = itemsToAdd.filter((i) => !!!productsToRemove.map((r) => r.sku).includes(i.sku));
220
+ if (!!productsToRemove.length) {
221
+ itemsToDelete = [...itemsToDelete, ...productsToRemove.map((item) => item.sku)];
222
+ if (newShippingPayload) {
223
+ const { pro_installation_info } = newShippingPayload;
224
+ newShippingPayload = Object.assign(Object.assign({}, newShippingPayload), (!!pro_installation_info ? { pro_installation_info } : {}));
225
+ }
226
+ }
227
+ }
228
+ }
229
+ return {
230
+ itemsToAdd,
231
+ itemsToUpdate,
232
+ itemsToDelete,
233
+ newShippingPayload
234
+ };
235
+ };
236
+ exports.handleAddGrassItemsCart = handleAddGrassItemsCart;
237
+ const checkIfCartContainsType = (type, cartData, excludeUndefinedForAccessories = true, excludeUndefinedForBeton = true) => {
238
+ switch (type) {
239
+ case cart_1.CartGeneralTypeEnum.RETURN_PALLETS:
240
+ return !!cartData.shipping_payload && !!cartData.shipping_payload.pallet_return_memo_ref;
241
+ case cart_1.CartGeneralTypeEnum.GRASS:
242
+ return !!cartData.items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'gazon') && !!!i.is_sample);
243
+ case cart_1.CartGeneralTypeEnum.VRAC:
244
+ return !!cartData.items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'vrac'));
245
+ case cart_1.CartGeneralTypeEnum.INSTALLATION:
246
+ return !!cartData.items.some((i) => i.parent_slug === 'installation-gazon');
247
+ case cart_1.CartGeneralTypeEnum.SAMPLE:
248
+ return !!cartData.items.some((i) => !!i.is_sample);
249
+ case cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES:
250
+ return (!!cartData.items &&
251
+ !!cartData.items.length &&
252
+ cartData.items
253
+ .filter((i) => !!!i.is_service)
254
+ .every((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'accessoire', excludeUndefinedForAccessories)));
255
+ case cart_1.CartGeneralTypeEnum.BETON:
256
+ return (!!cartData.items &&
257
+ !!cartData.items.length &&
258
+ cartData.items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'beton', excludeUndefinedForBeton) && !!!i.is_sample));
259
+ default:
260
+ return false;
261
+ }
262
+ };
263
+ exports.checkIfCartContainsType = checkIfCartContainsType;
264
+ const checkIfItemCanBeAddedToCart = (prod, parentProdType, cartData, addToCart = false, declination = undefined, useParent = false, autoAdd = false) => {
265
+ const addItToCart = !!autoAdd ? true : (0, exports.checkCartTypeBeforeAddingItem)(prod, declination, cartData);
266
+ if (!!!addItToCart) {
267
+ return {
268
+ addToCart: false,
269
+ error: {
270
+ fr: "Pour ajouter ce type de produit à votre panier vous devez d'abord compléter la commande en cours ou vider votre panier.",
271
+ en: 'To add this type of product to your cart, you must first complete the current order or empty your cart.'
272
+ }
273
+ };
274
+ }
275
+ let prodDeclination = declination;
276
+ if (!!!useParent) {
277
+ switch (parentProdType) {
278
+ case 'gazon':
279
+ prodDeclination =
280
+ prodDeclination || prod.declinations.find((declination) => !!!declination.is_sample);
281
+ break;
282
+ case 'beton':
283
+ break;
284
+ case 'other':
285
+ case 'vrac':
286
+ if (!!!prod.declinations.find((decli) => !!decli.other_units)) {
287
+ prodDeclination =
288
+ prodDeclination || prod.declinations.find((declination) => !!!declination.is_sample);
289
+ }
290
+ }
291
+ }
292
+ const decliIsSample = !!prodDeclination && !!prodDeclination.is_sample;
293
+ if (!!decliIsSample) {
294
+ if (!!cartData && !!cartData.items.length) {
295
+ switch (true) {
296
+ case cartData.items.length === 4:
297
+ return {
298
+ addToCart: false,
299
+ error: {
300
+ fr: 'Un maximum de quatre échantillons est permis à la fois par commande.',
301
+ en: 'A maximum of four samples can be added to your cart.'
302
+ }
303
+ };
304
+ case !!cartData.items.find((item) => !!prodDeclination && item.sku === prodDeclination.sku):
305
+ return {
306
+ addToCart: false,
307
+ error: {
308
+ fr: 'Vous avez déjà cet échantillon au panier.',
309
+ en: 'This sample is already in your cart.'
310
+ }
311
+ };
312
+ default:
313
+ addToCart = true;
314
+ }
315
+ }
316
+ else {
317
+ addToCart = true;
318
+ }
319
+ }
320
+ else if (!!prodDeclination && !!!(0, products_1.checkIfProductIsOfType)(prod, 'gazon')) {
321
+ addToCart = true;
322
+ }
323
+ return {
324
+ addToCart: addToCart,
325
+ declinationChecked: prodDeclination,
326
+ showForm: true
327
+ };
328
+ };
329
+ exports.checkIfItemCanBeAddedToCart = checkIfItemCanBeAddedToCart;
330
+ const checkIfDecliIsOkForMixedSale = (decli, typeToCheck) => {
331
+ return (decli.attributes &&
332
+ !!decli.attributes[data_2.AttributesIdEnumGR.VENTE_MIXTE] &&
333
+ !!decli.attributes[data_2.AttributesIdEnumGR.VENTE_MIXTE].includes(typeToCheck));
334
+ };
335
+ exports.checkIfDecliIsOkForMixedSale = checkIfDecliIsOkForMixedSale;
336
+ const checkCartTypeBeforeAddingItem = (prod, declination, cartData, forceCartType) => {
337
+ if (!!!cartData || !!!cartData.items || !!!cartData.items.length) {
338
+ if (!!!forceCartType)
339
+ return true;
340
+ }
341
+ const cartType = !!forceCartType ? forceCartType : !!cartData ? (0, exports.getCartType)(cartData) : '';
342
+ if (!!!cartType)
343
+ return true;
344
+ const items = !!cartData ? cartData.items : [];
345
+ if (!!cartData && !!cartData.is_booking)
346
+ return false;
347
+ if ((!!!prod.declinations.find((decli) => !!decli.is_sample) || (!!declination && !declination.is_sample)) &&
348
+ cartType === cart_1.CartGeneralTypeEnum.SAMPLE) {
349
+ return false;
350
+ }
351
+ if (!!declination && !!declination.is_sample && cartType !== cart_1.CartGeneralTypeEnum.SAMPLE) {
352
+ return false;
353
+ }
354
+ if (!!(0, products_1.checkIfProductIsOfType)(prod, 'gazon') && cartType !== cart_1.CartGeneralTypeEnum.SAMPLE) {
355
+ if (!!items.some((i) => !!(0, products_1.checkIfProductIsOfType)(i, 'gazon')))
356
+ return false;
357
+ if (!!items.some((i) => !!!(0, exports.checkIfDecliIsOkForMixedSale)(i, 'gazon')))
358
+ return false;
359
+ }
360
+ let currentCartUpsells = [];
361
+ try {
362
+ currentCartUpsells = (0, uniqBy_1.default)((0, flatten_1.default)(items.map((i) => i.product_upsells || [])), (i) => !!i.recommendation_sku ? i.recommendation_sku : i.recommendation_parent_slug);
363
+ }
364
+ catch (e) {
365
+ if (!!process.env.IS_TEST_ENV)
366
+ console.log('error on fetching cart upsells: ', e.toString());
367
+ }
368
+ if (cartType === cart_1.CartGeneralTypeEnum.GRASS) {
369
+ if (!!!prod.declinations.some((decli) => (0, exports.checkIfDecliIsOkForMixedSale)(decli, 'gazon')) ||
370
+ (!!declination && !!!(0, exports.checkIfDecliIsOkForMixedSale)(declination, 'gazon'))) {
371
+ if (!!!currentCartUpsells.length ||
372
+ (!!currentCartUpsells.length &&
373
+ (!!!prod.declinations.find((decli) => !!currentCartUpsells.find((item) => (!!item.use_parent &&
374
+ item.recommendation_parent_slug &&
375
+ item.recommendation_parent_slug === prod.slug) ||
376
+ item.recommendation_sku === decli.sku)) ||
377
+ (!!declination &&
378
+ !!!currentCartUpsells.find((item) => item.recommendation_sku === declination.sku ||
379
+ (!!item.use_parent &&
380
+ item.recommendation_parent_slug &&
381
+ item.recommendation_parent_slug === prod.slug)))))) {
382
+ return false;
383
+ }
384
+ }
385
+ else {
386
+ }
387
+ }
388
+ if (cartType !== cart_1.CartGeneralTypeEnum.VRAC &&
389
+ (prod.declinations.every((decli) => !!(0, products_1.checkIfProductIsOfType)(decli, 'vrac')) ||
390
+ (!!declination && !!(0, products_1.checkIfProductIsOfType)(declination, 'vrac'))) &&
391
+ items.some((i) => !!!(0, exports.checkIfDecliIsOkForMixedSale)(i, 'vrac'))) {
392
+ return false;
393
+ }
394
+ if (cartType === cart_1.CartGeneralTypeEnum.VRAC &&
395
+ (!!!prod.declinations.some((decli) => !!(0, products_1.checkIfProductIsOfType)(decli, 'vrac') || !!(0, exports.checkIfDecliIsOkForMixedSale)(decli, 'vrac')) ||
396
+ (!!declination &&
397
+ !!!(0, products_1.checkIfProductIsOfType)(declination, 'vrac', true) &&
398
+ !!!(0, exports.checkIfDecliIsOkForMixedSale)(declination, 'vrac')))) {
399
+ return false;
400
+ }
401
+ return true;
402
+ };
403
+ exports.checkCartTypeBeforeAddingItem = checkCartTypeBeforeAddingItem;
404
+ const getCartType = (cartData) => {
405
+ switch (true) {
406
+ case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.RETURN_PALLETS, cartData):
407
+ return cart_1.CartGeneralTypeEnum.RETURN_PALLETS;
408
+ case !!cartData.is_booking:
409
+ return !!cartData.is_booking_beton ? cart_1.CartGeneralTypeEnum.BOOKING_BETON : cart_1.CartGeneralTypeEnum.BOOKING;
410
+ case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.SAMPLE, cartData):
411
+ return cart_1.CartGeneralTypeEnum.SAMPLE;
412
+ case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.VRAC, cartData):
413
+ return cart_1.CartGeneralTypeEnum.VRAC;
414
+ case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.GRASS, cartData):
415
+ return cart_1.CartGeneralTypeEnum.GRASS;
416
+ case (0, exports.checkIfCartContainsType)(cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES, cartData):
417
+ return cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES;
418
+ default:
419
+ return cart_1.CartGeneralTypeEnum.BETON;
420
+ }
421
+ };
422
+ exports.getCartType = getCartType;
423
+ const isPro = (invoice) => {
424
+ return !!(0, exports.getProTitleFromCart)(invoice);
425
+ };
426
+ exports.isPro = isPro;
427
+ const getProTitleFromCart = (invoice) => {
428
+ return (0, object_1.recursiveCheckObject)(invoice, 'customer_info.pro_title');
429
+ };
430
+ exports.getProTitleFromCart = getProTitleFromCart;
431
+ const orderCartItems = (cart) => {
432
+ return (0, orderBy_1.default)(!!cart.promise_to_purchase && !!cart.promise_to_purchase.ids
433
+ ? (0, g2_1.groupArrayOfItemsByItemAndCorrespondingEscompteItem)(cart.items)
434
+ : cart.items, (item) => {
435
+ const upsellRelativeItem = !!item.is_upsell_of_sku
436
+ ? cart.items.find((i) => i.sku === item.is_upsell_of_sku)
437
+ : undefined;
438
+ if (!!!item.is_service ||
439
+ ((0, g2_1.isEscompteSuppItem)(item.sku) && !!upsellRelativeItem && !!!upsellRelativeItem.is_service))
440
+ return 0;
441
+ if (item.is_service && item.sku === 'FRSBETON')
442
+ return 1;
443
+ return 2;
444
+ });
445
+ };
446
+ exports.orderCartItems = orderCartItems;
447
+ const getConcreteCartInfo = async (cartData, fetchInventoryItem, pickupStoreId, inventoryItemsArray) => {
448
+ const containsYellowProduct = (0, products_1.getConcreteItemsByAvailability)(cartData, 'delais-a-prevoir');
449
+ const containsGreenProduct = (0, products_1.getConcreteItemsByAvailability)(cartData, 'en-stock', true);
450
+ const containsRedProduct = (0, products_1.getConcreteItemsByAvailability)(cartData, 'aucune-production-prevue');
451
+ let isInStock = true;
452
+ const storeId = !!pickupStoreId ? pickupStoreId : (0, object_1.recursiveCheckObject)(cartData, 'shipping_payload.pickup_store.id');
453
+ if (!!storeId && !!containsGreenProduct.length) {
454
+ const inventoryItems = !!inventoryItemsArray && !!inventoryItemsArray.length
455
+ ? inventoryItemsArray
456
+ : (await Promise.all(containsGreenProduct.map(async (item) => !!item.is_service ? undefined : await fetchInventoryItem(item.sku)))).filter((i) => !!i);
457
+ isInStock =
458
+ !!inventoryItems &&
459
+ !!inventoryItems.length &&
460
+ inventoryItems.every((inventoryItem) => {
461
+ const cartItem = containsGreenProduct.find((i) => i.sku === inventoryItem.sku);
462
+ if (!!!cartItem)
463
+ return false;
464
+ const inventoryStock = inventoryItem.inventories.find((i) => i.store_id === storeId);
465
+ if (!!!inventoryStock || !!!inventoryStock.qty)
466
+ return false;
467
+ const convertedQuantity = (0, inventories_1.getConvertedUnitQuantity)(inventoryItem.other_units || [], inventoryStock.qty.available || 0, 'sale_unit');
468
+ return convertedQuantity >= cartItem.qte;
469
+ });
470
+ }
471
+ return {
472
+ type: !!containsRedProduct.length ? 'red' : !!containsYellowProduct.length ? 'yellow' : 'green',
473
+ inStock: isInStock
474
+ };
475
+ };
476
+ exports.getConcreteCartInfo = getConcreteCartInfo;
477
+ const getGrassProductForCart = (item) => {
478
+ if (!!!item)
479
+ return;
480
+ return {
481
+ slug: item.parent_slug || '',
482
+ sku: item.sku,
483
+ qte: item.qte,
484
+ price: (0, products_3.getLowestPrice)(item).price.amount
485
+ };
486
+ };
487
+ exports.getGrassProductForCart = getGrassProductForCart;
488
+ const getRecursiveItems = (cartItems, cartContainsGrass, keepFees) => {
489
+ const getRecusiveItem = (item) => {
490
+ const subItems = cartItems.filter((i) => i.is_upsell_of_sku === item.sku).map((subI) => getRecusiveItem(subI));
491
+ return Object.assign(Object.assign({}, item), { sub_items: !!subItems && !!subItems.length ? subItems : undefined });
492
+ };
493
+ const newItemList = cartItems
494
+ .map((i) => getRecusiveItem(i))
495
+ .filter((i) => (!!keepFees && !!i.is_upsell_of_sku && i.is_upsell_of_sku === 'summary') ||
496
+ (!!i.sub_items && !!!i.is_upsell_of_sku) ||
497
+ (!!!i.is_upsell_of_sku && !!!i.sub_items));
498
+ return !!!cartContainsGrass ? newItemList : (0, orderBy_1.default)(newItemList, (i) => !!i.sub_items, 'desc');
499
+ };
500
+ exports.getRecursiveItems = getRecursiveItems;
501
+ const getRecursiveItemsFromSubItems = (item) => {
502
+ const getRecusiveItem = (item) => {
503
+ const subItems = item.sub_items;
504
+ if (!!subItems) {
505
+ const items = [item, ...(0, flatten_1.default)(subItems.map((i) => getRecusiveItem(i)))];
506
+ return items;
507
+ }
508
+ return [item];
509
+ };
510
+ return !!item.sub_items ? [item, ...(0, flatten_1.default)(item.sub_items.map((i) => getRecusiveItem(i)))] : [item];
511
+ };
512
+ exports.getRecursiveItemsFromSubItems = getRecursiveItemsFromSubItems;
513
+ const getAppliedPrice = (item, options = {}) => {
514
+ const applied = (0, exports.getLowestAppliedPrice)(item);
515
+ if (!!options.getLowest) {
516
+ return applied.amount;
517
+ }
518
+ if ((!!!item.promo_price && !!!item.discount_price) || !!options.isBookingBeton) {
519
+ return item.regular_price.amount;
520
+ }
521
+ const itemPriceIsEscompte = (!!item.promo_price && (0, exports.checkPriceForEscompte)(item.promo_price)) ||
522
+ (!!item.discount_price && (0, exports.checkPriceForEscompte)(item.discount_price));
523
+ if (!!itemPriceIsEscompte) {
524
+ if (!!item.discount_price)
525
+ return item.discount_price.amount;
526
+ return item.regular_price.amount;
527
+ }
528
+ return applied.amount;
529
+ };
530
+ exports.getAppliedPrice = getAppliedPrice;
531
+ const getLowestAppliedPrice = (item) => {
532
+ const regular = item.regular_price;
533
+ const promo = item.promo_price;
534
+ const discount = item.discount_price;
535
+ const regularPrice = regular.amount || 0;
536
+ const promoPrice = !!promo ? promo.amount : regularPrice;
537
+ const discountPrice = !!discount ? discount.amount : regularPrice;
538
+ if (!!promo && promoPrice <= discountPrice && promoPrice <= regularPrice) {
539
+ return promo;
540
+ }
541
+ if (!!discount && discountPrice <= promoPrice && discountPrice <= regularPrice) {
542
+ return discount;
543
+ }
544
+ return regular;
545
+ };
546
+ exports.getLowestAppliedPrice = getLowestAppliedPrice;
547
+ const checkPriceForEscompte = (price) => {
548
+ const priceType = price.price_type;
549
+ const posUnitPrice = `pos_custom_${Cart_1.CustomPromoType.UNIT_PRICE}`;
550
+ const isEscompteType = !!priceType &&
551
+ !!![
552
+ G2_1.CustomPriceItemTypeEnum.ENTENTE,
553
+ G2_1.CustomPriceItemTypeEnum.REG,
554
+ posUnitPrice,
555
+ products_3.priceTypeEnum.TIER_PRICING
556
+ ].includes(priceType);
557
+ return !!isEscompteType;
558
+ };
559
+ exports.checkPriceForEscompte = checkPriceForEscompte;
560
+ const getPercentFromReducedPrice = (item, isPro) => {
561
+ const typeToCheck = !!item.promo_price && !!item.promo_price.price_type ? 'promo' : 'discount';
562
+ const priceToCheck = typeToCheck === 'promo' ? item.promo_price : item.discount_price;
563
+ if (!!!priceToCheck || (!!!isPro && !!!priceToCheck.overridden))
564
+ return;
565
+ if (!!!(0, exports.checkPriceForEscompte)(priceToCheck))
566
+ return;
567
+ if (typeToCheck === 'promo')
568
+ return (0, round_1.default)((0, cart_2.getActualPromoPrice)(item, '%'), 2);
569
+ return (0, round_1.default)((0, cart_2.getActualDiscountPrice)(item, '%'), 2);
570
+ };
571
+ exports.getPercentFromReducedPrice = getPercentFromReducedPrice;
572
+ const getClientNumberForCart = (cartData, space, options = {}) => {
573
+ if (!!!cartData)
574
+ return '';
575
+ const proTitle = (0, object_1.recursiveCheckObject)(cartData, 'customer_info.pro_title');
576
+ const isWebCart = cartData.cart_type === Cart_1.CartTypeEnum.WEB || !!cartData.is_from_web;
577
+ const paFoundInCart = (0, object_1.recursiveCheckObject)(cartData, 'promise_to_purchase');
578
+ let isPA = !!((0, object_1.recursiveCheckObject)(paFoundInCart, 'ids') || []).length;
579
+ if (!!paFoundInCart && !!options.checkIfEscPaApplied) {
580
+ const bankTypes = !!space ? space.bankTypes.get() : [];
581
+ const grassBank = bankTypes.find((b) => (0, locale_1.getLocaleOfDictionnary)(b.name, 'fr').toLowerCase() == 'gazon');
582
+ const atLeastOneEscPaApplied = cartData.items.some((i) => (0, g2_1.isEscompteSuppItem)(i.sku)) ||
583
+ (!!grassBank &&
584
+ (paFoundInCart.banks_used || []).some((b) => b.bank_type_id == grassBank.id) &&
585
+ cartData.items.some((i) => i.sku == products_2.kentucky));
586
+ isPA = atLeastOneEscPaApplied;
587
+ }
588
+ if (!!proTitle && !!cartData.customer_id) {
589
+ return `${cartData.customer_id}${!!isPA ? 'PA' : ''}`;
590
+ }
591
+ if (!!isWebCart) {
592
+ return `${!!cartData.is_pickup ? 'COM' : 'LIV'}${!!cartData.paid_at ? (0, moment_1.default)((0, data_1.formatDate)(cartData.paid_at)).format('YY') : '00'}WEB`;
593
+ }
594
+ if (!!options.isQuote) {
595
+ return proTitle === 'anonymous-pos-pro' ? 'Paysagiste' : 'Détail';
596
+ }
597
+ return _getPOSCustomerTypeForCart(cartData);
598
+ };
599
+ exports.getClientNumberForCart = getClientNumberForCart;
600
+ const _getPOSCustomerTypeForCart = (cartData) => {
601
+ const isPickup = !!cartData && !!cartData.is_pickup;
602
+ const isPro = !!cartData.customer_info && !!cartData.customer_info.pro_title;
603
+ const currentYear = !!cartData.paid_at ? (0, moment_1.default)((0, data_1.formatDate)(cartData.paid_at)).format('YY') : '00';
604
+ const storeNb = !!cartData.created_by && !!cartData.created_by.at_store_number ? cartData.created_by.at_store_number : 0;
605
+ const aNumber = (0, toNumber_1.default)(storeNb);
606
+ let endOfCode = '';
607
+ if (!!!aNumber) {
608
+ endOfCode = `${!!isPro ? '3' : ''}${storeNb}`;
609
+ }
610
+ else {
611
+ endOfCode = `${!!isPro ? '3' : aNumber < 10 ? '0' : ''}${aNumber}`;
612
+ }
613
+ return `${!!isPickup ? 'COM' : 'LIV'}${currentYear}${endOfCode}`;
614
+ };
615
+ const getLabelForCartType = (value) => {
616
+ switch (value) {
617
+ case cart_1.CartGeneralTypeEnum.RETURN_PALLETS:
618
+ return 'Retour palettes';
619
+ case cart_1.CartGeneralTypeEnum.ONLY_ACCESSORIES:
620
+ return 'Accessoires seulement';
621
+ case cart_1.CartGeneralTypeEnum.BETON:
622
+ return 'Béton';
623
+ case cart_1.CartGeneralTypeEnum.SAMPLE:
624
+ return 'Échantillons';
625
+ case cart_1.CartGeneralTypeEnum.GRASS:
626
+ return 'Gazon';
627
+ case cart_1.CartGeneralTypeEnum.INSTALLATION:
628
+ return 'Installation';
629
+ case cart_1.CartGeneralTypeEnum.VRAC:
630
+ return 'Vrac';
631
+ case Cart_1.CartContentTypeEnum.MIXED:
632
+ return 'Mixte';
633
+ default:
634
+ return value;
635
+ }
636
+ };
637
+ exports.getLabelForCartType = getLabelForCartType;
638
638
  //# sourceMappingURL=cart.js.map