addio-admin-sdk 1.7.86 → 1.7.87

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