addio-admin-sdk 1.7.89 → 1.7.90

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