addio-admin-sdk 1.7.90 → 1.7.95

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