addio-admin-sdk 1.6.21 → 1.6.22

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 (499) hide show
  1. package/.babelrc +17 -17
  2. package/.env.dev +14 -14
  3. package/.github/workflows/publish_coverage.yaml +69 -69
  4. package/addio-sdk-doc.md +1380 -1380
  5. package/changelog.md +362 -362
  6. package/dist/Interfaces/Address/index.d.ts +21 -21
  7. package/dist/Interfaces/Address/index.js +16 -16
  8. package/dist/Interfaces/Algolia/index.d.ts +147 -147
  9. package/dist/Interfaces/Algolia/index.js +2 -2
  10. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  11. package/dist/Interfaces/Attachement/index.js +2 -2
  12. package/dist/Interfaces/Attribute/index.d.ts +47 -47
  13. package/dist/Interfaces/Attribute/index.js +10 -10
  14. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  15. package/dist/Interfaces/BGJob/index.js +36 -36
  16. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  17. package/dist/Interfaces/BaseClass/index.js +2 -2
  18. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  19. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  20. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  21. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  22. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  23. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  24. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  25. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  26. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  27. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  28. package/dist/Interfaces/Booking/index.d.ts +68 -68
  29. package/dist/Interfaces/Booking/index.js +17 -17
  30. package/dist/Interfaces/Brand/index.d.ts +13 -13
  31. package/dist/Interfaces/Brand/index.js +2 -2
  32. package/dist/Interfaces/CMS/index.d.ts +25 -25
  33. package/dist/Interfaces/CMS/index.js +2 -2
  34. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  35. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  36. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  37. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  38. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  39. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  40. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  41. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  42. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  43. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  44. package/dist/Interfaces/Cart/index.d.ts +397 -397
  45. package/dist/Interfaces/Cart/index.js +181 -181
  46. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  47. package/dist/Interfaces/Catalogue/index.js +37 -37
  48. package/dist/Interfaces/Category/index.d.ts +26 -26
  49. package/dist/Interfaces/Category/index.js +2 -2
  50. package/dist/Interfaces/Chart/index.d.ts +11 -11
  51. package/dist/Interfaces/Chart/index.js +2 -2
  52. package/dist/Interfaces/Class/index.d.ts +8 -8
  53. package/dist/Interfaces/Class/index.js +2 -2
  54. package/dist/Interfaces/Consent/index.d.ts +6 -6
  55. package/dist/Interfaces/Consent/index.js +2 -2
  56. package/dist/Interfaces/Context/IContextProps.d.ts +5 -5
  57. package/dist/Interfaces/Context/IContextProps.js +2 -2
  58. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  59. package/dist/Interfaces/Context/IContextState.js +2 -2
  60. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  61. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  62. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  63. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  64. package/dist/Interfaces/Customer/index.d.ts +92 -92
  65. package/dist/Interfaces/Customer/index.js +158 -158
  66. package/dist/Interfaces/Declination/index.d.ts +106 -106
  67. package/dist/Interfaces/Declination/index.js +64 -64
  68. package/dist/Interfaces/Document/index.d.ts +8 -8
  69. package/dist/Interfaces/Document/index.js +2 -2
  70. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  71. package/dist/Interfaces/Elastic/index.js +2 -2
  72. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  73. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  74. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  75. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  76. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  77. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  78. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  79. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  80. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  81. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  82. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  83. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  84. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  85. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  86. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  87. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  88. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  89. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  90. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  91. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  92. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  93. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  94. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  95. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  96. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  97. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  98. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  99. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  100. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  101. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  102. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  103. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  104. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  105. package/dist/Interfaces/Email/IEmail.js +69 -69
  106. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  107. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  108. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  109. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  110. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  111. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  112. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  113. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  114. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  115. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  116. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  117. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  118. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  119. package/dist/Interfaces/ExportSchema/index.js +2 -2
  120. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  121. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  122. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  123. package/dist/Interfaces/ExternalService/index.js +2 -2
  124. package/dist/Interfaces/G2/index.d.ts +286 -286
  125. package/dist/Interfaces/G2/index.js +31 -31
  126. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  127. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  128. package/dist/Interfaces/Indexed/Product/index.d.ts +91 -91
  129. package/dist/Interfaces/Indexed/Product/index.js +315 -315
  130. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  131. package/dist/Interfaces/Inventory/index.js +8 -8
  132. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  133. package/dist/Interfaces/Invoice/index.js +2 -2
  134. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  135. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  136. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  137. package/dist/Interfaces/MarketplacePublication/index.js +33 -33
  138. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  139. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  140. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  141. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  142. package/dist/Interfaces/Order/index.d.ts +4 -4
  143. package/dist/Interfaces/Order/index.js +2 -2
  144. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  145. package/dist/Interfaces/Org/IRelUser.js +2 -2
  146. package/dist/Interfaces/Org/index.d.ts +29 -29
  147. package/dist/Interfaces/Org/index.js +12 -12
  148. package/dist/Interfaces/Payment/index.d.ts +11 -11
  149. package/dist/Interfaces/Payment/index.js +2 -2
  150. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  151. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  152. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  153. package/dist/Interfaces/Product/IImportProduct.js +966 -966
  154. package/dist/Interfaces/Product/IInventoryItem.d.ts +81 -81
  155. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  156. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  157. package/dist/Interfaces/Product/IPricing.js +174 -174
  158. package/dist/Interfaces/Product/index.d.ts +121 -121
  159. package/dist/Interfaces/Product/index.js +56 -56
  160. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  161. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  162. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  163. package/dist/Interfaces/PromiseToPurchase/BankType.js +42 -42
  164. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  165. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  166. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  167. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  168. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  169. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  170. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  171. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  172. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  173. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  174. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  175. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  176. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +15 -15
  177. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  178. package/dist/Interfaces/Quote/index.d.ts +5 -5
  179. package/dist/Interfaces/Quote/index.js +2 -2
  180. package/dist/Interfaces/Rules/IDiscountRule.d.ts +131 -131
  181. package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
  182. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  183. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  184. package/dist/Interfaces/Services/IService.d.ts +12 -12
  185. package/dist/Interfaces/Services/IService.js +2 -2
  186. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  187. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  188. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  189. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  190. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  191. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  192. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  193. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  194. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  195. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  196. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  197. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  198. package/dist/Interfaces/Slider/GR.d.ts +130 -130
  199. package/dist/Interfaces/Slider/GR.js +271 -271
  200. package/dist/Interfaces/Slider/index.d.ts +14 -14
  201. package/dist/Interfaces/Slider/index.js +2 -2
  202. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  203. package/dist/Interfaces/Space/IMember.js +9 -9
  204. package/dist/Interfaces/Space/index.d.ts +311 -311
  205. package/dist/Interfaces/Space/index.js +77 -77
  206. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  207. package/dist/Interfaces/Specials/gr.js +2 -2
  208. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  209. package/dist/Interfaces/StockNotification/index.js +2 -2
  210. package/dist/Interfaces/Store/index.d.ts +60 -60
  211. package/dist/Interfaces/Store/index.js +27 -27
  212. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  213. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  214. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  215. package/dist/Interfaces/Supplier/index.js +24 -24
  216. package/dist/Interfaces/Tag/index.d.ts +18 -18
  217. package/dist/Interfaces/Tag/index.js +2 -2
  218. package/dist/Interfaces/Tax/index.d.ts +12 -12
  219. package/dist/Interfaces/Tax/index.js +2 -2
  220. package/dist/Interfaces/TransferRequest/index.d.ts +32 -32
  221. package/dist/Interfaces/TransferRequest/index.js +26 -26
  222. package/dist/Interfaces/Translation/index.d.ts +4 -4
  223. package/dist/Interfaces/Translation/index.js +2 -2
  224. package/dist/Interfaces/Update/index.d.ts +10 -10
  225. package/dist/Interfaces/Update/index.js +2 -2
  226. package/dist/Interfaces/User/IUser.d.ts +29 -29
  227. package/dist/Interfaces/User/IUser.js +8 -8
  228. package/dist/Interfaces/Version/index.d.ts +11 -11
  229. package/dist/Interfaces/Version/index.js +2 -2
  230. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  231. package/dist/Interfaces/Wishlist/index.js +2 -2
  232. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  233. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  234. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  235. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  236. package/dist/constants/enums.d.ts +6 -6
  237. package/dist/constants/enums.js +10 -10
  238. package/dist/constants/version.d.ts +2 -2
  239. package/dist/constants/version.js +5 -5
  240. package/dist/index.d.ts +32 -32
  241. package/dist/index.js +416 -416
  242. package/dist/lib/Attribute/index.d.ts +14 -14
  243. package/dist/lib/Attribute/index.js +249 -249
  244. package/dist/lib/BGJob/index.d.ts +9 -9
  245. package/dist/lib/BGJob/index.js +376 -376
  246. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  247. package/dist/lib/BackgroundWorker/index.js +72 -72
  248. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  249. package/dist/lib/Blog/BlogArticle.js +28 -28
  250. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  251. package/dist/lib/Blog/BlogAuthor.js +28 -28
  252. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  253. package/dist/lib/Blog/BlogCategory.js +28 -28
  254. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  255. package/dist/lib/Blog/BlogKeyword.js +28 -28
  256. package/dist/lib/Booking/index.d.ts +65 -65
  257. package/dist/lib/Booking/index.js +830 -830
  258. package/dist/lib/Brand/index.d.ts +17 -17
  259. package/dist/lib/Brand/index.js +276 -276
  260. package/dist/lib/Cart/index.d.ts +184 -184
  261. package/dist/lib/Cart/index.js +3660 -3660
  262. package/dist/lib/Catalogue/index.d.ts +9 -9
  263. package/dist/lib/Catalogue/index.js +208 -208
  264. package/dist/lib/Category/index.d.ts +26 -26
  265. package/dist/lib/Category/index.js +361 -361
  266. package/dist/lib/Class/index.d.ts +12 -12
  267. package/dist/lib/Class/index.js +159 -159
  268. package/dist/lib/Consent/index.d.ts +4 -4
  269. package/dist/lib/Consent/index.js +79 -79
  270. package/dist/lib/Customer/index.d.ts +10 -10
  271. package/dist/lib/Customer/index.js +140 -140
  272. package/dist/lib/Declination/index.d.ts +10 -10
  273. package/dist/lib/Declination/index.js +85 -85
  274. package/dist/lib/Discount/index.d.ts +18 -18
  275. package/dist/lib/Discount/index.js +759 -759
  276. package/dist/lib/ElasticSearch/index.d.ts +8 -8
  277. package/dist/lib/ElasticSearch/index.js +101 -101
  278. package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
  279. package/dist/lib/Email/AbandonedCartEmail.js +78 -78
  280. package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
  281. package/dist/lib/Email/AccountConfirmationEmail.js +95 -95
  282. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
  283. package/dist/lib/Email/AdminOrderConfirmationEmail.js +78 -78
  284. package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
  285. package/dist/lib/Email/ApplicationEmail.js +78 -78
  286. package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
  287. package/dist/lib/Email/BackInStockEmail.js +78 -78
  288. package/dist/lib/Email/ContactEmail.d.ts +8 -8
  289. package/dist/lib/Email/ContactEmail.js +78 -78
  290. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
  291. package/dist/lib/Email/CustomerBookingAdminEmail.js +78 -78
  292. package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
  293. package/dist/lib/Email/CustomerBookingEmail.js +78 -78
  294. package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
  295. package/dist/lib/Email/OrderConfirmationEmail.js +78 -78
  296. package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
  297. package/dist/lib/Email/OrderDenounciationEmail.js +78 -78
  298. package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
  299. package/dist/lib/Email/OrderSampleEmail.js +78 -78
  300. package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
  301. package/dist/lib/Email/OtherTypeEmails.js +90 -90
  302. package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
  303. package/dist/lib/Email/PasswordResetEmail.js +78 -78
  304. package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
  305. package/dist/lib/Email/PhotoShootEmail.js +78 -78
  306. package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
  307. package/dist/lib/Email/PickUpConfirmation.js +78 -78
  308. package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
  309. package/dist/lib/Email/ShippingConfirmation.js +78 -78
  310. package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
  311. package/dist/lib/Email/WelcomeEmail.js +78 -78
  312. package/dist/lib/Email/index.d.ts +8 -8
  313. package/dist/lib/Email/index.js +82 -82
  314. package/dist/lib/ExternalService/Ebay.d.ts +63 -63
  315. package/dist/lib/ExternalService/Ebay.js +185 -185
  316. package/dist/lib/ExternalService/index.d.ts +5 -5
  317. package/dist/lib/ExternalService/index.js +28 -28
  318. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  319. package/dist/lib/Indexed/IndexedCart.js +194 -194
  320. package/dist/lib/Indexed/Product.d.ts +17 -17
  321. package/dist/lib/Indexed/Product.js +116 -116
  322. package/dist/lib/Inventory/index.d.ts +31 -31
  323. package/dist/lib/Inventory/index.js +560 -560
  324. package/dist/lib/Invoice/index.d.ts +5 -5
  325. package/dist/lib/Invoice/index.js +28 -28
  326. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  327. package/dist/lib/MarketplacePublication/index.js +221 -221
  328. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  329. package/dist/lib/MongoDB/BaseAPI.js +308 -308
  330. package/dist/lib/Order/index.d.ts +7 -7
  331. package/dist/lib/Order/index.js +62 -62
  332. package/dist/lib/Org/index.d.ts +26 -26
  333. package/dist/lib/Org/index.js +286 -286
  334. package/dist/lib/PandaPay/index.d.ts +16 -16
  335. package/dist/lib/PandaPay/index.js +219 -219
  336. package/dist/lib/Paysafe/index.d.ts +11 -11
  337. package/dist/lib/Paysafe/index.js +100 -100
  338. package/dist/lib/Product/index.d.ts +143 -143
  339. package/dist/lib/Product/index.js +1326 -1326
  340. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  341. package/dist/lib/ProductAttribute/index.js +114 -114
  342. package/dist/lib/PromiseToPurchase/index.d.ts +35 -35
  343. package/dist/lib/PromiseToPurchase/index.js +474 -474
  344. package/dist/lib/PurchaseOrder/index.d.ts +9 -9
  345. package/dist/lib/PurchaseOrder/index.js +72 -72
  346. package/dist/lib/Queue/index.d.ts +40 -40
  347. package/dist/lib/Queue/index.js +254 -254
  348. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  349. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  350. package/dist/lib/Service/index.d.ts +5 -5
  351. package/dist/lib/Service/index.js +57 -57
  352. package/dist/lib/Shipment/index.d.ts +28 -28
  353. package/dist/lib/Shipment/index.js +559 -559
  354. package/dist/lib/Slider/index.d.ts +16 -16
  355. package/dist/lib/Slider/index.js +235 -235
  356. package/dist/lib/Space/index.d.ts +769 -769
  357. package/dist/lib/Space/index.js +6688 -6688
  358. package/dist/lib/StockNotification/index.d.ts +4 -4
  359. package/dist/lib/StockNotification/index.js +26 -26
  360. package/dist/lib/Store/index.d.ts +5 -5
  361. package/dist/lib/Store/index.js +30 -30
  362. package/dist/lib/Supplier/Command.d.ts +5 -5
  363. package/dist/lib/Supplier/Command.js +28 -28
  364. package/dist/lib/Supplier/index.d.ts +25 -25
  365. package/dist/lib/Supplier/index.js +92 -92
  366. package/dist/lib/Tags/index.d.ts +6 -6
  367. package/dist/lib/Tags/index.js +84 -84
  368. package/dist/lib/Tax/index.d.ts +8 -8
  369. package/dist/lib/Tax/index.js +136 -136
  370. package/dist/lib/TransferRequest/index.d.ts +21 -21
  371. package/dist/lib/TransferRequest/index.js +302 -302
  372. package/dist/lib/Update/index.d.ts +10 -10
  373. package/dist/lib/Update/index.js +71 -71
  374. package/dist/lib/User/index.d.ts +33 -33
  375. package/dist/lib/User/index.js +360 -360
  376. package/dist/lib/Wishlist/index.d.ts +5 -5
  377. package/dist/lib/Wishlist/index.js +28 -28
  378. package/dist/lib/base.d.ts +14 -14
  379. package/dist/lib/base.js +135 -135
  380. package/dist/lib/baseService.d.ts +17 -17
  381. package/dist/lib/baseService.js +113 -113
  382. package/dist/rules/GR/constants/data.d.ts +28 -28
  383. package/dist/rules/GR/constants/data.js +57 -57
  384. package/dist/rules/GR/constants/products.d.ts +8 -8
  385. package/dist/rules/GR/constants/products.js +234 -234
  386. package/dist/rules/GR/interfaces/cart.d.ts +68 -68
  387. package/dist/rules/GR/interfaces/cart.js +49 -49
  388. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  389. package/dist/rules/GR/interfaces/data.js +104 -104
  390. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  391. package/dist/rules/GR/interfaces/products.js +10 -10
  392. package/dist/rules/GR/utils/cart.d.ts +39 -39
  393. package/dist/rules/GR/utils/cart.js +661 -661
  394. package/dist/rules/GR/utils/data.d.ts +3 -3
  395. package/dist/rules/GR/utils/data.js +25 -25
  396. package/dist/rules/GR/utils/expedition.d.ts +70 -70
  397. package/dist/rules/GR/utils/expedition.js +1584 -1584
  398. package/dist/rules/GR/utils/g2.d.ts +153 -153
  399. package/dist/rules/GR/utils/g2.js +914 -914
  400. package/dist/rules/GR/utils/invoices.d.ts +5 -5
  401. package/dist/rules/GR/utils/invoices.js +140 -140
  402. package/dist/rules/GR/utils/products.d.ts +105 -105
  403. package/dist/rules/GR/utils/products.js +1013 -1013
  404. package/dist/rules/GR/utils/upsells.d.ts +75 -75
  405. package/dist/rules/GR/utils/upsells.js +278 -278
  406. package/dist/services/database/BaseProvider.d.ts +28 -28
  407. package/dist/services/database/BaseProvider.js +77 -77
  408. package/dist/services/database/BatchUtils.d.ts +14 -14
  409. package/dist/services/database/BatchUtils.js +88 -88
  410. package/dist/services/database/Config.d.ts +2 -2
  411. package/dist/services/database/Config.js +5 -5
  412. package/dist/services/database/DatabaseService.d.ts +41 -41
  413. package/dist/services/database/DatabaseService.js +311 -311
  414. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  415. package/dist/services/database/FirebaseProvider.js +300 -300
  416. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  417. package/dist/services/database/NotFirebaseProvider.js +367 -367
  418. package/dist/utils/algolia.d.ts +6 -6
  419. package/dist/utils/algolia.js +22 -22
  420. package/dist/utils/anonymisation.d.ts +30 -30
  421. package/dist/utils/anonymisation.js +269 -269
  422. package/dist/utils/array.d.ts +5 -5
  423. package/dist/utils/array.js +36 -36
  424. package/dist/utils/aws.d.ts +14 -14
  425. package/dist/utils/aws.js +220 -220
  426. package/dist/utils/booking.d.ts +22 -22
  427. package/dist/utils/booking.js +175 -175
  428. package/dist/utils/cart.d.ts +519 -519
  429. package/dist/utils/cart.js +508 -508
  430. package/dist/utils/cmv.d.ts +10 -10
  431. package/dist/utils/cmv.js +107 -107
  432. package/dist/utils/console.d.ts +6 -6
  433. package/dist/utils/console.js +121 -121
  434. package/dist/utils/context.d.ts +19 -19
  435. package/dist/utils/context.js +41 -41
  436. package/dist/utils/currency.d.ts +6 -6
  437. package/dist/utils/currency.js +62 -62
  438. package/dist/utils/data.d.ts +40 -40
  439. package/dist/utils/data.js +233 -233
  440. package/dist/utils/date.d.ts +1 -1
  441. package/dist/utils/date.js +16 -16
  442. package/dist/utils/dimensions.d.ts +3 -3
  443. package/dist/utils/dimensions.js +18 -18
  444. package/dist/utils/discount.d.ts +33 -33
  445. package/dist/utils/discount.js +919 -906
  446. package/dist/utils/discount.js.map +1 -1
  447. package/dist/utils/errors.d.ts +113 -113
  448. package/dist/utils/errors.js +113 -113
  449. package/dist/utils/file-admin.d.ts +8 -8
  450. package/dist/utils/file-admin.js +94 -94
  451. package/dist/utils/file.d.ts +38 -38
  452. package/dist/utils/file.js +318 -318
  453. package/dist/utils/firebase-admin.d.ts +2 -2
  454. package/dist/utils/firebase-admin.js +118 -118
  455. package/dist/utils/firebase.d.ts +41 -41
  456. package/dist/utils/firebase.js +220 -220
  457. package/dist/utils/import.d.ts +1 -1
  458. package/dist/utils/import.js +81 -81
  459. package/dist/utils/inventories.d.ts +26 -26
  460. package/dist/utils/inventories.js +355 -355
  461. package/dist/utils/locale.d.ts +13 -13
  462. package/dist/utils/locale.js +67 -67
  463. package/dist/utils/mailchimp.d.ts +57 -57
  464. package/dist/utils/mailchimp.js +735 -735
  465. package/dist/utils/mongodb.d.ts +1 -1
  466. package/dist/utils/mongodb.js +68 -68
  467. package/dist/utils/object.d.ts +9 -9
  468. package/dist/utils/object.js +124 -124
  469. package/dist/utils/payment.d.ts +10 -10
  470. package/dist/utils/payment.js +25 -25
  471. package/dist/utils/products.d.ts +26 -26
  472. package/dist/utils/products.js +301 -301
  473. package/dist/utils/promiseToPurchase.d.ts +56 -56
  474. package/dist/utils/promiseToPurchase.js +228 -228
  475. package/dist/utils/prosprsearch.d.ts +21 -21
  476. package/dist/utils/prosprsearch.js +276 -276
  477. package/dist/utils/sdc.d.ts +10 -10
  478. package/dist/utils/sdc.js +1308 -1308
  479. package/dist/utils/searchIndexes.d.ts +20 -20
  480. package/dist/utils/searchIndexes.js +273 -273
  481. package/dist/utils/services.d.ts +38 -38
  482. package/dist/utils/services.js +394 -394
  483. package/dist/utils/shipment.d.ts +110 -110
  484. package/dist/utils/shipment.js +410 -410
  485. package/dist/utils/simpletexting.d.ts +2 -2
  486. package/dist/utils/simpletexting.js +88 -88
  487. package/dist/utils/sliders.d.ts +4 -4
  488. package/dist/utils/sliders.js +70 -70
  489. package/dist/utils/string.d.ts +16 -16
  490. package/dist/utils/string.js +194 -194
  491. package/dist/utils/update.d.ts +7 -7
  492. package/dist/utils/update.js +244 -244
  493. package/dist/utils/weight.d.ts +3 -3
  494. package/dist/utils/weight.js +18 -18
  495. package/dist/utils/zones.d.ts +10 -10
  496. package/dist/utils/zones.js +287 -287
  497. package/package.json +106 -106
  498. package/publish.sh +143 -143
  499. package/readme.md +182 -182
@@ -1,1014 +1,1014 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __rest = (this && this.__rest) || function (s, e) {
50
- var t = {};
51
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
- t[p] = s[p];
53
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
- t[p[i]] = s[p[i]];
57
- }
58
- return t;
59
- };
60
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
61
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
62
- if (ar || !(i in from)) {
63
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
64
- ar[i] = from[i];
65
- }
66
- }
67
- return to.concat(ar || Array.prototype.slice.call(from));
68
- };
69
- var __importDefault = (this && this.__importDefault) || function (mod) {
70
- return (mod && mod.__esModule) ? mod : { "default": mod };
71
- };
72
- Object.defineProperty(exports, "__esModule", { value: true });
73
- exports.shouldHideItemIfRegPriceIs0 = exports.getFormattedProdGR = exports.applyProCustomPromo = exports.shouldShowProCustomPromo = exports.fetchFeesBeforeCart = exports.getVracType = exports.getConcreteItemsByAvailability = exports.getConcreteQteText = exports.getInstallItemPrice = exports.getInstallationArray = exports.roundGrassQte = exports.handleGrassProductQtyRoundForShipping = exports.getGrassSubQuestionsByType = exports.getGrassServicesFees = exports.getGrassQteText = exports.getMinQtyFeeAmountText = exports.getMinQtyFeeText = exports.getAllMinGrassQuantities = exports.isMinQtyFee = exports.fuseGrassProducts = exports.getAllInstallFromItems = exports.checkIfProductIsInstallation = exports.checkIfProductIsOfType = exports.getProductFormOptions = exports.getParentProductCategoryGroup = exports.getProdName = exports.splitOnDashes = exports.getRoundedProductQuantities = exports.getDescriptionString = exports.getDescriptionLength = exports.getProductAttributes = exports.productUnitSupportsDecimals = exports.getCorrectPluralSellUnit = exports.getPluralUnitLabelWithSlug = exports.getProductSellUnitLabel = void 0;
74
- var ceil_1 = __importDefault(require("lodash/ceil"));
75
- var maxBy_1 = __importDefault(require("lodash/maxBy"));
76
- var orderBy_1 = __importDefault(require("lodash/orderBy"));
77
- var toNumber_1 = __importDefault(require("lodash/toNumber"));
78
- var round_1 = __importDefault(require("lodash/round"));
79
- var flatten_1 = __importDefault(require("lodash/flatten"));
80
- var uniqBy_1 = __importDefault(require("lodash/uniqBy"));
81
- var sumBy_1 = __importDefault(require("lodash/sumBy"));
82
- var Cart_1 = require("../../../Interfaces/Cart");
83
- var G2_1 = require("../../../Interfaces/G2");
84
- var IDiscountRule_1 = require("../../../Interfaces/Rules/IDiscountRule");
85
- var string_1 = require("../../../utils/string");
86
- var locale_1 = require("../../../utils/locale");
87
- var inventories_1 = require("../../../utils/inventories");
88
- var products_1 = require("../../../utils/products");
89
- var expedition_1 = require("./expedition");
90
- var data_1 = require("../constants/data");
91
- var products_2 = require("../constants/products");
92
- var g2_1 = require("./g2");
93
- var cart_1 = require("./cart");
94
- var products_3 = require("../interfaces/products");
95
- var data_2 = require("../interfaces/data");
96
- var cart_2 = require("../interfaces/cart");
97
- var upsells_1 = require("./upsells");
98
- var object_1 = require("../../../utils/object");
99
- var pluralSellUnits = {
100
- p2: { fr: 'pi²', en: 'sqft' },
101
- sac: { fr: 'sacs', en: 'bags' },
102
- unite: { fr: 'unités', en: 'units' },
103
- tonne: { fr: 'tonnes', en: 'tons' },
104
- rouleau: { fr: 'rouleaux', en: 'rolls' }
105
- };
106
- var pluralSellUnitsBySlug = {
107
- p2: { fr: 'pi²', en: 'sqft' },
108
- sac: { fr: 'sacs', en: 'bags' },
109
- unite: { fr: 'unités', en: 'units' },
110
- tonne: { fr: 'tonnes', en: 'tons' },
111
- roul: { fr: 'rouleaux', en: 'rolls' }
112
- };
113
- var getProductSellUnitLabel = function (otherUnits, locale, returnUnitForSlugs) {
114
- if (locale === void 0) { locale = 'fr'; }
115
- if (!!!otherUnits)
116
- return '';
117
- var sellingUnit = otherUnits.find(function (unit) { return !!unit.is_sale_unit; });
118
- if (!!!sellingUnit)
119
- return '';
120
- return sellingUnit.unit_slug === 'p2'
121
- ? (0, locale_1.translateILang)(pluralSellUnitsBySlug.p2, locale)
122
- : !!(0, inventories_1.getUnitShortDict)(sellingUnit.unit_slug, returnUnitForSlugs)
123
- ? (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)(sellingUnit.unit_slug, returnUnitForSlugs), locale)
124
- : sellingUnit.unit_slug;
125
- };
126
- exports.getProductSellUnitLabel = getProductSellUnitLabel;
127
- var getPluralUnitLabelWithSlug = function (unitSlug, locale, returnUnitForSlugs) {
128
- if (locale === void 0) { locale = 'fr'; }
129
- if (!!returnUnitForSlugs && !!returnUnitForSlugs.includes(unitSlug)) {
130
- return (0, locale_1.translateILang)(pluralSellUnitsBySlug['unite'], locale);
131
- }
132
- return !!pluralSellUnitsBySlug[unitSlug]
133
- ? (0, locale_1.translateILang)(pluralSellUnitsBySlug[unitSlug], locale)
134
- : !!(0, inventories_1.getUnitShortDict)(unitSlug)
135
- ? (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)(unitSlug), locale)
136
- : unitSlug;
137
- };
138
- exports.getPluralUnitLabelWithSlug = getPluralUnitLabelWithSlug;
139
- var getCorrectPluralSellUnit = function (sellUnit, locale) {
140
- if (locale === void 0) { locale = 'fr'; }
141
- if (!!!sellUnit.unit)
142
- return '';
143
- var frSellUnit = (0, string_1.string_to_slug)((0, locale_1.translateILang)(sellUnit.unit, 'fr'));
144
- return !!pluralSellUnits[frSellUnit]
145
- ? (0, locale_1.translateILang)(pluralSellUnits[frSellUnit], locale)
146
- : (0, locale_1.translateILang)(sellUnit.unit, locale);
147
- };
148
- exports.getCorrectPluralSellUnit = getCorrectPluralSellUnit;
149
- var productUnitSupportsDecimals = function (unitSlug, isService) {
150
- return !!isService || !!['p2', 'pl', 'vg3', 'tonne'].includes(unitSlug);
151
- };
152
- exports.productUnitSupportsDecimals = productUnitSupportsDecimals;
153
- var getProductAttributes = function (product) {
154
- var arrColor = !!product.attributes[data_2.AttributesIdEnumGR.SUBCOLOR]
155
- ? product.attributes[data_2.AttributesIdEnumGR.SUBCOLOR]
156
- : [];
157
- var arrDimensions = !!product.attributes[data_2.AttributesIdEnumGR.DIMENSIONS]
158
- ? product.attributes[data_2.AttributesIdEnumGR.DIMENSIONS]
159
- : [];
160
- var arrFormats = !!product.attributes[data_2.AttributesIdEnumGR.FORMATS]
161
- ? product.attributes[data_2.AttributesIdEnumGR.FORMATS]
162
- : [];
163
- return { colors: arrColor, dimensions: arrDimensions, formats: arrFormats };
164
- };
165
- exports.getProductAttributes = getProductAttributes;
166
- var getDescriptionLength = function (description, locale) {
167
- if (locale === void 0) { locale = 'fr'; }
168
- if (!!!description || !!!(0, locale_1.getLocaleOfDictionnary)(description, locale))
169
- return 0;
170
- return (0, string_1.stripHTML)((0, locale_1.getLocaleOfDictionnary)(description, locale)).length;
171
- };
172
- exports.getDescriptionLength = getDescriptionLength;
173
- var getDescriptionString = function (showFullDesc, maxLength, description, locale) {
174
- if (locale === void 0) { locale = 'fr'; }
175
- if (!!showFullDesc || (0, exports.getDescriptionLength)(description, locale) <= maxLength) {
176
- return (0, string_1.stripHTML)((0, locale_1.getLocaleOfDictionnary)(description, locale));
177
- }
178
- var truncated = (0, string_1.stripHTML)((0, locale_1.getLocaleOfDictionnary)(description, locale)).slice(0, maxLength).split(' ');
179
- truncated.pop();
180
- return truncated.join(' ') + ' [...]';
181
- };
182
- exports.getDescriptionString = getDescriptionString;
183
- var getRoundedProductQuantities = function (value, otherUnits, value2, targetIsSecondaryInput) {
184
- if (otherUnits === void 0) { otherUnits = []; }
185
- if (targetIsSecondaryInput === void 0) { targetIsSecondaryInput = false; }
186
- var saleUnit = otherUnits.find(function (unit) { return unit.is_sale_unit; });
187
- var commandUnit = otherUnits.find(function (unit) { return unit.is_command_unit; });
188
- var commandStep = otherUnits.find(function (unit) { return unit.is_command_step; });
189
- var roundedQuantities = {
190
- qte1: value,
191
- qte2: value2
192
- };
193
- if (!!targetIsSecondaryInput && typeof value2 === 'number') {
194
- if (!!commandStep && !!commandStep.fitting_unit && !!commandUnit && !!commandUnit.fitting_unit) {
195
- var nbSaleUnitPerCmdStep = (0, round_1.default)(commandStep.fitting_unit / commandUnit.fitting_unit, 2);
196
- var roundedValue = value2 === 0 ? 0 : _roundNbSaleUnitPerCmdStep(value2, nbSaleUnitPerCmdStep);
197
- roundedQuantities = {
198
- qte1: value2 === 0
199
- ? 0
200
- : (0, round_1.default)(roundedValue * commandUnit.fitting_unit, !!saleUnit && (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0),
201
- qte2: roundedValue
202
- };
203
- }
204
- }
205
- else if (!!commandStep && !!commandStep.fitting_unit && !!saleUnit && !!saleUnit.fitting_unit) {
206
- var nbSaleUnitPerCmdStep = (0, round_1.default)(commandStep.fitting_unit / saleUnit.fitting_unit, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0);
207
- var roundedValue = value === 0
208
- ? 0
209
- : _roundNbSaleUnitPerCmdStep(value, nbSaleUnitPerCmdStep, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug));
210
- roundedQuantities = {
211
- qte1: roundedValue,
212
- qte2: !!commandUnit && !!commandUnit.fitting_unit
213
- ? value === 0
214
- ? 0
215
- : roundedValue * (0, round_1.default)(commandStep.fitting_unit / commandUnit.fitting_unit, 2)
216
- : undefined
217
- };
218
- }
219
- return roundedQuantities;
220
- };
221
- exports.getRoundedProductQuantities = getRoundedProductQuantities;
222
- var _roundNbSaleUnitPerCmdStep = function (value, nbSaleUnitPerCmdStep, supportsDecimals) {
223
- var rounded = (0, round_1.default)(value / nbSaleUnitPerCmdStep, !!supportsDecimals ? 2 : 0) * nbSaleUnitPerCmdStep;
224
- var roundedUp = Math.ceil(value / nbSaleUnitPerCmdStep) * nbSaleUnitPerCmdStep;
225
- if ((0, round_1.default)(rounded, !!supportsDecimals ? 2 : 0) % nbSaleUnitPerCmdStep == 0)
226
- return rounded;
227
- return roundedUp;
228
- };
229
- var splitOnDashes = function (stringToSplit, dummyStringToReplace) {
230
- if (dummyStringToReplace === void 0) { dummyStringToReplace = { currentValue: '%%-%%', newValue: ' - ' }; }
231
- var splited = stringToSplit.split(' - ');
232
- if (splited.length === 1)
233
- splited = stringToSplit.split(' -');
234
- if (splited.length === 1)
235
- splited = stringToSplit.split('- ');
236
- return __spreadArray([
237
- splited[0].replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)
238
- ], (!!splited[1]
239
- ? [splited.slice(1).join(' - ').replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)]
240
- : []), true);
241
- };
242
- exports.splitOnDashes = splitOnDashes;
243
- var getProdName = function (product, locale) {
244
- var name;
245
- if (!!product.full_name) {
246
- name = (0, locale_1.getLocaleOfDictionnary)(product.full_name, locale);
247
- }
248
- else {
249
- name = (0, locale_1.getLocaleOfDictionnary)(product.name, locale);
250
- if (!!product.use_parent && !!product.parent_name) {
251
- if (typeof product.parent_name === 'string') {
252
- name = product.parent_name;
253
- }
254
- }
255
- }
256
- var newNameArray = [];
257
- var dashesToFind = [' - ', '- ', ' -'];
258
- if (name.includes('(')) {
259
- var newStr = '';
260
- var strWithParenthesisToCheck = name;
261
- while (strWithParenthesisToCheck.includes('(')) {
262
- var positionStart = strWithParenthesisToCheck.indexOf('(');
263
- var positionEnd = strWithParenthesisToCheck.indexOf(')');
264
- var substrToCheck = strWithParenthesisToCheck.substring(positionStart, positionEnd + 1);
265
- for (var _i = 0, dashesToFind_1 = dashesToFind; _i < dashesToFind_1.length; _i++) {
266
- var dash = dashesToFind_1[_i];
267
- substrToCheck = substrToCheck.replace(dash, '-');
268
- }
269
- newStr += strWithParenthesisToCheck.substring(0, positionStart) + substrToCheck;
270
- strWithParenthesisToCheck =
271
- positionEnd === strWithParenthesisToCheck.length - 1 ? '' : strWithParenthesisToCheck.substring(positionEnd + 1);
272
- }
273
- newStr += strWithParenthesisToCheck;
274
- var positionOfFirst = newStr.indexOf(')');
275
- var firstPart_1 = newStr.substring(0, positionOfFirst);
276
- if (positionOfFirst !== newStr.length - 1 && dashesToFind.some(function (str) { return firstPart_1.includes(str); })) {
277
- var secondPart = newStr.substring(positionOfFirst);
278
- for (var _a = 0, dashesToFind_2 = dashesToFind; _a < dashesToFind_2.length; _a++) {
279
- var str = dashesToFind_2[_a];
280
- firstPart_1.replace(str, '%%-%%');
281
- }
282
- newNameArray = (0, exports.splitOnDashes)("".concat(firstPart_1).concat(secondPart));
283
- }
284
- else {
285
- newNameArray = (0, exports.splitOnDashes)(newStr);
286
- }
287
- }
288
- else {
289
- newNameArray = (0, exports.splitOnDashes)(name);
290
- }
291
- return newNameArray;
292
- };
293
- exports.getProdName = getProdName;
294
- var getParentProductCategoryGroup = function (prod) {
295
- var type = 'other';
296
- if (!!prod.categories && !!prod.categories['lvl0']) {
297
- var categorySlug = prod.categories['lvl0'];
298
- switch (categorySlug) {
299
- case 'gazon':
300
- if (!!(0, exports.checkIfProductIsOfType)(prod, 'gazon')) {
301
- type = 'gazon';
302
- }
303
- break;
304
- case 'amenagement-paysager':
305
- if (!!(0, exports.checkIfProductIsOfType)(prod, 'beton')) {
306
- type = 'beton';
307
- }
308
- break;
309
- default:
310
- if (!!(0, exports.checkIfProductIsOfType)(prod, 'vrac')) {
311
- type = 'vrac';
312
- }
313
- break;
314
- }
315
- }
316
- return type;
317
- };
318
- exports.getParentProductCategoryGroup = getParentProductCategoryGroup;
319
- var getProductFormOptions = function (product, attributes) {
320
- var allColorOptions = [];
321
- var allDimensionOptions = [];
322
- var allFormatOptions = [];
323
- var product_attributes = (0, exports.getProductAttributes)(product);
324
- var overridenAttributes = product.declinations
325
- .map(function (declination) { return declination.overriden_attributes; })
326
- .filter(function (ova) { return !!ova; });
327
- overridenAttributes = (0, flatten_1.default)(overridenAttributes);
328
- overridenAttributes = (0, uniqBy_1.default)(overridenAttributes, 'slug');
329
- var getOverriddenValues = function (prodAttributes, attrId) {
330
- var overridenOptions = !!overridenAttributes.length
331
- ? overridenAttributes.filter(function (attr) { return attr.id === attrId; })
332
- : [];
333
- var finalOptions = [];
334
- for (var _i = 0, prodAttributes_1 = prodAttributes; _i < prodAttributes_1.length; _i++) {
335
- var attr = prodAttributes_1[_i];
336
- var isOverridden = false;
337
- for (var _a = 0, overridenOptions_1 = overridenOptions; _a < overridenOptions_1.length; _a++) {
338
- var ovOption = overridenOptions_1[_a];
339
- if (!isOverridden) {
340
- if (!!attr && attr.slug === ovOption.slug) {
341
- isOverridden = true;
342
- finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [
343
- __assign(__assign({}, attr), { other_details: __assign(__assign({}, attr.other_details), { image: ovOption.overriden_values }) })
344
- ], false);
345
- }
346
- }
347
- }
348
- if (!isOverridden) {
349
- finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [attr], false);
350
- }
351
- }
352
- return finalOptions;
353
- };
354
- var subColorsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.SUBCOLOR; });
355
- if (!!subColorsAttr) {
356
- var subColors = subColorsAttr.values;
357
- var colorsAttributes = subColors.filter(function (sub) { return product_attributes.colors.includes(sub.slug); });
358
- var finalColors = getOverriddenValues(colorsAttributes, data_2.AttributesIdEnumGR.SUBCOLOR);
359
- allColorOptions = (0, orderBy_1.default)(finalColors, function (color) {
360
- return product.declinations.findIndex(function (d) { return d.attributes[data_2.AttributesIdEnumGR.SUBCOLOR].includes(color.slug); });
361
- });
362
- }
363
- var dimensionsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.DIMENSIONS; });
364
- if (!!dimensionsAttr) {
365
- var dimensions = dimensionsAttr.values;
366
- var dimensionsAttributes = dimensions.filter(function (d) { return product_attributes.dimensions.includes(d.slug); });
367
- var finalDimensions = getOverriddenValues(dimensionsAttributes, data_2.AttributesIdEnumGR.DIMENSIONS);
368
- allDimensionOptions = finalDimensions;
369
- }
370
- var formatsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.FORMATS; });
371
- if (!!formatsAttr) {
372
- var formats = formatsAttr.values;
373
- allFormatOptions = formats.filter(function (f) { return product_attributes.formats.includes(f.slug); });
374
- }
375
- return {
376
- allColors: allColorOptions,
377
- allDimensions: allDimensionOptions,
378
- allFormats: allFormatOptions
379
- };
380
- };
381
- exports.getProductFormOptions = getProductFormOptions;
382
- var checkIfProductIsOfType = function (product, type, excludeUndefined) {
383
- var attr = !!product && !!product.attributes ? product.attributes : {};
384
- if (!!!attr[data_2.AttributesIdEnumGR.TYPE] && !!excludeUndefined)
385
- return true;
386
- return (!!attr[data_2.AttributesIdEnumGR.TYPE] &&
387
- Array.isArray(attr[data_2.AttributesIdEnumGR.TYPE]) &&
388
- attr[data_2.AttributesIdEnumGR.TYPE].includes(type));
389
- };
390
- exports.checkIfProductIsOfType = checkIfProductIsOfType;
391
- var checkIfProductIsInstallation = function (item) {
392
- return !!item.is_service && !!item.parent_slug && !!item.parent_slug.includes('installation');
393
- };
394
- exports.checkIfProductIsInstallation = checkIfProductIsInstallation;
395
- var getAllInstallFromItems = function (items) {
396
- return items.filter(function (i) {
397
- return (!!i.parent_slug && products_2.installationProductsSlugs.includes(i.parent_slug)) ||
398
- Object.values(products_2.installationProSpecSkus).includes(i.sku);
399
- });
400
- };
401
- exports.getAllInstallFromItems = getAllInstallFromItems;
402
- var fuseGrassProducts = function (recursiveItems, isPro) {
403
- var specialityGrass = recursiveItems[0];
404
- var kentuckyGrass = (specialityGrass.sub_items || []).find(function (sub) { return sub.sku === products_2.kentucky; });
405
- var newItems = [];
406
- if (!!kentuckyGrass) {
407
- var kentuckyPrice = (0, products_1.getLowestPrice)(kentuckyGrass);
408
- var regPriceKentucky = kentuckyGrass.regular_price.amount;
409
- var newGrassRegPrice = !!kentuckyPrice.promo ? regPriceKentucky : kentuckyPrice.price.amount;
410
- var newGrassDiscountPrice = (!!specialityGrass.discount_price
411
- ? specialityGrass.discount_price.amount
412
- : specialityGrass.regular_price.amount) +
413
- (!!kentuckyPrice.promo ? kentuckyPrice.price.amount : regPriceKentucky);
414
- var getLowestPriceSpecialityGrass_1 = (0, products_1.getLowestPrice)(specialityGrass);
415
- newItems = __spreadArray([
416
- __assign(__assign(__assign(__assign(__assign(__assign({}, specialityGrass), { regular_price: __assign(__assign({}, specialityGrass.regular_price), { amount: newGrassRegPrice + specialityGrass.regular_price.amount }) }), (!!newGrassDiscountPrice
417
- ? {
418
- discount_price: __assign(__assign({}, (specialityGrass.discount_price || { currency: 'CAD' })), { amount: newGrassDiscountPrice })
419
- }
420
- : {})), (!!specialityGrass.promo_price
421
- ? {
422
- promo_price: __assign(__assign({}, specialityGrass.promo_price), { amount: specialityGrass.promo_price.amount + kentuckyPrice.price.amount })
423
- }
424
- : {})), (!!!isPro && !!kentuckyGrass.tier_pricing
425
- ? {
426
- tier_pricing: kentuckyGrass.tier_pricing.map(function (t) { return (__assign(__assign({}, t), { price: __assign(__assign({}, t.price), { amount: t.price.amount + getLowestPriceSpecialityGrass_1.price.amount }) })); })
427
- }
428
- : {})), { sub_items: __spreadArray([
429
- __assign(__assign({}, kentuckyGrass), { hide_from_summary: true })
430
- ], (specialityGrass.sub_items || []).slice(1), true) })
431
- ], recursiveItems.slice(1), true);
432
- }
433
- return newItems;
434
- };
435
- exports.fuseGrassProducts = fuseGrassProducts;
436
- var isMinQtyFee = function (slug) {
437
- return ['minimum-facturable-commande', 'frais-minimum-gazon-pour-installation'].includes(slug);
438
- };
439
- exports.isMinQtyFee = isMinQtyFee;
440
- var getAllMinGrassQuantities = function (grassProduct, isPro) {
441
- return {
442
- pickup: (0, expedition_1.getMinGrassQte)(grassProduct, 'pickup', isPro),
443
- shipping: (0, expedition_1.getMinGrassQte)(grassProduct, 'shipping', isPro),
444
- install: (0, expedition_1.getMinQteInstall)(isPro)
445
- };
446
- };
447
- exports.getAllMinGrassQuantities = getAllMinGrassQuantities;
448
- var getMinQtyFeeText = function (parent_slug, grassProduct, isPro, locale, expeditionMethod, shortVersion) {
449
- if (parent_slug === void 0) { parent_slug = ''; }
450
- if (locale === void 0) { locale = 'fr'; }
451
- var type = parent_slug === 'frais-minimum-gazon-pour-installation' ? 'install' : 'order';
452
- var minQuantities = (0, exports.getAllMinGrassQuantities)(grassProduct, isPro);
453
- var localeSellUnit = (0, locale_1.translateILang)(pluralSellUnits.p2, locale);
454
- var localeStepUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('roul'), locale).toLowerCase();
455
- var localeMinUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('pal'), locale).toLowerCase();
456
- var minQtyPallets = !!isPro ? 2 : 1;
457
- var str = '';
458
- var endStr = (0, locale_1.translateILang)({
459
- fr: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum.",
460
- en: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum."
461
- }, locale);
462
- if (!!!expeditionMethod && type === 'order' && minQuantities.pickup !== minQuantities.shipping) {
463
- var strMinShipping = "".concat(minQuantities.shipping).concat(localeSellUnit, " (").concat(minQuantities.shipping / 740, " ").concat(localeMinUnit, ")");
464
- var strMinPickup = !!minQuantities.pickup
465
- ? "".concat(minQuantities.pickup).concat(localeSellUnit, " (").concat(minQuantities.pickup / 740, " ").concat(localeMinUnit, ")")
466
- : '';
467
- str = (0, locale_1.translateILang)({
468
- fr: "Les commandes de gazon sont disponibles \u00E0 partir de 10".concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), mais le minimum facturable pour la livraison est de ").concat(strMinShipping).concat(!!strMinPickup ? " et de ".concat(strMinPickup, " pour la cueillette.") : ""),
469
- en: "Sod orders are available starting at 10".concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), but the minimum chargeable for delivery is ").concat(strMinShipping).concat(!!strMinPickup ? " and ".concat(strMinPickup, " for pick-up.") : "")
470
- }, locale);
471
- if (!!!shortVersion) {
472
- str += endStr;
473
- }
474
- return str;
475
- }
476
- str = (0, locale_1.translateILang)({
477
- fr: "".concat(type === 'install'
478
- ? "L'installation"
479
- : expeditionMethod === 'pickup'
480
- ? 'La cueillette'
481
- : expeditionMethod === 'delivery'
482
- ? 'La livraison'
483
- : 'La commande', " de gazon est disponible \u00E0 partir de 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), mais le minimum facturable est de ").concat(type === 'install'
484
- ? minQuantities.install
485
- : expeditionMethod === 'pickup'
486
- ? minQuantities.pickup
487
- : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', "."),
488
- en: "".concat(type === 'install'
489
- ? 'Sod installation'
490
- : expeditionMethod === 'pickup'
491
- ? 'Sod pick-up'
492
- : expeditionMethod === 'delivery'
493
- ? 'Sod delivery'
494
- : 'Sod ordering', " is available starting at 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), but the minimum billable is ").concat(type === 'install'
495
- ? minQuantities.install
496
- : expeditionMethod === 'pickup'
497
- ? minQuantities.pickup
498
- : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', ".")
499
- }, locale);
500
- if (!!!shortVersion) {
501
- str += endStr;
502
- }
503
- return str;
504
- };
505
- exports.getMinQtyFeeText = getMinQtyFeeText;
506
- var getMinQtyFeeAmountText = function (parent_slug, locale, servicesFees, showMinFeeAmount) {
507
- if (parent_slug === void 0) { parent_slug = ''; }
508
- if (locale === void 0) { locale = 'fr'; }
509
- if (showMinFeeAmount === void 0) { showMinFeeAmount = true; }
510
- var serviceOrFee = servicesFees.find(function (i) { return i.parent_slug === parent_slug; });
511
- if (!!!serviceOrFee)
512
- return '';
513
- var amount = (0, toNumber_1.default)(serviceOrFee.regular_price.amount) * serviceOrFee.qte;
514
- return (0, locale_1.translateILang)({
515
- fr: "Une diff\u00E9rence de ".concat(!!showMinFeeAmount ? amount.toFixed(2) + '$' : '%LOADER%', "%BOLD% vous sera charg\u00E9e si la quantit\u00E9 de gazon au panier est plus petite que le minimum requis."),
516
- en: "A difference of ".concat(!!showMinFeeAmount ? amount.toFixed(2) + '$' : '%LOADER%', "%BOLD% will be charged if the quantity of sod in the cart is less than the minimum required.")
517
- }, locale);
518
- };
519
- exports.getMinQtyFeeAmountText = getMinQtyFeeAmountText;
520
- var getGrassQteText = function (chosenDeclination, locale) {
521
- if (locale === void 0) { locale = 'fr'; }
522
- var txt = '';
523
- var nbRolls = 0;
524
- var nbSquareFeet = 0;
525
- var units = !!!chosenDeclination ? [] : chosenDeclination.other_units;
526
- if (!!units && !!units.length) {
527
- var itemRolls = units.find(function (measure) { return measure.unit_slug === 'roul'; });
528
- var itemSquareFeet = units.find(function (measure) { return measure.unit_slug === 'pal'; });
529
- if (!!itemSquareFeet && !!itemSquareFeet.fitting_unit) {
530
- nbSquareFeet = itemSquareFeet.fitting_unit;
531
- }
532
- if (!!itemRolls && !!itemRolls.fitting_unit && nbSquareFeet !== 0) {
533
- nbRolls = nbSquareFeet / itemRolls.fitting_unit;
534
- }
535
- }
536
- txt = (0, locale_1.translateILang)({
537
- fr: 'Pour ce produit, vous devez commander par pieds carrés. Une palette = *nbRolls* rouleaux (*nbSquareFeet*pi2)',
538
- en: 'For this product, you have to order by square feet. A pallet = *nbRolls* rolls (*nbSquareFeet*pi2)'
539
- }, locale);
540
- txt = txt.replace('*nbRolls*', String(nbRolls));
541
- txt = txt.replace('*nbSquareFeet*', String(nbSquareFeet));
542
- return txt;
543
- };
544
- exports.getGrassQteText = getGrassQteText;
545
- var getGrassServicesFees = function (grassProduct, isPro, useFees, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, chosenGrass, baseGrass, customPriceList) { return __awaiter(void 0, void 0, void 0, function () {
546
- var installItems, cart, applied;
547
- return __generator(this, function (_a) {
548
- switch (_a.label) {
549
- case 0: return [4, (0, exports.getInstallationArray)(grassProduct.qte, (!!baseGrass ? baseGrass : chosenGrass).product_upsells, fetchProduct, locale, isPro, chosenGrass.sku, customPriceList, { engrais: true, roulage: true })];
550
- case 1:
551
- installItems = _a.sent();
552
- cart = __assign(__assign({}, (0, Cart_1.getDefaultCart)()), { items: __spreadArray(__spreadArray([
553
- chosenGrass
554
- ], (!!baseGrass ? [baseGrass] : []), true), installItems.filter(function (item) { return !!!(0, exports.isMinQtyFee)(item.parent_slug || ''); }), true) });
555
- return [4, (0, exports.fetchFeesBeforeCart)(!!useFees, cart, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, isPro, grassProduct, undefined, { useDefaultAddress: true }, customPriceList)];
556
- case 2:
557
- applied = _a.sent();
558
- return [2, __spreadArray(__spreadArray([], installItems, true), applied.itemsToAdd, true)];
559
- }
560
- });
561
- }); };
562
- exports.getGrassServicesFees = getGrassServicesFees;
563
- var getGrassSubQuestionsByType = function (type) {
564
- if (type === 'pro') {
565
- return products_2.otherGrassSubQuestions.filter(function (sub) { return !!sub.proOnly; });
566
- }
567
- return products_2.otherGrassSubQuestions.filter(function (sub) { return 'installation-gazon' === sub.associatedProductSlug || (!!sub.installOnly && !!!sub.proOnly); });
568
- };
569
- exports.getGrassSubQuestionsByType = getGrassSubQuestionsByType;
570
- var handleGrassProductQtyRoundForShipping = function (cartData, grassProduct) {
571
- if (!!!cartData || !!!grassProduct)
572
- return;
573
- var product = cartData.items.find(function (item) { return item.sku === grassProduct.sku; });
574
- if (!!!product)
575
- return;
576
- var productOtherUnits = product.other_units;
577
- if (!!!productOtherUnits)
578
- return;
579
- var palUnit = productOtherUnits.find(function (u) { return u.unit_slug === 'pal'; });
580
- var rounded = (0, exports.roundGrassQte)(product.qte, !!!cartData.is_pickup, palUnit);
581
- if (!!!rounded || rounded === grassProduct.qte)
582
- return;
583
- var itemsToChange = [];
584
- var recursiveGrassItem = (0, cart_1.getRecursiveItems)(cartData.items).find(function (item) { return item.sku === grassProduct.sku; });
585
- var getItemsToChange = function (item) {
586
- if (!!item.sub_items) {
587
- item.sub_items.forEach(function (subItem) { return getItemsToChange(subItem); });
588
- }
589
- if (item.parent_slug === 'frais-de-mobilisation') {
590
- var totalPallet = (0, expedition_1.getPalletQty)(cartData.items.map(function (i) {
591
- if ((0, exports.checkIfProductIsOfType)(i, 'gazon')) {
592
- return __assign(__assign({}, i), { qte: rounded });
593
- }
594
- return i;
595
- }), 'grass');
596
- itemsToChange.push({
597
- sku: item.sku,
598
- qte: (0, ceil_1.default)(totalPallet / expedition_1.installationFeePalletTier)
599
- });
600
- return;
601
- }
602
- if (!!item.is_upsell_of_sku) {
603
- var parentUpsellProd = cartData.items.find(function (i) { return i.sku === item.is_upsell_of_sku; });
604
- if (!!parentUpsellProd) {
605
- var sameUpsell = (parentUpsellProd.product_upsells || []).find(function (up) { return up.recommendation_sku === item.sku; });
606
- if (!!sameUpsell) {
607
- var anUpsellProduct = __assign(__assign(__assign(__assign({}, item), { parent_slug: sameUpsell.recommendation_parent_slug, recommended_qte: sameUpsell.recommendation_qty, recommended_sku: sameUpsell.recommendation_sku, matching_qte: !!sameUpsell.matching_qty, auto_add: sameUpsell.auto_add, auto_add_exceptions: sameUpsell.auto_add_exceptions, actual_qte: sameUpsell.actual_qty }), (!!sameUpsell.is_recommendation ? { is_recommendation: true } : {})), (!!sameUpsell.show_recommendation_msg ? { show_recommendation_msg: true } : {}));
608
- var ratio = (0, upsells_1.calculateUpsellQte)(anUpsellProduct, rounded);
609
- if (!!ratio) {
610
- itemsToChange.push({
611
- sku: item.sku,
612
- qte: ratio
613
- });
614
- return;
615
- }
616
- }
617
- }
618
- }
619
- itemsToChange.push({
620
- sku: item.sku,
621
- qte: rounded
622
- });
623
- return;
624
- };
625
- if (!!recursiveGrassItem) {
626
- getItemsToChange(recursiveGrassItem);
627
- }
628
- return { rounded: rounded, itemsToChange: itemsToChange };
629
- };
630
- exports.handleGrassProductQtyRoundForShipping = handleGrassProductQtyRoundForShipping;
631
- var roundGrassQte = function (currentQte, isShipping, palUnit) {
632
- var newQte = currentQte;
633
- switch (true) {
634
- case currentQte < 1480:
635
- var rest1480 = currentQte % 10;
636
- if (rest1480 !== 0) {
637
- newQte = currentQte - rest1480 + 10;
638
- }
639
- break;
640
- case currentQte >= 1480 && !!!isShipping:
641
- var rest1480Install = currentQte % 10;
642
- if (rest1480Install !== 0) {
643
- newQte = currentQte - rest1480Install + 10;
644
- }
645
- break;
646
- case currentQte >= 1480:
647
- if (!!palUnit && !!palUnit.fitting_unit) {
648
- var rest1480_1 = currentQte % palUnit.fitting_unit;
649
- if (rest1480_1 !== 0 && !!((rest1480_1 - 400) % palUnit.fitting_unit)) {
650
- newQte = currentQte - rest1480_1;
651
- if (newQte + 400 > currentQte) {
652
- newQte = newQte + 400;
653
- }
654
- else if (newQte + palUnit.fitting_unit > currentQte) {
655
- newQte = newQte + palUnit.fitting_unit;
656
- }
657
- }
658
- }
659
- break;
660
- }
661
- return newQte;
662
- };
663
- exports.roundGrassQte = roundGrassQte;
664
- var getInstallationArray = function (qte, baseGrassUpsells, fetchProduct, locale, isPro, chosenSku, customPriceList, returnOtherFees) { return __awaiter(void 0, void 0, void 0, function () {
665
- var upsell, installation_upsell, installation_parent, installation_decli, minQteInstall, arrayFinal, installation_array_1, installation_qte_array, closestQte_1, minimum_installation_fee, minInstallDecli, mobilisation_fee, mobilisationDecli, fertilisation, minFertilisationDecli, roullage, minRoulageDecli;
666
- return __generator(this, function (_a) {
667
- switch (_a.label) {
668
- case 0:
669
- upsell = baseGrassUpsells;
670
- if (!!!upsell)
671
- return [2, []];
672
- installation_upsell = upsell.filter(function (upsell) { return upsell.recommendation_parent_slug === 'installation-gazon'; });
673
- return [4, fetchProduct('installation-gazon', locale, true, true)];
674
- case 1:
675
- installation_parent = _a.sent();
676
- minQteInstall = (0, expedition_1.getMinQteInstall)(isPro);
677
- arrayFinal = [];
678
- if (!(!!installation_parent && !!installation_upsell && !!installation_upsell.length)) return [3, 8];
679
- installation_array_1 = [];
680
- if (!!isPro) {
681
- installation_array_1 = installation_parent.declinations.filter(function (decli) {
682
- return !!decli.attributes &&
683
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
684
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('pro');
685
- });
686
- }
687
- else {
688
- installation_array_1 = installation_parent.declinations.filter(function (decli) {
689
- return !!decli.attributes &&
690
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
691
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('au-detail');
692
- });
693
- }
694
- installation_qte_array = installation_upsell.filter(function (upsell) {
695
- return installation_array_1.find(function (decli) { return decli.sku === upsell.recommendation_sku; });
696
- });
697
- closestQte_1 = (0, maxBy_1.default)(installation_qte_array.filter(function (upsell) {
698
- return upsell.actual_qty <= qte;
699
- }), 'actual_qty');
700
- if (!!!closestQte_1) return [3, 8];
701
- installation_decli = installation_parent.declinations.find(function (decli) { return decli.sku === closestQte_1.recommendation_sku; });
702
- if (!!installation_decli) {
703
- if (!!isPro && !!customPriceList) {
704
- installation_decli = (0, g2_1.checkForCustomPriceEquivalent)(installation_decli, customPriceList);
705
- }
706
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(installation_decli, installation_parent.slug)) {
707
- arrayFinal.push(__assign(__assign({}, installation_decli), { parent_slug: 'installation-gazon', qte: qte, is_upsell_of_sku: chosenSku, product_upsells: installation_parent.product_upsells }));
708
- }
709
- }
710
- if (!(qte < minQteInstall)) return [3, 3];
711
- return [4, fetchProduct('frais-minimum-gazon-pour-installation', locale, true, true)];
712
- case 2:
713
- minimum_installation_fee = _a.sent();
714
- if (!!minimum_installation_fee) {
715
- minInstallDecli = minimum_installation_fee.declinations[0];
716
- minInstallDecli = __assign(__assign({}, minInstallDecli), { regular_price: __assign(__assign({}, minInstallDecli.regular_price), { amount: installation_decli.regular_price.amount }) });
717
- if (!!isPro && !!customPriceList) {
718
- minInstallDecli = (0, g2_1.checkForCustomPriceEquivalent)(__assign(__assign({}, minInstallDecli), { price_override: true }), customPriceList);
719
- }
720
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(minInstallDecli, minimum_installation_fee.slug)) {
721
- arrayFinal.push(__assign(__assign({}, minInstallDecli), { parent_slug: 'frais-minimum-gazon-pour-installation', qte: minQteInstall - qte, is_upsell_of_sku: installation_decli.sku, price_override: true }));
722
- }
723
- }
724
- _a.label = 3;
725
- case 3: return [4, fetchProduct('frais-de-mobilisation', locale, true, true)];
726
- case 4:
727
- mobilisation_fee = _a.sent();
728
- if (!!mobilisation_fee && !!isPro) {
729
- mobilisationDecli = mobilisation_fee.declinations[0];
730
- if (!!customPriceList) {
731
- mobilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(mobilisationDecli, customPriceList);
732
- }
733
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(mobilisationDecli, mobilisation_fee.slug, true)) {
734
- arrayFinal.push(__assign(__assign({}, mobilisationDecli), { parent_slug: 'frais-de-mobilisation', qte: (0, ceil_1.default)(qte > minQteInstall
735
- ? qte / (740 * expedition_1.installationFeePalletTier)
736
- : minQteInstall / (740 * expedition_1.installationFeePalletTier)), is_upsell_of_sku: installation_decli.sku, product_upsells: mobilisation_fee.product_upsells }));
737
- }
738
- }
739
- if (!!!returnOtherFees) return [3, 8];
740
- if (!!!returnOtherFees.engrais) return [3, 6];
741
- return [4, fetchProduct('installation-fertilisation', locale, true, true)];
742
- case 5:
743
- fertilisation = _a.sent();
744
- if (!!fertilisation) {
745
- minFertilisationDecli = fertilisation.declinations[0];
746
- if (!!isPro && !!customPriceList) {
747
- minFertilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(minFertilisationDecli, customPriceList);
748
- }
749
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(minFertilisationDecli, fertilisation.slug, true)) {
750
- arrayFinal.push(__assign(__assign({}, minFertilisationDecli), { parent_slug: fertilisation.slug, qte: qte < minQteInstall ? minQteInstall : qte, is_upsell_of_sku: installation_decli.sku, product_upsells: fertilisation.product_upsells }));
751
- }
752
- }
753
- _a.label = 6;
754
- case 6:
755
- if (!returnOtherFees.roulage) return [3, 8];
756
- return [4, fetchProduct('installation-roulage', locale, true, true)];
757
- case 7:
758
- roullage = _a.sent();
759
- if (!!roullage) {
760
- minRoulageDecli = roullage.declinations[0];
761
- if (!!isPro && !!customPriceList) {
762
- minRoulageDecli = (0, g2_1.checkForCustomPriceEquivalent)(minRoulageDecli, customPriceList);
763
- }
764
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(minRoulageDecli, roullage.slug, true)) {
765
- arrayFinal.push(__assign(__assign({}, minRoulageDecli), { parent_slug: roullage.slug, qte: qte < minQteInstall ? minQteInstall : qte, is_upsell_of_sku: installation_decli.sku, product_upsells: roullage.product_upsells }));
766
- }
767
- }
768
- _a.label = 8;
769
- case 8: return [2, arrayFinal];
770
- }
771
- });
772
- }); };
773
- exports.getInstallationArray = getInstallationArray;
774
- var getInstallItemPrice = function (parentSlug, servicesFees) {
775
- var price = 0;
776
- switch (parentSlug) {
777
- case 'installation-gazon':
778
- var itemsToUse = servicesFees.filter(function (i) { return i.parent_slug && ['installation-gazon', 'frais-de-mobilisation'].includes(i.parent_slug); });
779
- if (!!itemsToUse) {
780
- price = (0, sumBy_1.default)(itemsToUse, function (item) { return (0, products_1.getLowestPrice)(item).price.amount * item.qte; });
781
- }
782
- break;
783
- default:
784
- var itemToUse = servicesFees.find(function (i) { return i.parent_slug === parentSlug; });
785
- if (!!itemToUse) {
786
- price = (0, products_1.getLowestPrice)(itemToUse).price.amount * itemToUse.qte;
787
- }
788
- break;
789
- }
790
- return price;
791
- };
792
- exports.getInstallItemPrice = getInstallItemPrice;
793
- var getConcreteQteText = function (declination, locale) {
794
- if (locale === void 0) { locale = 'fr'; }
795
- var txt = '';
796
- if (!!!declination)
797
- return txt;
798
- var nbSaleUnitsPerCmdStep = 0;
799
- var nbUnitsPerPal = 0;
800
- var other_units = declination.other_units;
801
- if (!!!other_units || !!!other_units.length) {
802
- return '';
803
- }
804
- else {
805
- var commandStep = other_units.find(function (unit) { return unit.is_command_step; });
806
- var commandUnit = other_units.find(function (unit) { return unit.is_command_unit; });
807
- var saleUnit = other_units.find(function (unit) { return unit.is_sale_unit; });
808
- var unitsPerPal = other_units.find(function (unit) { return unit.unit_slug === 'pal'; });
809
- if (!!commandStep &&
810
- !!commandStep.fitting_unit &&
811
- !!commandUnit &&
812
- !!commandUnit.fitting_unit &&
813
- !!saleUnit &&
814
- !!saleUnit.fitting_unit &&
815
- !!unitsPerPal &&
816
- !!unitsPerPal.fitting_unit) {
817
- var cmdSameAsSale = commandStep.unit_slug === saleUnit.unit_slug;
818
- var nbP2PerRgSlug = !!cmdSameAsSale ? commandUnit.unit_slug : saleUnit.unit_slug;
819
- nbSaleUnitsPerCmdStep = !!cmdSameAsSale
820
- ? commandStep.fitting_unit / commandUnit.fitting_unit
821
- : commandStep.fitting_unit / saleUnit.fitting_unit;
822
- nbUnitsPerPal =
823
- commandStep.fitting_unit == 1 && !!!commandStep.is_sale_unit
824
- ? unitsPerPal.fitting_unit * (0, round_1.default)(nbSaleUnitsPerCmdStep, 2)
825
- : unitsPerPal.fitting_unit / saleUnit.fitting_unit;
826
- txt = (0, locale_1.translateILang)({
827
- fr: 'Pour ce produit, vous devez commander par *cmdStep* (*nbUnitsPerCmdStep*).',
828
- en: 'For this product, you have to order by *cmdStep* (*nbUnitsPerCmdStep*).'
829
- }, locale);
830
- if (unitsPerPal.unit_slug != commandStep.unit_slug) {
831
- txt += (0, locale_1.translateILang)({
832
- fr: ' Une palette = *nbUnitsPerPal*.',
833
- en: ' A pallet = *nbUnitsPerPal*.'
834
- }, locale);
835
- }
836
- txt = txt.replace('*cmdStep*', String("".concat((0, locale_1.translateILang)(inventories_1.unitDict[commandStep.unit_slug], locale).toLowerCase())));
837
- txt = txt.replace('*nbUnitsPerCmdStep*', String("".concat((0, round_1.default)(nbSaleUnitsPerCmdStep, 2), " ").concat((0, locale_1.translateILang)(inventories_1.unitDict[nbP2PerRgSlug], locale).toLowerCase())));
838
- txt = txt.replace('*nbUnitsPerPal*', String("".concat((0, round_1.default)(nbUnitsPerPal, 2), " ").concat((0, locale_1.translateILang)(inventories_1.unitDict[saleUnit.unit_slug], locale).toLowerCase())));
839
- }
840
- else {
841
- return '';
842
- }
843
- }
844
- return txt;
845
- };
846
- exports.getConcreteQteText = getConcreteQteText;
847
- var getConcreteItemsByAvailability = function (cartData, availabilityType) {
848
- return cartData.items.filter(function (i) {
849
- return (i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY] &&
850
- i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY][0] === availabilityType);
851
- });
852
- };
853
- exports.getConcreteItemsByAvailability = getConcreteItemsByAvailability;
854
- var getVracType = function (stores, cartData, getInventoryItemCallback) { return __awaiter(void 0, void 0, void 0, function () {
855
- var items, allStoreIds, itemFormat, onlySteJulieNobel;
856
- return __generator(this, function (_a) {
857
- switch (_a.label) {
858
- case 0:
859
- items = cartData.items;
860
- if (!!!items ||
861
- !!!items.length ||
862
- (!!!(0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, cartData) &&
863
- !!!cartData.items.find(function (item) { return !!item.is_other_type && item.is_other_type === 'vrac'; })))
864
- return [2];
865
- allStoreIds = stores.map(function (store) { return store.id; });
866
- itemFormat = '';
867
- return [4, Promise.all(items.map(function (item) { return __awaiter(void 0, void 0, void 0, function () {
868
- var productInventory, _a;
869
- return __generator(this, function (_b) {
870
- switch (_b.label) {
871
- case 0:
872
- if (!!!!item.is_service) return [3, 2];
873
- return [4, getInventoryItemCallback(item.sku)];
874
- case 1:
875
- _a = _b.sent();
876
- return [3, 3];
877
- case 2:
878
- _a = undefined;
879
- _b.label = 3;
880
- case 3:
881
- productInventory = _a;
882
- if (!!!productInventory)
883
- return [2];
884
- allStoreIds = allStoreIds.filter(function (id) {
885
- var sameStoreInProdInventory = productInventory.inventories.find(function (i) { return i.store_id === id; });
886
- if (!!!sameStoreInProdInventory)
887
- return true;
888
- return !!!sameStoreInProdInventory.unavailable_in_store;
889
- });
890
- if (!!!itemFormat && !!item.attributes && !!item.attributes[data_2.AttributesIdEnumGR.FORMATS]) {
891
- itemFormat = item.attributes[data_2.AttributesIdEnumGR.FORMATS][0];
892
- }
893
- return [2];
894
- }
895
- });
896
- }); }))];
897
- case 1:
898
- _a.sent();
899
- onlySteJulieNobel = allStoreIds.length === 1 && allStoreIds[0] === 'sainte-julie-nobel';
900
- if (!!itemFormat.includes('sac')) {
901
- return [2, {
902
- vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_SAC : products_3.VracTypeEnum.AUTRE_SAC,
903
- vrac_store_ids: allStoreIds
904
- }];
905
- }
906
- else {
907
- return [2, {
908
- vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_TONNE : products_3.VracTypeEnum.AUTRE_TONNE,
909
- vrac_store_ids: allStoreIds
910
- }];
911
- }
912
- return [2];
913
- }
914
- });
915
- }); };
916
- exports.getVracType = getVracType;
917
- var fetchFeesBeforeCart = function (useFees, newCart, deliveryType, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, isPro, grassProduct, concreteOrder, settings, customPriceList) { return __awaiter(void 0, void 0, void 0, function () {
918
- var cartContainsVrac, cartContainsInstallation, cartContainsSample, cartContainsAccessoriesOnly;
919
- return __generator(this, function (_a) {
920
- switch (_a.label) {
921
- case 0:
922
- cartContainsVrac = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, newCart);
923
- cartContainsInstallation = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.INSTALLATION, newCart);
924
- cartContainsSample = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.SAMPLE, newCart);
925
- cartContainsAccessoriesOnly = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.ONLY_ACCESSORIES, newCart);
926
- return [4, (0, expedition_1.applyFeesToCart)(fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, newCart, deliveryType, grassProduct, concreteOrder, deliveryType === 'pickup' ? false : cartContainsInstallation, cartContainsVrac, isPro, deliveryType === 'pickup' ? !!settings && !!settings.addOnePalletToPickup : false, cartContainsSample, !!settings ? !!settings.saveToShippingPayload : false, !!!settings
927
- ? undefined
928
- : !!settings.useDefaultAddress
929
- ? data_1.defaultVracStoreAddress
930
- : !!settings.useDeliveryAddress && !!newCart.shipping_address
931
- ? newCart.shipping_address.address
932
- : undefined, locale, undefined, false, cartContainsAccessoriesOnly, undefined, allStores, customPriceList, !!useFees)];
933
- case 1: return [2, _a.sent()];
934
- }
935
- });
936
- }); };
937
- exports.fetchFeesBeforeCart = fetchFeesBeforeCart;
938
- var shouldShowProCustomPromo = function (userData, isPro, product, customMinPrice) {
939
- if (!!!product || !!!isPro || !!!userData)
940
- return false;
941
- if (!!customMinPrice) {
942
- if (customMinPrice.type === G2_1.CustomPriceItemTypeEnum.REG && customMinPrice.code2 !== 'NET')
943
- return false;
944
- return true;
945
- }
946
- var customerGroup = (0, object_1.recursiveCheckObject)(userData, 'userData.basic_info.customer_professionnal_info.external_customer_group');
947
- var customerType = !!customerGroup ? (0, g2_1.getG2CustomerTypeFromCode)(customerGroup) : undefined;
948
- var prodPriceClass = !!product.price_classes_range
949
- ? product.price_classes_range.find(function (range) {
950
- return !!customerType && range.external_slug ? range.external_slug === customerType : range.class === 'aspirant';
951
- })
952
- : !!product.prices_list
953
- ? product.prices_list.find(function (range) {
954
- return !!customerType && range.external_slug ? range.external_slug === customerType : range.group_id === 'aspirant';
955
- })
956
- : undefined;
957
- return !!prodPriceClass && !!prodPriceClass.custom_promo_applies;
958
- };
959
- exports.shouldShowProCustomPromo = shouldShowProCustomPromo;
960
- var applyProCustomPromo = function (decli, userData) {
961
- var customerCode = userData.basic_info.customer_professionnal_info &&
962
- userData.basic_info.customer_professionnal_info.external_customer_group;
963
- if (!!!customerCode)
964
- return {};
965
- var customerCustomPromo = (0, g2_1.getG2DiscountFromCode)(customerCode);
966
- if (!!!customerCustomPromo)
967
- return {};
968
- var regPrice = decli.regular_price.amount;
969
- var newDiscountAmount = (0, toNumber_1.default)(regPrice) * ((100 - customerCustomPromo) / 100);
970
- var newPromoObj = (0, IDiscountRule_1.getDefaultDiscountRule)('product');
971
- newPromoObj = __assign(__assign({}, newPromoObj), { appliesTo: __assign(__assign({}, newPromoObj.appliesTo), { label: IDiscountRule_1.AppliesToEnum.PRODUCT, value: decli.sku }), rules: [
972
- {
973
- field: IDiscountRule_1.RuleFieldEnum.CUSTOMER,
974
- condition: IDiscountRule_1.RuleConditionEnum.AND,
975
- ruleDetails: [
976
- {
977
- operator: '==',
978
- value: [userData.id],
979
- condition: IDiscountRule_1.RuleConditionEnum.AND
980
- }
981
- ]
982
- }
983
- ], result: {
984
- action: IDiscountRule_1.ResultActionEnum.PERCENT,
985
- action_value: customerCustomPromo
986
- } });
987
- return {
988
- discount_rules: [newPromoObj],
989
- promo_price: {
990
- currency: 'CAD',
991
- amount: (0, round_1.default)(newDiscountAmount, 3)
992
- }
993
- };
994
- };
995
- exports.applyProCustomPromo = applyProCustomPromo;
996
- var getFormattedProdGR = function (decli, productSlug, isPro) {
997
- var promo_price = decli.promo_price, discount_price = decli.discount_price, tier_pricing = decli.tier_pricing, rest = __rest(decli, ["promo_price", "discount_price", "tier_pricing"]);
998
- return !!isPro ? __assign(__assign({}, rest), (productSlug !== 'kentucky' ? { tier_pricing: tier_pricing } : {})) : decli;
999
- };
1000
- exports.getFormattedProdGR = getFormattedProdGR;
1001
- var shouldHideItemIfRegPriceIs0 = function (item, productSlug, isUpsellOfInstallProd) {
1002
- var regPriceIs0 = item.regular_price.amount == 0;
1003
- if (!regPriceIs0)
1004
- return false;
1005
- if (!item.is_service)
1006
- return false;
1007
- if (!!isUpsellOfInstallProd)
1008
- return false;
1009
- if (expedition_1.slugsToCheckFromExpeditionFees.shipping.includes(productSlug))
1010
- return false;
1011
- return true;
1012
- };
1013
- exports.shouldHideItemIfRegPriceIs0 = shouldHideItemIfRegPriceIs0;
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __rest = (this && this.__rest) || function (s, e) {
50
+ var t = {};
51
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
+ t[p] = s[p];
53
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
+ t[p[i]] = s[p[i]];
57
+ }
58
+ return t;
59
+ };
60
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
61
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
62
+ if (ar || !(i in from)) {
63
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
64
+ ar[i] = from[i];
65
+ }
66
+ }
67
+ return to.concat(ar || Array.prototype.slice.call(from));
68
+ };
69
+ var __importDefault = (this && this.__importDefault) || function (mod) {
70
+ return (mod && mod.__esModule) ? mod : { "default": mod };
71
+ };
72
+ Object.defineProperty(exports, "__esModule", { value: true });
73
+ exports.shouldHideItemIfRegPriceIs0 = exports.getFormattedProdGR = exports.applyProCustomPromo = exports.shouldShowProCustomPromo = exports.fetchFeesBeforeCart = exports.getVracType = exports.getConcreteItemsByAvailability = exports.getConcreteQteText = exports.getInstallItemPrice = exports.getInstallationArray = exports.roundGrassQte = exports.handleGrassProductQtyRoundForShipping = exports.getGrassSubQuestionsByType = exports.getGrassServicesFees = exports.getGrassQteText = exports.getMinQtyFeeAmountText = exports.getMinQtyFeeText = exports.getAllMinGrassQuantities = exports.isMinQtyFee = exports.fuseGrassProducts = exports.getAllInstallFromItems = exports.checkIfProductIsInstallation = exports.checkIfProductIsOfType = exports.getProductFormOptions = exports.getParentProductCategoryGroup = exports.getProdName = exports.splitOnDashes = exports.getRoundedProductQuantities = exports.getDescriptionString = exports.getDescriptionLength = exports.getProductAttributes = exports.productUnitSupportsDecimals = exports.getCorrectPluralSellUnit = exports.getPluralUnitLabelWithSlug = exports.getProductSellUnitLabel = void 0;
74
+ var ceil_1 = __importDefault(require("lodash/ceil"));
75
+ var maxBy_1 = __importDefault(require("lodash/maxBy"));
76
+ var orderBy_1 = __importDefault(require("lodash/orderBy"));
77
+ var toNumber_1 = __importDefault(require("lodash/toNumber"));
78
+ var round_1 = __importDefault(require("lodash/round"));
79
+ var flatten_1 = __importDefault(require("lodash/flatten"));
80
+ var uniqBy_1 = __importDefault(require("lodash/uniqBy"));
81
+ var sumBy_1 = __importDefault(require("lodash/sumBy"));
82
+ var Cart_1 = require("../../../Interfaces/Cart");
83
+ var G2_1 = require("../../../Interfaces/G2");
84
+ var IDiscountRule_1 = require("../../../Interfaces/Rules/IDiscountRule");
85
+ var string_1 = require("../../../utils/string");
86
+ var locale_1 = require("../../../utils/locale");
87
+ var inventories_1 = require("../../../utils/inventories");
88
+ var products_1 = require("../../../utils/products");
89
+ var expedition_1 = require("./expedition");
90
+ var data_1 = require("../constants/data");
91
+ var products_2 = require("../constants/products");
92
+ var g2_1 = require("./g2");
93
+ var cart_1 = require("./cart");
94
+ var products_3 = require("../interfaces/products");
95
+ var data_2 = require("../interfaces/data");
96
+ var cart_2 = require("../interfaces/cart");
97
+ var upsells_1 = require("./upsells");
98
+ var object_1 = require("../../../utils/object");
99
+ var pluralSellUnits = {
100
+ p2: { fr: 'pi²', en: 'sqft' },
101
+ sac: { fr: 'sacs', en: 'bags' },
102
+ unite: { fr: 'unités', en: 'units' },
103
+ tonne: { fr: 'tonnes', en: 'tons' },
104
+ rouleau: { fr: 'rouleaux', en: 'rolls' }
105
+ };
106
+ var pluralSellUnitsBySlug = {
107
+ p2: { fr: 'pi²', en: 'sqft' },
108
+ sac: { fr: 'sacs', en: 'bags' },
109
+ unite: { fr: 'unités', en: 'units' },
110
+ tonne: { fr: 'tonnes', en: 'tons' },
111
+ roul: { fr: 'rouleaux', en: 'rolls' }
112
+ };
113
+ var getProductSellUnitLabel = function (otherUnits, locale, returnUnitForSlugs) {
114
+ if (locale === void 0) { locale = 'fr'; }
115
+ if (!!!otherUnits)
116
+ return '';
117
+ var sellingUnit = otherUnits.find(function (unit) { return !!unit.is_sale_unit; });
118
+ if (!!!sellingUnit)
119
+ return '';
120
+ return sellingUnit.unit_slug === 'p2'
121
+ ? (0, locale_1.translateILang)(pluralSellUnitsBySlug.p2, locale)
122
+ : !!(0, inventories_1.getUnitShortDict)(sellingUnit.unit_slug, returnUnitForSlugs)
123
+ ? (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)(sellingUnit.unit_slug, returnUnitForSlugs), locale)
124
+ : sellingUnit.unit_slug;
125
+ };
126
+ exports.getProductSellUnitLabel = getProductSellUnitLabel;
127
+ var getPluralUnitLabelWithSlug = function (unitSlug, locale, returnUnitForSlugs) {
128
+ if (locale === void 0) { locale = 'fr'; }
129
+ if (!!returnUnitForSlugs && !!returnUnitForSlugs.includes(unitSlug)) {
130
+ return (0, locale_1.translateILang)(pluralSellUnitsBySlug['unite'], locale);
131
+ }
132
+ return !!pluralSellUnitsBySlug[unitSlug]
133
+ ? (0, locale_1.translateILang)(pluralSellUnitsBySlug[unitSlug], locale)
134
+ : !!(0, inventories_1.getUnitShortDict)(unitSlug)
135
+ ? (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)(unitSlug), locale)
136
+ : unitSlug;
137
+ };
138
+ exports.getPluralUnitLabelWithSlug = getPluralUnitLabelWithSlug;
139
+ var getCorrectPluralSellUnit = function (sellUnit, locale) {
140
+ if (locale === void 0) { locale = 'fr'; }
141
+ if (!!!sellUnit.unit)
142
+ return '';
143
+ var frSellUnit = (0, string_1.string_to_slug)((0, locale_1.translateILang)(sellUnit.unit, 'fr'));
144
+ return !!pluralSellUnits[frSellUnit]
145
+ ? (0, locale_1.translateILang)(pluralSellUnits[frSellUnit], locale)
146
+ : (0, locale_1.translateILang)(sellUnit.unit, locale);
147
+ };
148
+ exports.getCorrectPluralSellUnit = getCorrectPluralSellUnit;
149
+ var productUnitSupportsDecimals = function (unitSlug, isService) {
150
+ return !!isService || !!['p2', 'pl', 'vg3', 'tonne'].includes(unitSlug);
151
+ };
152
+ exports.productUnitSupportsDecimals = productUnitSupportsDecimals;
153
+ var getProductAttributes = function (product) {
154
+ var arrColor = !!product.attributes[data_2.AttributesIdEnumGR.SUBCOLOR]
155
+ ? product.attributes[data_2.AttributesIdEnumGR.SUBCOLOR]
156
+ : [];
157
+ var arrDimensions = !!product.attributes[data_2.AttributesIdEnumGR.DIMENSIONS]
158
+ ? product.attributes[data_2.AttributesIdEnumGR.DIMENSIONS]
159
+ : [];
160
+ var arrFormats = !!product.attributes[data_2.AttributesIdEnumGR.FORMATS]
161
+ ? product.attributes[data_2.AttributesIdEnumGR.FORMATS]
162
+ : [];
163
+ return { colors: arrColor, dimensions: arrDimensions, formats: arrFormats };
164
+ };
165
+ exports.getProductAttributes = getProductAttributes;
166
+ var getDescriptionLength = function (description, locale) {
167
+ if (locale === void 0) { locale = 'fr'; }
168
+ if (!!!description || !!!(0, locale_1.getLocaleOfDictionnary)(description, locale))
169
+ return 0;
170
+ return (0, string_1.stripHTML)((0, locale_1.getLocaleOfDictionnary)(description, locale)).length;
171
+ };
172
+ exports.getDescriptionLength = getDescriptionLength;
173
+ var getDescriptionString = function (showFullDesc, maxLength, description, locale) {
174
+ if (locale === void 0) { locale = 'fr'; }
175
+ if (!!showFullDesc || (0, exports.getDescriptionLength)(description, locale) <= maxLength) {
176
+ return (0, string_1.stripHTML)((0, locale_1.getLocaleOfDictionnary)(description, locale));
177
+ }
178
+ var truncated = (0, string_1.stripHTML)((0, locale_1.getLocaleOfDictionnary)(description, locale)).slice(0, maxLength).split(' ');
179
+ truncated.pop();
180
+ return truncated.join(' ') + ' [...]';
181
+ };
182
+ exports.getDescriptionString = getDescriptionString;
183
+ var getRoundedProductQuantities = function (value, otherUnits, value2, targetIsSecondaryInput) {
184
+ if (otherUnits === void 0) { otherUnits = []; }
185
+ if (targetIsSecondaryInput === void 0) { targetIsSecondaryInput = false; }
186
+ var saleUnit = otherUnits.find(function (unit) { return unit.is_sale_unit; });
187
+ var commandUnit = otherUnits.find(function (unit) { return unit.is_command_unit; });
188
+ var commandStep = otherUnits.find(function (unit) { return unit.is_command_step; });
189
+ var roundedQuantities = {
190
+ qte1: value,
191
+ qte2: value2
192
+ };
193
+ if (!!targetIsSecondaryInput && typeof value2 === 'number') {
194
+ if (!!commandStep && !!commandStep.fitting_unit && !!commandUnit && !!commandUnit.fitting_unit) {
195
+ var nbSaleUnitPerCmdStep = (0, round_1.default)(commandStep.fitting_unit / commandUnit.fitting_unit, 2);
196
+ var roundedValue = value2 === 0 ? 0 : _roundNbSaleUnitPerCmdStep(value2, nbSaleUnitPerCmdStep);
197
+ roundedQuantities = {
198
+ qte1: value2 === 0
199
+ ? 0
200
+ : (0, round_1.default)(roundedValue * commandUnit.fitting_unit, !!saleUnit && (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0),
201
+ qte2: roundedValue
202
+ };
203
+ }
204
+ }
205
+ else if (!!commandStep && !!commandStep.fitting_unit && !!saleUnit && !!saleUnit.fitting_unit) {
206
+ var nbSaleUnitPerCmdStep = (0, round_1.default)(commandStep.fitting_unit / saleUnit.fitting_unit, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0);
207
+ var roundedValue = value === 0
208
+ ? 0
209
+ : _roundNbSaleUnitPerCmdStep(value, nbSaleUnitPerCmdStep, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug));
210
+ roundedQuantities = {
211
+ qte1: roundedValue,
212
+ qte2: !!commandUnit && !!commandUnit.fitting_unit
213
+ ? value === 0
214
+ ? 0
215
+ : roundedValue * (0, round_1.default)(commandStep.fitting_unit / commandUnit.fitting_unit, 2)
216
+ : undefined
217
+ };
218
+ }
219
+ return roundedQuantities;
220
+ };
221
+ exports.getRoundedProductQuantities = getRoundedProductQuantities;
222
+ var _roundNbSaleUnitPerCmdStep = function (value, nbSaleUnitPerCmdStep, supportsDecimals) {
223
+ var rounded = (0, round_1.default)(value / nbSaleUnitPerCmdStep, !!supportsDecimals ? 2 : 0) * nbSaleUnitPerCmdStep;
224
+ var roundedUp = Math.ceil(value / nbSaleUnitPerCmdStep) * nbSaleUnitPerCmdStep;
225
+ if ((0, round_1.default)(rounded, !!supportsDecimals ? 2 : 0) % nbSaleUnitPerCmdStep == 0)
226
+ return rounded;
227
+ return roundedUp;
228
+ };
229
+ var splitOnDashes = function (stringToSplit, dummyStringToReplace) {
230
+ if (dummyStringToReplace === void 0) { dummyStringToReplace = { currentValue: '%%-%%', newValue: ' - ' }; }
231
+ var splited = stringToSplit.split(' - ');
232
+ if (splited.length === 1)
233
+ splited = stringToSplit.split(' -');
234
+ if (splited.length === 1)
235
+ splited = stringToSplit.split('- ');
236
+ return __spreadArray([
237
+ splited[0].replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)
238
+ ], (!!splited[1]
239
+ ? [splited.slice(1).join(' - ').replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)]
240
+ : []), true);
241
+ };
242
+ exports.splitOnDashes = splitOnDashes;
243
+ var getProdName = function (product, locale) {
244
+ var name;
245
+ if (!!product.full_name) {
246
+ name = (0, locale_1.getLocaleOfDictionnary)(product.full_name, locale);
247
+ }
248
+ else {
249
+ name = (0, locale_1.getLocaleOfDictionnary)(product.name, locale);
250
+ if (!!product.use_parent && !!product.parent_name) {
251
+ if (typeof product.parent_name === 'string') {
252
+ name = product.parent_name;
253
+ }
254
+ }
255
+ }
256
+ var newNameArray = [];
257
+ var dashesToFind = [' - ', '- ', ' -'];
258
+ if (name.includes('(')) {
259
+ var newStr = '';
260
+ var strWithParenthesisToCheck = name;
261
+ while (strWithParenthesisToCheck.includes('(')) {
262
+ var positionStart = strWithParenthesisToCheck.indexOf('(');
263
+ var positionEnd = strWithParenthesisToCheck.indexOf(')');
264
+ var substrToCheck = strWithParenthesisToCheck.substring(positionStart, positionEnd + 1);
265
+ for (var _i = 0, dashesToFind_1 = dashesToFind; _i < dashesToFind_1.length; _i++) {
266
+ var dash = dashesToFind_1[_i];
267
+ substrToCheck = substrToCheck.replace(dash, '-');
268
+ }
269
+ newStr += strWithParenthesisToCheck.substring(0, positionStart) + substrToCheck;
270
+ strWithParenthesisToCheck =
271
+ positionEnd === strWithParenthesisToCheck.length - 1 ? '' : strWithParenthesisToCheck.substring(positionEnd + 1);
272
+ }
273
+ newStr += strWithParenthesisToCheck;
274
+ var positionOfFirst = newStr.indexOf(')');
275
+ var firstPart_1 = newStr.substring(0, positionOfFirst);
276
+ if (positionOfFirst !== newStr.length - 1 && dashesToFind.some(function (str) { return firstPart_1.includes(str); })) {
277
+ var secondPart = newStr.substring(positionOfFirst);
278
+ for (var _a = 0, dashesToFind_2 = dashesToFind; _a < dashesToFind_2.length; _a++) {
279
+ var str = dashesToFind_2[_a];
280
+ firstPart_1.replace(str, '%%-%%');
281
+ }
282
+ newNameArray = (0, exports.splitOnDashes)("".concat(firstPart_1).concat(secondPart));
283
+ }
284
+ else {
285
+ newNameArray = (0, exports.splitOnDashes)(newStr);
286
+ }
287
+ }
288
+ else {
289
+ newNameArray = (0, exports.splitOnDashes)(name);
290
+ }
291
+ return newNameArray;
292
+ };
293
+ exports.getProdName = getProdName;
294
+ var getParentProductCategoryGroup = function (prod) {
295
+ var type = 'other';
296
+ if (!!prod.categories && !!prod.categories['lvl0']) {
297
+ var categorySlug = prod.categories['lvl0'];
298
+ switch (categorySlug) {
299
+ case 'gazon':
300
+ if (!!(0, exports.checkIfProductIsOfType)(prod, 'gazon')) {
301
+ type = 'gazon';
302
+ }
303
+ break;
304
+ case 'amenagement-paysager':
305
+ if (!!(0, exports.checkIfProductIsOfType)(prod, 'beton')) {
306
+ type = 'beton';
307
+ }
308
+ break;
309
+ default:
310
+ if (!!(0, exports.checkIfProductIsOfType)(prod, 'vrac')) {
311
+ type = 'vrac';
312
+ }
313
+ break;
314
+ }
315
+ }
316
+ return type;
317
+ };
318
+ exports.getParentProductCategoryGroup = getParentProductCategoryGroup;
319
+ var getProductFormOptions = function (product, attributes) {
320
+ var allColorOptions = [];
321
+ var allDimensionOptions = [];
322
+ var allFormatOptions = [];
323
+ var product_attributes = (0, exports.getProductAttributes)(product);
324
+ var overridenAttributes = product.declinations
325
+ .map(function (declination) { return declination.overriden_attributes; })
326
+ .filter(function (ova) { return !!ova; });
327
+ overridenAttributes = (0, flatten_1.default)(overridenAttributes);
328
+ overridenAttributes = (0, uniqBy_1.default)(overridenAttributes, 'slug');
329
+ var getOverriddenValues = function (prodAttributes, attrId) {
330
+ var overridenOptions = !!overridenAttributes.length
331
+ ? overridenAttributes.filter(function (attr) { return attr.id === attrId; })
332
+ : [];
333
+ var finalOptions = [];
334
+ for (var _i = 0, prodAttributes_1 = prodAttributes; _i < prodAttributes_1.length; _i++) {
335
+ var attr = prodAttributes_1[_i];
336
+ var isOverridden = false;
337
+ for (var _a = 0, overridenOptions_1 = overridenOptions; _a < overridenOptions_1.length; _a++) {
338
+ var ovOption = overridenOptions_1[_a];
339
+ if (!isOverridden) {
340
+ if (!!attr && attr.slug === ovOption.slug) {
341
+ isOverridden = true;
342
+ finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [
343
+ __assign(__assign({}, attr), { other_details: __assign(__assign({}, attr.other_details), { image: ovOption.overriden_values }) })
344
+ ], false);
345
+ }
346
+ }
347
+ }
348
+ if (!isOverridden) {
349
+ finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [attr], false);
350
+ }
351
+ }
352
+ return finalOptions;
353
+ };
354
+ var subColorsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.SUBCOLOR; });
355
+ if (!!subColorsAttr) {
356
+ var subColors = subColorsAttr.values;
357
+ var colorsAttributes = subColors.filter(function (sub) { return product_attributes.colors.includes(sub.slug); });
358
+ var finalColors = getOverriddenValues(colorsAttributes, data_2.AttributesIdEnumGR.SUBCOLOR);
359
+ allColorOptions = (0, orderBy_1.default)(finalColors, function (color) {
360
+ return product.declinations.findIndex(function (d) { return d.attributes[data_2.AttributesIdEnumGR.SUBCOLOR].includes(color.slug); });
361
+ });
362
+ }
363
+ var dimensionsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.DIMENSIONS; });
364
+ if (!!dimensionsAttr) {
365
+ var dimensions = dimensionsAttr.values;
366
+ var dimensionsAttributes = dimensions.filter(function (d) { return product_attributes.dimensions.includes(d.slug); });
367
+ var finalDimensions = getOverriddenValues(dimensionsAttributes, data_2.AttributesIdEnumGR.DIMENSIONS);
368
+ allDimensionOptions = finalDimensions;
369
+ }
370
+ var formatsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.FORMATS; });
371
+ if (!!formatsAttr) {
372
+ var formats = formatsAttr.values;
373
+ allFormatOptions = formats.filter(function (f) { return product_attributes.formats.includes(f.slug); });
374
+ }
375
+ return {
376
+ allColors: allColorOptions,
377
+ allDimensions: allDimensionOptions,
378
+ allFormats: allFormatOptions
379
+ };
380
+ };
381
+ exports.getProductFormOptions = getProductFormOptions;
382
+ var checkIfProductIsOfType = function (product, type, excludeUndefined) {
383
+ var attr = !!product && !!product.attributes ? product.attributes : {};
384
+ if (!!!attr[data_2.AttributesIdEnumGR.TYPE] && !!excludeUndefined)
385
+ return true;
386
+ return (!!attr[data_2.AttributesIdEnumGR.TYPE] &&
387
+ Array.isArray(attr[data_2.AttributesIdEnumGR.TYPE]) &&
388
+ attr[data_2.AttributesIdEnumGR.TYPE].includes(type));
389
+ };
390
+ exports.checkIfProductIsOfType = checkIfProductIsOfType;
391
+ var checkIfProductIsInstallation = function (item) {
392
+ return !!item.is_service && !!item.parent_slug && !!item.parent_slug.includes('installation');
393
+ };
394
+ exports.checkIfProductIsInstallation = checkIfProductIsInstallation;
395
+ var getAllInstallFromItems = function (items) {
396
+ return items.filter(function (i) {
397
+ return (!!i.parent_slug && products_2.installationProductsSlugs.includes(i.parent_slug)) ||
398
+ Object.values(products_2.installationProSpecSkus).includes(i.sku);
399
+ });
400
+ };
401
+ exports.getAllInstallFromItems = getAllInstallFromItems;
402
+ var fuseGrassProducts = function (recursiveItems, isPro) {
403
+ var specialityGrass = recursiveItems[0];
404
+ var kentuckyGrass = (specialityGrass.sub_items || []).find(function (sub) { return sub.sku === products_2.kentucky; });
405
+ var newItems = [];
406
+ if (!!kentuckyGrass) {
407
+ var kentuckyPrice = (0, products_1.getLowestPrice)(kentuckyGrass);
408
+ var regPriceKentucky = kentuckyGrass.regular_price.amount;
409
+ var newGrassRegPrice = !!kentuckyPrice.promo ? regPriceKentucky : kentuckyPrice.price.amount;
410
+ var newGrassDiscountPrice = (!!specialityGrass.discount_price
411
+ ? specialityGrass.discount_price.amount
412
+ : specialityGrass.regular_price.amount) +
413
+ (!!kentuckyPrice.promo ? kentuckyPrice.price.amount : regPriceKentucky);
414
+ var getLowestPriceSpecialityGrass_1 = (0, products_1.getLowestPrice)(specialityGrass);
415
+ newItems = __spreadArray([
416
+ __assign(__assign(__assign(__assign(__assign(__assign({}, specialityGrass), { regular_price: __assign(__assign({}, specialityGrass.regular_price), { amount: newGrassRegPrice + specialityGrass.regular_price.amount }) }), (!!newGrassDiscountPrice
417
+ ? {
418
+ discount_price: __assign(__assign({}, (specialityGrass.discount_price || { currency: 'CAD' })), { amount: newGrassDiscountPrice })
419
+ }
420
+ : {})), (!!specialityGrass.promo_price
421
+ ? {
422
+ promo_price: __assign(__assign({}, specialityGrass.promo_price), { amount: specialityGrass.promo_price.amount + kentuckyPrice.price.amount })
423
+ }
424
+ : {})), (!!!isPro && !!kentuckyGrass.tier_pricing
425
+ ? {
426
+ tier_pricing: kentuckyGrass.tier_pricing.map(function (t) { return (__assign(__assign({}, t), { price: __assign(__assign({}, t.price), { amount: t.price.amount + getLowestPriceSpecialityGrass_1.price.amount }) })); })
427
+ }
428
+ : {})), { sub_items: __spreadArray([
429
+ __assign(__assign({}, kentuckyGrass), { hide_from_summary: true })
430
+ ], (specialityGrass.sub_items || []).slice(1), true) })
431
+ ], recursiveItems.slice(1), true);
432
+ }
433
+ return newItems;
434
+ };
435
+ exports.fuseGrassProducts = fuseGrassProducts;
436
+ var isMinQtyFee = function (slug) {
437
+ return ['minimum-facturable-commande', 'frais-minimum-gazon-pour-installation'].includes(slug);
438
+ };
439
+ exports.isMinQtyFee = isMinQtyFee;
440
+ var getAllMinGrassQuantities = function (grassProduct, isPro) {
441
+ return {
442
+ pickup: (0, expedition_1.getMinGrassQte)(grassProduct, 'pickup', isPro),
443
+ shipping: (0, expedition_1.getMinGrassQte)(grassProduct, 'shipping', isPro),
444
+ install: (0, expedition_1.getMinQteInstall)(isPro)
445
+ };
446
+ };
447
+ exports.getAllMinGrassQuantities = getAllMinGrassQuantities;
448
+ var getMinQtyFeeText = function (parent_slug, grassProduct, isPro, locale, expeditionMethod, shortVersion) {
449
+ if (parent_slug === void 0) { parent_slug = ''; }
450
+ if (locale === void 0) { locale = 'fr'; }
451
+ var type = parent_slug === 'frais-minimum-gazon-pour-installation' ? 'install' : 'order';
452
+ var minQuantities = (0, exports.getAllMinGrassQuantities)(grassProduct, isPro);
453
+ var localeSellUnit = (0, locale_1.translateILang)(pluralSellUnits.p2, locale);
454
+ var localeStepUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('roul'), locale).toLowerCase();
455
+ var localeMinUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('pal'), locale).toLowerCase();
456
+ var minQtyPallets = !!isPro ? 2 : 1;
457
+ var str = '';
458
+ var endStr = (0, locale_1.translateILang)({
459
+ fr: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum.",
460
+ en: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum."
461
+ }, locale);
462
+ if (!!!expeditionMethod && type === 'order' && minQuantities.pickup !== minQuantities.shipping) {
463
+ var strMinShipping = "".concat(minQuantities.shipping).concat(localeSellUnit, " (").concat(minQuantities.shipping / 740, " ").concat(localeMinUnit, ")");
464
+ var strMinPickup = !!minQuantities.pickup
465
+ ? "".concat(minQuantities.pickup).concat(localeSellUnit, " (").concat(minQuantities.pickup / 740, " ").concat(localeMinUnit, ")")
466
+ : '';
467
+ str = (0, locale_1.translateILang)({
468
+ fr: "Les commandes de gazon sont disponibles \u00E0 partir de 10".concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), mais le minimum facturable pour la livraison est de ").concat(strMinShipping).concat(!!strMinPickup ? " et de ".concat(strMinPickup, " pour la cueillette.") : ""),
469
+ en: "Sod orders are available starting at 10".concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), but the minimum chargeable for delivery is ").concat(strMinShipping).concat(!!strMinPickup ? " and ".concat(strMinPickup, " for pick-up.") : "")
470
+ }, locale);
471
+ if (!!!shortVersion) {
472
+ str += endStr;
473
+ }
474
+ return str;
475
+ }
476
+ str = (0, locale_1.translateILang)({
477
+ fr: "".concat(type === 'install'
478
+ ? "L'installation"
479
+ : expeditionMethod === 'pickup'
480
+ ? 'La cueillette'
481
+ : expeditionMethod === 'delivery'
482
+ ? 'La livraison'
483
+ : 'La commande', " de gazon est disponible \u00E0 partir de 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), mais le minimum facturable est de ").concat(type === 'install'
484
+ ? minQuantities.install
485
+ : expeditionMethod === 'pickup'
486
+ ? minQuantities.pickup
487
+ : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', "."),
488
+ en: "".concat(type === 'install'
489
+ ? 'Sod installation'
490
+ : expeditionMethod === 'pickup'
491
+ ? 'Sod pick-up'
492
+ : expeditionMethod === 'delivery'
493
+ ? 'Sod delivery'
494
+ : 'Sod ordering', " is available starting at 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), but the minimum billable is ").concat(type === 'install'
495
+ ? minQuantities.install
496
+ : expeditionMethod === 'pickup'
497
+ ? minQuantities.pickup
498
+ : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', ".")
499
+ }, locale);
500
+ if (!!!shortVersion) {
501
+ str += endStr;
502
+ }
503
+ return str;
504
+ };
505
+ exports.getMinQtyFeeText = getMinQtyFeeText;
506
+ var getMinQtyFeeAmountText = function (parent_slug, locale, servicesFees, showMinFeeAmount) {
507
+ if (parent_slug === void 0) { parent_slug = ''; }
508
+ if (locale === void 0) { locale = 'fr'; }
509
+ if (showMinFeeAmount === void 0) { showMinFeeAmount = true; }
510
+ var serviceOrFee = servicesFees.find(function (i) { return i.parent_slug === parent_slug; });
511
+ if (!!!serviceOrFee)
512
+ return '';
513
+ var amount = (0, toNumber_1.default)(serviceOrFee.regular_price.amount) * serviceOrFee.qte;
514
+ return (0, locale_1.translateILang)({
515
+ fr: "Une diff\u00E9rence de ".concat(!!showMinFeeAmount ? amount.toFixed(2) + '$' : '%LOADER%', "%BOLD% vous sera charg\u00E9e si la quantit\u00E9 de gazon au panier est plus petite que le minimum requis."),
516
+ en: "A difference of ".concat(!!showMinFeeAmount ? amount.toFixed(2) + '$' : '%LOADER%', "%BOLD% will be charged if the quantity of sod in the cart is less than the minimum required.")
517
+ }, locale);
518
+ };
519
+ exports.getMinQtyFeeAmountText = getMinQtyFeeAmountText;
520
+ var getGrassQteText = function (chosenDeclination, locale) {
521
+ if (locale === void 0) { locale = 'fr'; }
522
+ var txt = '';
523
+ var nbRolls = 0;
524
+ var nbSquareFeet = 0;
525
+ var units = !!!chosenDeclination ? [] : chosenDeclination.other_units;
526
+ if (!!units && !!units.length) {
527
+ var itemRolls = units.find(function (measure) { return measure.unit_slug === 'roul'; });
528
+ var itemSquareFeet = units.find(function (measure) { return measure.unit_slug === 'pal'; });
529
+ if (!!itemSquareFeet && !!itemSquareFeet.fitting_unit) {
530
+ nbSquareFeet = itemSquareFeet.fitting_unit;
531
+ }
532
+ if (!!itemRolls && !!itemRolls.fitting_unit && nbSquareFeet !== 0) {
533
+ nbRolls = nbSquareFeet / itemRolls.fitting_unit;
534
+ }
535
+ }
536
+ txt = (0, locale_1.translateILang)({
537
+ fr: 'Pour ce produit, vous devez commander par pieds carrés. Une palette = *nbRolls* rouleaux (*nbSquareFeet*pi2)',
538
+ en: 'For this product, you have to order by square feet. A pallet = *nbRolls* rolls (*nbSquareFeet*pi2)'
539
+ }, locale);
540
+ txt = txt.replace('*nbRolls*', String(nbRolls));
541
+ txt = txt.replace('*nbSquareFeet*', String(nbSquareFeet));
542
+ return txt;
543
+ };
544
+ exports.getGrassQteText = getGrassQteText;
545
+ var getGrassServicesFees = function (grassProduct, isPro, useFees, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, chosenGrass, baseGrass, customPriceList) { return __awaiter(void 0, void 0, void 0, function () {
546
+ var installItems, cart, applied;
547
+ return __generator(this, function (_a) {
548
+ switch (_a.label) {
549
+ case 0: return [4, (0, exports.getInstallationArray)(grassProduct.qte, (!!baseGrass ? baseGrass : chosenGrass).product_upsells, fetchProduct, locale, isPro, chosenGrass.sku, customPriceList, { engrais: true, roulage: true })];
550
+ case 1:
551
+ installItems = _a.sent();
552
+ cart = __assign(__assign({}, (0, Cart_1.getDefaultCart)()), { items: __spreadArray(__spreadArray([
553
+ chosenGrass
554
+ ], (!!baseGrass ? [baseGrass] : []), true), installItems.filter(function (item) { return !!!(0, exports.isMinQtyFee)(item.parent_slug || ''); }), true) });
555
+ return [4, (0, exports.fetchFeesBeforeCart)(!!useFees, cart, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, isPro, grassProduct, undefined, { useDefaultAddress: true }, customPriceList)];
556
+ case 2:
557
+ applied = _a.sent();
558
+ return [2, __spreadArray(__spreadArray([], installItems, true), applied.itemsToAdd, true)];
559
+ }
560
+ });
561
+ }); };
562
+ exports.getGrassServicesFees = getGrassServicesFees;
563
+ var getGrassSubQuestionsByType = function (type) {
564
+ if (type === 'pro') {
565
+ return products_2.otherGrassSubQuestions.filter(function (sub) { return !!sub.proOnly; });
566
+ }
567
+ return products_2.otherGrassSubQuestions.filter(function (sub) { return 'installation-gazon' === sub.associatedProductSlug || (!!sub.installOnly && !!!sub.proOnly); });
568
+ };
569
+ exports.getGrassSubQuestionsByType = getGrassSubQuestionsByType;
570
+ var handleGrassProductQtyRoundForShipping = function (cartData, grassProduct) {
571
+ if (!!!cartData || !!!grassProduct)
572
+ return;
573
+ var product = cartData.items.find(function (item) { return item.sku === grassProduct.sku; });
574
+ if (!!!product)
575
+ return;
576
+ var productOtherUnits = product.other_units;
577
+ if (!!!productOtherUnits)
578
+ return;
579
+ var palUnit = productOtherUnits.find(function (u) { return u.unit_slug === 'pal'; });
580
+ var rounded = (0, exports.roundGrassQte)(product.qte, !!!cartData.is_pickup, palUnit);
581
+ if (!!!rounded || rounded === grassProduct.qte)
582
+ return;
583
+ var itemsToChange = [];
584
+ var recursiveGrassItem = (0, cart_1.getRecursiveItems)(cartData.items).find(function (item) { return item.sku === grassProduct.sku; });
585
+ var getItemsToChange = function (item) {
586
+ if (!!item.sub_items) {
587
+ item.sub_items.forEach(function (subItem) { return getItemsToChange(subItem); });
588
+ }
589
+ if (item.parent_slug === 'frais-de-mobilisation') {
590
+ var totalPallet = (0, expedition_1.getPalletQty)(cartData.items.map(function (i) {
591
+ if ((0, exports.checkIfProductIsOfType)(i, 'gazon')) {
592
+ return __assign(__assign({}, i), { qte: rounded });
593
+ }
594
+ return i;
595
+ }), 'grass');
596
+ itemsToChange.push({
597
+ sku: item.sku,
598
+ qte: (0, ceil_1.default)(totalPallet / expedition_1.installationFeePalletTier)
599
+ });
600
+ return;
601
+ }
602
+ if (!!item.is_upsell_of_sku) {
603
+ var parentUpsellProd = cartData.items.find(function (i) { return i.sku === item.is_upsell_of_sku; });
604
+ if (!!parentUpsellProd) {
605
+ var sameUpsell = (parentUpsellProd.product_upsells || []).find(function (up) { return up.recommendation_sku === item.sku; });
606
+ if (!!sameUpsell) {
607
+ var anUpsellProduct = __assign(__assign(__assign(__assign({}, item), { parent_slug: sameUpsell.recommendation_parent_slug, recommended_qte: sameUpsell.recommendation_qty, recommended_sku: sameUpsell.recommendation_sku, matching_qte: !!sameUpsell.matching_qty, auto_add: sameUpsell.auto_add, auto_add_exceptions: sameUpsell.auto_add_exceptions, actual_qte: sameUpsell.actual_qty }), (!!sameUpsell.is_recommendation ? { is_recommendation: true } : {})), (!!sameUpsell.show_recommendation_msg ? { show_recommendation_msg: true } : {}));
608
+ var ratio = (0, upsells_1.calculateUpsellQte)(anUpsellProduct, rounded);
609
+ if (!!ratio) {
610
+ itemsToChange.push({
611
+ sku: item.sku,
612
+ qte: ratio
613
+ });
614
+ return;
615
+ }
616
+ }
617
+ }
618
+ }
619
+ itemsToChange.push({
620
+ sku: item.sku,
621
+ qte: rounded
622
+ });
623
+ return;
624
+ };
625
+ if (!!recursiveGrassItem) {
626
+ getItemsToChange(recursiveGrassItem);
627
+ }
628
+ return { rounded: rounded, itemsToChange: itemsToChange };
629
+ };
630
+ exports.handleGrassProductQtyRoundForShipping = handleGrassProductQtyRoundForShipping;
631
+ var roundGrassQte = function (currentQte, isShipping, palUnit) {
632
+ var newQte = currentQte;
633
+ switch (true) {
634
+ case currentQte < 1480:
635
+ var rest1480 = currentQte % 10;
636
+ if (rest1480 !== 0) {
637
+ newQte = currentQte - rest1480 + 10;
638
+ }
639
+ break;
640
+ case currentQte >= 1480 && !!!isShipping:
641
+ var rest1480Install = currentQte % 10;
642
+ if (rest1480Install !== 0) {
643
+ newQte = currentQte - rest1480Install + 10;
644
+ }
645
+ break;
646
+ case currentQte >= 1480:
647
+ if (!!palUnit && !!palUnit.fitting_unit) {
648
+ var rest1480_1 = currentQte % palUnit.fitting_unit;
649
+ if (rest1480_1 !== 0 && !!((rest1480_1 - 400) % palUnit.fitting_unit)) {
650
+ newQte = currentQte - rest1480_1;
651
+ if (newQte + 400 > currentQte) {
652
+ newQte = newQte + 400;
653
+ }
654
+ else if (newQte + palUnit.fitting_unit > currentQte) {
655
+ newQte = newQte + palUnit.fitting_unit;
656
+ }
657
+ }
658
+ }
659
+ break;
660
+ }
661
+ return newQte;
662
+ };
663
+ exports.roundGrassQte = roundGrassQte;
664
+ var getInstallationArray = function (qte, baseGrassUpsells, fetchProduct, locale, isPro, chosenSku, customPriceList, returnOtherFees) { return __awaiter(void 0, void 0, void 0, function () {
665
+ var upsell, installation_upsell, installation_parent, installation_decli, minQteInstall, arrayFinal, installation_array_1, installation_qte_array, closestQte_1, minimum_installation_fee, minInstallDecli, mobilisation_fee, mobilisationDecli, fertilisation, minFertilisationDecli, roullage, minRoulageDecli;
666
+ return __generator(this, function (_a) {
667
+ switch (_a.label) {
668
+ case 0:
669
+ upsell = baseGrassUpsells;
670
+ if (!!!upsell)
671
+ return [2, []];
672
+ installation_upsell = upsell.filter(function (upsell) { return upsell.recommendation_parent_slug === 'installation-gazon'; });
673
+ return [4, fetchProduct('installation-gazon', locale, true, true)];
674
+ case 1:
675
+ installation_parent = _a.sent();
676
+ minQteInstall = (0, expedition_1.getMinQteInstall)(isPro);
677
+ arrayFinal = [];
678
+ if (!(!!installation_parent && !!installation_upsell && !!installation_upsell.length)) return [3, 8];
679
+ installation_array_1 = [];
680
+ if (!!isPro) {
681
+ installation_array_1 = installation_parent.declinations.filter(function (decli) {
682
+ return !!decli.attributes &&
683
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
684
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('pro');
685
+ });
686
+ }
687
+ else {
688
+ installation_array_1 = installation_parent.declinations.filter(function (decli) {
689
+ return !!decli.attributes &&
690
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
691
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('au-detail');
692
+ });
693
+ }
694
+ installation_qte_array = installation_upsell.filter(function (upsell) {
695
+ return installation_array_1.find(function (decli) { return decli.sku === upsell.recommendation_sku; });
696
+ });
697
+ closestQte_1 = (0, maxBy_1.default)(installation_qte_array.filter(function (upsell) {
698
+ return upsell.actual_qty <= qte;
699
+ }), 'actual_qty');
700
+ if (!!!closestQte_1) return [3, 8];
701
+ installation_decli = installation_parent.declinations.find(function (decli) { return decli.sku === closestQte_1.recommendation_sku; });
702
+ if (!!installation_decli) {
703
+ if (!!isPro && !!customPriceList) {
704
+ installation_decli = (0, g2_1.checkForCustomPriceEquivalent)(installation_decli, customPriceList);
705
+ }
706
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(installation_decli, installation_parent.slug)) {
707
+ arrayFinal.push(__assign(__assign({}, installation_decli), { parent_slug: 'installation-gazon', qte: qte, is_upsell_of_sku: chosenSku, product_upsells: installation_parent.product_upsells }));
708
+ }
709
+ }
710
+ if (!(qte < minQteInstall)) return [3, 3];
711
+ return [4, fetchProduct('frais-minimum-gazon-pour-installation', locale, true, true)];
712
+ case 2:
713
+ minimum_installation_fee = _a.sent();
714
+ if (!!minimum_installation_fee) {
715
+ minInstallDecli = minimum_installation_fee.declinations[0];
716
+ minInstallDecli = __assign(__assign({}, minInstallDecli), { regular_price: __assign(__assign({}, minInstallDecli.regular_price), { amount: installation_decli.regular_price.amount }) });
717
+ if (!!isPro && !!customPriceList) {
718
+ minInstallDecli = (0, g2_1.checkForCustomPriceEquivalent)(__assign(__assign({}, minInstallDecli), { price_override: true }), customPriceList);
719
+ }
720
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(minInstallDecli, minimum_installation_fee.slug)) {
721
+ arrayFinal.push(__assign(__assign({}, minInstallDecli), { parent_slug: 'frais-minimum-gazon-pour-installation', qte: minQteInstall - qte, is_upsell_of_sku: installation_decli.sku, price_override: true }));
722
+ }
723
+ }
724
+ _a.label = 3;
725
+ case 3: return [4, fetchProduct('frais-de-mobilisation', locale, true, true)];
726
+ case 4:
727
+ mobilisation_fee = _a.sent();
728
+ if (!!mobilisation_fee && !!isPro) {
729
+ mobilisationDecli = mobilisation_fee.declinations[0];
730
+ if (!!customPriceList) {
731
+ mobilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(mobilisationDecli, customPriceList);
732
+ }
733
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(mobilisationDecli, mobilisation_fee.slug, true)) {
734
+ arrayFinal.push(__assign(__assign({}, mobilisationDecli), { parent_slug: 'frais-de-mobilisation', qte: (0, ceil_1.default)(qte > minQteInstall
735
+ ? qte / (740 * expedition_1.installationFeePalletTier)
736
+ : minQteInstall / (740 * expedition_1.installationFeePalletTier)), is_upsell_of_sku: installation_decli.sku, product_upsells: mobilisation_fee.product_upsells }));
737
+ }
738
+ }
739
+ if (!!!returnOtherFees) return [3, 8];
740
+ if (!!!returnOtherFees.engrais) return [3, 6];
741
+ return [4, fetchProduct('installation-fertilisation', locale, true, true)];
742
+ case 5:
743
+ fertilisation = _a.sent();
744
+ if (!!fertilisation) {
745
+ minFertilisationDecli = fertilisation.declinations[0];
746
+ if (!!isPro && !!customPriceList) {
747
+ minFertilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(minFertilisationDecli, customPriceList);
748
+ }
749
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(minFertilisationDecli, fertilisation.slug, true)) {
750
+ arrayFinal.push(__assign(__assign({}, minFertilisationDecli), { parent_slug: fertilisation.slug, qte: qte < minQteInstall ? minQteInstall : qte, is_upsell_of_sku: installation_decli.sku, product_upsells: fertilisation.product_upsells }));
751
+ }
752
+ }
753
+ _a.label = 6;
754
+ case 6:
755
+ if (!returnOtherFees.roulage) return [3, 8];
756
+ return [4, fetchProduct('installation-roulage', locale, true, true)];
757
+ case 7:
758
+ roullage = _a.sent();
759
+ if (!!roullage) {
760
+ minRoulageDecli = roullage.declinations[0];
761
+ if (!!isPro && !!customPriceList) {
762
+ minRoulageDecli = (0, g2_1.checkForCustomPriceEquivalent)(minRoulageDecli, customPriceList);
763
+ }
764
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(minRoulageDecli, roullage.slug, true)) {
765
+ arrayFinal.push(__assign(__assign({}, minRoulageDecli), { parent_slug: roullage.slug, qte: qte < minQteInstall ? minQteInstall : qte, is_upsell_of_sku: installation_decli.sku, product_upsells: roullage.product_upsells }));
766
+ }
767
+ }
768
+ _a.label = 8;
769
+ case 8: return [2, arrayFinal];
770
+ }
771
+ });
772
+ }); };
773
+ exports.getInstallationArray = getInstallationArray;
774
+ var getInstallItemPrice = function (parentSlug, servicesFees) {
775
+ var price = 0;
776
+ switch (parentSlug) {
777
+ case 'installation-gazon':
778
+ var itemsToUse = servicesFees.filter(function (i) { return i.parent_slug && ['installation-gazon', 'frais-de-mobilisation'].includes(i.parent_slug); });
779
+ if (!!itemsToUse) {
780
+ price = (0, sumBy_1.default)(itemsToUse, function (item) { return (0, products_1.getLowestPrice)(item).price.amount * item.qte; });
781
+ }
782
+ break;
783
+ default:
784
+ var itemToUse = servicesFees.find(function (i) { return i.parent_slug === parentSlug; });
785
+ if (!!itemToUse) {
786
+ price = (0, products_1.getLowestPrice)(itemToUse).price.amount * itemToUse.qte;
787
+ }
788
+ break;
789
+ }
790
+ return price;
791
+ };
792
+ exports.getInstallItemPrice = getInstallItemPrice;
793
+ var getConcreteQteText = function (declination, locale) {
794
+ if (locale === void 0) { locale = 'fr'; }
795
+ var txt = '';
796
+ if (!!!declination)
797
+ return txt;
798
+ var nbSaleUnitsPerCmdStep = 0;
799
+ var nbUnitsPerPal = 0;
800
+ var other_units = declination.other_units;
801
+ if (!!!other_units || !!!other_units.length) {
802
+ return '';
803
+ }
804
+ else {
805
+ var commandStep = other_units.find(function (unit) { return unit.is_command_step; });
806
+ var commandUnit = other_units.find(function (unit) { return unit.is_command_unit; });
807
+ var saleUnit = other_units.find(function (unit) { return unit.is_sale_unit; });
808
+ var unitsPerPal = other_units.find(function (unit) { return unit.unit_slug === 'pal'; });
809
+ if (!!commandStep &&
810
+ !!commandStep.fitting_unit &&
811
+ !!commandUnit &&
812
+ !!commandUnit.fitting_unit &&
813
+ !!saleUnit &&
814
+ !!saleUnit.fitting_unit &&
815
+ !!unitsPerPal &&
816
+ !!unitsPerPal.fitting_unit) {
817
+ var cmdSameAsSale = commandStep.unit_slug === saleUnit.unit_slug;
818
+ var nbP2PerRgSlug = !!cmdSameAsSale ? commandUnit.unit_slug : saleUnit.unit_slug;
819
+ nbSaleUnitsPerCmdStep = !!cmdSameAsSale
820
+ ? commandStep.fitting_unit / commandUnit.fitting_unit
821
+ : commandStep.fitting_unit / saleUnit.fitting_unit;
822
+ nbUnitsPerPal =
823
+ commandStep.fitting_unit == 1 && !!!commandStep.is_sale_unit
824
+ ? unitsPerPal.fitting_unit * (0, round_1.default)(nbSaleUnitsPerCmdStep, 2)
825
+ : unitsPerPal.fitting_unit / saleUnit.fitting_unit;
826
+ txt = (0, locale_1.translateILang)({
827
+ fr: 'Pour ce produit, vous devez commander par *cmdStep* (*nbUnitsPerCmdStep*).',
828
+ en: 'For this product, you have to order by *cmdStep* (*nbUnitsPerCmdStep*).'
829
+ }, locale);
830
+ if (unitsPerPal.unit_slug != commandStep.unit_slug) {
831
+ txt += (0, locale_1.translateILang)({
832
+ fr: ' Une palette = *nbUnitsPerPal*.',
833
+ en: ' A pallet = *nbUnitsPerPal*.'
834
+ }, locale);
835
+ }
836
+ txt = txt.replace('*cmdStep*', String("".concat((0, locale_1.translateILang)(inventories_1.unitDict[commandStep.unit_slug], locale).toLowerCase())));
837
+ txt = txt.replace('*nbUnitsPerCmdStep*', String("".concat((0, round_1.default)(nbSaleUnitsPerCmdStep, 2), " ").concat((0, locale_1.translateILang)(inventories_1.unitDict[nbP2PerRgSlug], locale).toLowerCase())));
838
+ txt = txt.replace('*nbUnitsPerPal*', String("".concat((0, round_1.default)(nbUnitsPerPal, 2), " ").concat((0, locale_1.translateILang)(inventories_1.unitDict[saleUnit.unit_slug], locale).toLowerCase())));
839
+ }
840
+ else {
841
+ return '';
842
+ }
843
+ }
844
+ return txt;
845
+ };
846
+ exports.getConcreteQteText = getConcreteQteText;
847
+ var getConcreteItemsByAvailability = function (cartData, availabilityType) {
848
+ return cartData.items.filter(function (i) {
849
+ return (i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY] &&
850
+ i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY][0] === availabilityType);
851
+ });
852
+ };
853
+ exports.getConcreteItemsByAvailability = getConcreteItemsByAvailability;
854
+ var getVracType = function (stores, cartData, getInventoryItemCallback) { return __awaiter(void 0, void 0, void 0, function () {
855
+ var items, allStoreIds, itemFormat, onlySteJulieNobel;
856
+ return __generator(this, function (_a) {
857
+ switch (_a.label) {
858
+ case 0:
859
+ items = cartData.items;
860
+ if (!!!items ||
861
+ !!!items.length ||
862
+ (!!!(0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, cartData) &&
863
+ !!!cartData.items.find(function (item) { return !!item.is_other_type && item.is_other_type === 'vrac'; })))
864
+ return [2];
865
+ allStoreIds = stores.map(function (store) { return store.id; });
866
+ itemFormat = '';
867
+ return [4, Promise.all(items.map(function (item) { return __awaiter(void 0, void 0, void 0, function () {
868
+ var productInventory, _a;
869
+ return __generator(this, function (_b) {
870
+ switch (_b.label) {
871
+ case 0:
872
+ if (!!!!item.is_service) return [3, 2];
873
+ return [4, getInventoryItemCallback(item.sku)];
874
+ case 1:
875
+ _a = _b.sent();
876
+ return [3, 3];
877
+ case 2:
878
+ _a = undefined;
879
+ _b.label = 3;
880
+ case 3:
881
+ productInventory = _a;
882
+ if (!!!productInventory)
883
+ return [2];
884
+ allStoreIds = allStoreIds.filter(function (id) {
885
+ var sameStoreInProdInventory = productInventory.inventories.find(function (i) { return i.store_id === id; });
886
+ if (!!!sameStoreInProdInventory)
887
+ return true;
888
+ return !!!sameStoreInProdInventory.unavailable_in_store;
889
+ });
890
+ if (!!!itemFormat && !!item.attributes && !!item.attributes[data_2.AttributesIdEnumGR.FORMATS]) {
891
+ itemFormat = item.attributes[data_2.AttributesIdEnumGR.FORMATS][0];
892
+ }
893
+ return [2];
894
+ }
895
+ });
896
+ }); }))];
897
+ case 1:
898
+ _a.sent();
899
+ onlySteJulieNobel = allStoreIds.length === 1 && allStoreIds[0] === 'sainte-julie-nobel';
900
+ if (!!itemFormat.includes('sac')) {
901
+ return [2, {
902
+ vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_SAC : products_3.VracTypeEnum.AUTRE_SAC,
903
+ vrac_store_ids: allStoreIds
904
+ }];
905
+ }
906
+ else {
907
+ return [2, {
908
+ vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_TONNE : products_3.VracTypeEnum.AUTRE_TONNE,
909
+ vrac_store_ids: allStoreIds
910
+ }];
911
+ }
912
+ return [2];
913
+ }
914
+ });
915
+ }); };
916
+ exports.getVracType = getVracType;
917
+ var fetchFeesBeforeCart = function (useFees, newCart, deliveryType, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, isPro, grassProduct, concreteOrder, settings, customPriceList) { return __awaiter(void 0, void 0, void 0, function () {
918
+ var cartContainsVrac, cartContainsInstallation, cartContainsSample, cartContainsAccessoriesOnly;
919
+ return __generator(this, function (_a) {
920
+ switch (_a.label) {
921
+ case 0:
922
+ cartContainsVrac = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, newCart);
923
+ cartContainsInstallation = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.INSTALLATION, newCart);
924
+ cartContainsSample = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.SAMPLE, newCart);
925
+ cartContainsAccessoriesOnly = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.ONLY_ACCESSORIES, newCart);
926
+ return [4, (0, expedition_1.applyFeesToCart)(fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, newCart, deliveryType, grassProduct, concreteOrder, deliveryType === 'pickup' ? false : cartContainsInstallation, cartContainsVrac, isPro, deliveryType === 'pickup' ? !!settings && !!settings.addOnePalletToPickup : false, cartContainsSample, !!settings ? !!settings.saveToShippingPayload : false, !!!settings
927
+ ? undefined
928
+ : !!settings.useDefaultAddress
929
+ ? data_1.defaultVracStoreAddress
930
+ : !!settings.useDeliveryAddress && !!newCart.shipping_address
931
+ ? newCart.shipping_address.address
932
+ : undefined, locale, undefined, false, cartContainsAccessoriesOnly, undefined, allStores, customPriceList, !!useFees)];
933
+ case 1: return [2, _a.sent()];
934
+ }
935
+ });
936
+ }); };
937
+ exports.fetchFeesBeforeCart = fetchFeesBeforeCart;
938
+ var shouldShowProCustomPromo = function (userData, isPro, product, customMinPrice) {
939
+ if (!!!product || !!!isPro || !!!userData)
940
+ return false;
941
+ if (!!customMinPrice) {
942
+ if (customMinPrice.type === G2_1.CustomPriceItemTypeEnum.REG && customMinPrice.code2 !== 'NET')
943
+ return false;
944
+ return true;
945
+ }
946
+ var customerGroup = (0, object_1.recursiveCheckObject)(userData, 'userData.basic_info.customer_professionnal_info.external_customer_group');
947
+ var customerType = !!customerGroup ? (0, g2_1.getG2CustomerTypeFromCode)(customerGroup) : undefined;
948
+ var prodPriceClass = !!product.price_classes_range
949
+ ? product.price_classes_range.find(function (range) {
950
+ return !!customerType && range.external_slug ? range.external_slug === customerType : range.class === 'aspirant';
951
+ })
952
+ : !!product.prices_list
953
+ ? product.prices_list.find(function (range) {
954
+ return !!customerType && range.external_slug ? range.external_slug === customerType : range.group_id === 'aspirant';
955
+ })
956
+ : undefined;
957
+ return !!prodPriceClass && !!prodPriceClass.custom_promo_applies;
958
+ };
959
+ exports.shouldShowProCustomPromo = shouldShowProCustomPromo;
960
+ var applyProCustomPromo = function (decli, userData) {
961
+ var customerCode = userData.basic_info.customer_professionnal_info &&
962
+ userData.basic_info.customer_professionnal_info.external_customer_group;
963
+ if (!!!customerCode)
964
+ return {};
965
+ var customerCustomPromo = (0, g2_1.getG2DiscountFromCode)(customerCode);
966
+ if (!!!customerCustomPromo)
967
+ return {};
968
+ var regPrice = decli.regular_price.amount;
969
+ var newDiscountAmount = (0, toNumber_1.default)(regPrice) * ((100 - customerCustomPromo) / 100);
970
+ var newPromoObj = (0, IDiscountRule_1.getDefaultDiscountRule)('product');
971
+ newPromoObj = __assign(__assign({}, newPromoObj), { appliesTo: __assign(__assign({}, newPromoObj.appliesTo), { label: IDiscountRule_1.AppliesToEnum.PRODUCT, value: decli.sku }), rules: [
972
+ {
973
+ field: IDiscountRule_1.RuleFieldEnum.CUSTOMER,
974
+ condition: IDiscountRule_1.RuleConditionEnum.AND,
975
+ ruleDetails: [
976
+ {
977
+ operator: '==',
978
+ value: [userData.id],
979
+ condition: IDiscountRule_1.RuleConditionEnum.AND
980
+ }
981
+ ]
982
+ }
983
+ ], result: {
984
+ action: IDiscountRule_1.ResultActionEnum.PERCENT,
985
+ action_value: customerCustomPromo
986
+ } });
987
+ return {
988
+ discount_rules: [newPromoObj],
989
+ promo_price: {
990
+ currency: 'CAD',
991
+ amount: (0, round_1.default)(newDiscountAmount, 3)
992
+ }
993
+ };
994
+ };
995
+ exports.applyProCustomPromo = applyProCustomPromo;
996
+ var getFormattedProdGR = function (decli, productSlug, isPro) {
997
+ var promo_price = decli.promo_price, discount_price = decli.discount_price, tier_pricing = decli.tier_pricing, rest = __rest(decli, ["promo_price", "discount_price", "tier_pricing"]);
998
+ return !!isPro ? __assign(__assign({}, rest), (productSlug !== 'kentucky' ? { tier_pricing: tier_pricing } : {})) : decli;
999
+ };
1000
+ exports.getFormattedProdGR = getFormattedProdGR;
1001
+ var shouldHideItemIfRegPriceIs0 = function (item, productSlug, isUpsellOfInstallProd) {
1002
+ var regPriceIs0 = item.regular_price.amount == 0;
1003
+ if (!regPriceIs0)
1004
+ return false;
1005
+ if (!item.is_service)
1006
+ return false;
1007
+ if (!!isUpsellOfInstallProd)
1008
+ return false;
1009
+ if (expedition_1.slugsToCheckFromExpeditionFees.shipping.includes(productSlug))
1010
+ return false;
1011
+ return true;
1012
+ };
1013
+ exports.shouldHideItemIfRegPriceIs0 = shouldHideItemIfRegPriceIs0;
1014
1014
  //# sourceMappingURL=products.js.map