addio-admin-sdk 1.6.39 → 1.6.41

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 (502) 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 +390 -390
  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 +313 -313
  205. package/dist/Interfaces/Space/index.js +78 -78
  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 +835 -835
  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 +3766 -3722
  262. package/dist/lib/Cart/index.js.map +1 -1
  263. package/dist/lib/Catalogue/index.d.ts +9 -9
  264. package/dist/lib/Catalogue/index.js +208 -208
  265. package/dist/lib/Category/index.d.ts +26 -26
  266. package/dist/lib/Category/index.js +361 -361
  267. package/dist/lib/Class/index.d.ts +12 -12
  268. package/dist/lib/Class/index.js +159 -159
  269. package/dist/lib/Consent/index.d.ts +4 -4
  270. package/dist/lib/Consent/index.js +79 -79
  271. package/dist/lib/Customer/index.d.ts +10 -10
  272. package/dist/lib/Customer/index.js +147 -147
  273. package/dist/lib/Declination/index.d.ts +10 -10
  274. package/dist/lib/Declination/index.js +85 -85
  275. package/dist/lib/Discount/index.d.ts +18 -18
  276. package/dist/lib/Discount/index.js +759 -759
  277. package/dist/lib/ElasticSearch/index.d.ts +8 -8
  278. package/dist/lib/ElasticSearch/index.js +101 -101
  279. package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
  280. package/dist/lib/Email/AbandonedCartEmail.js +78 -78
  281. package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
  282. package/dist/lib/Email/AccountConfirmationEmail.js +95 -95
  283. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
  284. package/dist/lib/Email/AdminOrderConfirmationEmail.js +78 -78
  285. package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
  286. package/dist/lib/Email/ApplicationEmail.js +78 -78
  287. package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
  288. package/dist/lib/Email/BackInStockEmail.js +78 -78
  289. package/dist/lib/Email/ContactEmail.d.ts +8 -8
  290. package/dist/lib/Email/ContactEmail.js +78 -78
  291. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
  292. package/dist/lib/Email/CustomerBookingAdminEmail.js +78 -78
  293. package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
  294. package/dist/lib/Email/CustomerBookingEmail.js +78 -78
  295. package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
  296. package/dist/lib/Email/OrderConfirmationEmail.js +78 -78
  297. package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
  298. package/dist/lib/Email/OrderDenounciationEmail.js +78 -78
  299. package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
  300. package/dist/lib/Email/OrderSampleEmail.js +78 -78
  301. package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
  302. package/dist/lib/Email/OtherTypeEmails.js +90 -90
  303. package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
  304. package/dist/lib/Email/PasswordResetEmail.js +78 -78
  305. package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
  306. package/dist/lib/Email/PhotoShootEmail.js +78 -78
  307. package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
  308. package/dist/lib/Email/PickUpConfirmation.js +78 -78
  309. package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
  310. package/dist/lib/Email/ShippingConfirmation.js +78 -78
  311. package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
  312. package/dist/lib/Email/WelcomeEmail.js +78 -78
  313. package/dist/lib/Email/index.d.ts +8 -8
  314. package/dist/lib/Email/index.js +82 -82
  315. package/dist/lib/ExternalService/Ebay.d.ts +63 -63
  316. package/dist/lib/ExternalService/Ebay.js +185 -185
  317. package/dist/lib/ExternalService/index.d.ts +5 -5
  318. package/dist/lib/ExternalService/index.js +28 -28
  319. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  320. package/dist/lib/Indexed/IndexedCart.js +194 -194
  321. package/dist/lib/Indexed/Product.d.ts +17 -17
  322. package/dist/lib/Indexed/Product.js +116 -116
  323. package/dist/lib/Inventory/index.d.ts +31 -31
  324. package/dist/lib/Inventory/index.js +560 -560
  325. package/dist/lib/Invoice/index.d.ts +5 -5
  326. package/dist/lib/Invoice/index.js +28 -28
  327. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  328. package/dist/lib/MarketplacePublication/index.js +221 -221
  329. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  330. package/dist/lib/MongoDB/BaseAPI.js +308 -308
  331. package/dist/lib/Order/index.d.ts +7 -7
  332. package/dist/lib/Order/index.js +62 -62
  333. package/dist/lib/Org/index.d.ts +26 -26
  334. package/dist/lib/Org/index.js +283 -283
  335. package/dist/lib/PandaPay/index.d.ts +16 -16
  336. package/dist/lib/PandaPay/index.js +219 -219
  337. package/dist/lib/Paysafe/index.d.ts +11 -11
  338. package/dist/lib/Paysafe/index.js +100 -100
  339. package/dist/lib/Product/index.d.ts +143 -143
  340. package/dist/lib/Product/index.js +1326 -1326
  341. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  342. package/dist/lib/ProductAttribute/index.js +114 -114
  343. package/dist/lib/PromiseToPurchase/index.d.ts +35 -35
  344. package/dist/lib/PromiseToPurchase/index.js +474 -474
  345. package/dist/lib/PurchaseOrder/index.d.ts +9 -9
  346. package/dist/lib/PurchaseOrder/index.js +72 -72
  347. package/dist/lib/Queue/index.d.ts +40 -40
  348. package/dist/lib/Queue/index.js +254 -254
  349. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  350. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  351. package/dist/lib/Service/index.d.ts +5 -5
  352. package/dist/lib/Service/index.js +57 -57
  353. package/dist/lib/Shipment/index.d.ts +28 -28
  354. package/dist/lib/Shipment/index.js +559 -559
  355. package/dist/lib/Slider/index.d.ts +16 -16
  356. package/dist/lib/Slider/index.js +235 -235
  357. package/dist/lib/Space/index.d.ts +769 -769
  358. package/dist/lib/Space/index.js +6689 -6689
  359. package/dist/lib/StockNotification/index.d.ts +4 -4
  360. package/dist/lib/StockNotification/index.js +26 -26
  361. package/dist/lib/Store/index.d.ts +5 -5
  362. package/dist/lib/Store/index.js +30 -30
  363. package/dist/lib/Supplier/Command.d.ts +5 -5
  364. package/dist/lib/Supplier/Command.js +28 -28
  365. package/dist/lib/Supplier/index.d.ts +25 -25
  366. package/dist/lib/Supplier/index.js +92 -92
  367. package/dist/lib/Tags/index.d.ts +6 -6
  368. package/dist/lib/Tags/index.js +84 -84
  369. package/dist/lib/Tax/index.d.ts +8 -8
  370. package/dist/lib/Tax/index.js +136 -136
  371. package/dist/lib/TransferRequest/index.d.ts +21 -21
  372. package/dist/lib/TransferRequest/index.js +302 -302
  373. package/dist/lib/Update/index.d.ts +10 -10
  374. package/dist/lib/Update/index.js +71 -71
  375. package/dist/lib/User/index.d.ts +33 -33
  376. package/dist/lib/User/index.js +360 -360
  377. package/dist/lib/Wishlist/index.d.ts +5 -5
  378. package/dist/lib/Wishlist/index.js +28 -28
  379. package/dist/lib/base.d.ts +14 -14
  380. package/dist/lib/base.js +135 -135
  381. package/dist/lib/baseService.d.ts +17 -17
  382. package/dist/lib/baseService.js +114 -114
  383. package/dist/rules/GR/constants/data.d.ts +28 -28
  384. package/dist/rules/GR/constants/data.js +57 -57
  385. package/dist/rules/GR/constants/products.d.ts +8 -8
  386. package/dist/rules/GR/constants/products.js +234 -234
  387. package/dist/rules/GR/interfaces/cart.d.ts +68 -68
  388. package/dist/rules/GR/interfaces/cart.js +49 -49
  389. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  390. package/dist/rules/GR/interfaces/data.js +104 -104
  391. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  392. package/dist/rules/GR/interfaces/products.js +10 -10
  393. package/dist/rules/GR/utils/cart.d.ts +39 -39
  394. package/dist/rules/GR/utils/cart.js +661 -661
  395. package/dist/rules/GR/utils/data.d.ts +3 -3
  396. package/dist/rules/GR/utils/data.js +25 -25
  397. package/dist/rules/GR/utils/expedition.d.ts +70 -70
  398. package/dist/rules/GR/utils/expedition.js +1584 -1584
  399. package/dist/rules/GR/utils/g2.d.ts +153 -153
  400. package/dist/rules/GR/utils/g2.js +920 -920
  401. package/dist/rules/GR/utils/invoices.d.ts +5 -5
  402. package/dist/rules/GR/utils/invoices.js +123 -123
  403. package/dist/rules/GR/utils/products.d.ts +105 -105
  404. package/dist/rules/GR/utils/products.js +1025 -1025
  405. package/dist/rules/GR/utils/upsells.d.ts +75 -75
  406. package/dist/rules/GR/utils/upsells.js +278 -278
  407. package/dist/services/database/BaseProvider.d.ts +28 -28
  408. package/dist/services/database/BaseProvider.js +77 -77
  409. package/dist/services/database/BatchUtils.d.ts +14 -14
  410. package/dist/services/database/BatchUtils.js +88 -88
  411. package/dist/services/database/Config.d.ts +2 -2
  412. package/dist/services/database/Config.js +5 -5
  413. package/dist/services/database/DatabaseService.d.ts +42 -42
  414. package/dist/services/database/DatabaseService.js +311 -311
  415. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  416. package/dist/services/database/FirebaseProvider.js +312 -312
  417. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  418. package/dist/services/database/NotFirebaseProvider.js +367 -367
  419. package/dist/services/logs/index.d.ts +11 -11
  420. package/dist/services/logs/index.js +85 -85
  421. package/dist/utils/algolia.d.ts +6 -6
  422. package/dist/utils/algolia.js +22 -22
  423. package/dist/utils/anonymisation.d.ts +30 -30
  424. package/dist/utils/anonymisation.js +269 -269
  425. package/dist/utils/array.d.ts +5 -5
  426. package/dist/utils/array.js +36 -36
  427. package/dist/utils/aws.d.ts +14 -14
  428. package/dist/utils/aws.js +220 -220
  429. package/dist/utils/booking.d.ts +22 -22
  430. package/dist/utils/booking.js +175 -175
  431. package/dist/utils/cart.d.ts +519 -519
  432. package/dist/utils/cart.js +508 -508
  433. package/dist/utils/cmv.d.ts +10 -10
  434. package/dist/utils/cmv.js +107 -107
  435. package/dist/utils/console.d.ts +6 -6
  436. package/dist/utils/console.js +121 -121
  437. package/dist/utils/context.d.ts +19 -19
  438. package/dist/utils/context.js +41 -41
  439. package/dist/utils/currency.d.ts +6 -6
  440. package/dist/utils/currency.js +62 -62
  441. package/dist/utils/data.d.ts +40 -40
  442. package/dist/utils/data.js +233 -233
  443. package/dist/utils/date.d.ts +1 -1
  444. package/dist/utils/date.js +16 -16
  445. package/dist/utils/dimensions.d.ts +3 -3
  446. package/dist/utils/dimensions.js +18 -18
  447. package/dist/utils/discount.d.ts +33 -33
  448. package/dist/utils/discount.js +919 -919
  449. package/dist/utils/errors.d.ts +113 -113
  450. package/dist/utils/errors.js +113 -113
  451. package/dist/utils/file-admin.d.ts +8 -8
  452. package/dist/utils/file-admin.js +94 -94
  453. package/dist/utils/file.d.ts +38 -38
  454. package/dist/utils/file.js +318 -318
  455. package/dist/utils/firebase-admin.d.ts +2 -2
  456. package/dist/utils/firebase-admin.js +118 -118
  457. package/dist/utils/firebase.d.ts +41 -41
  458. package/dist/utils/firebase.js +220 -220
  459. package/dist/utils/import.d.ts +1 -1
  460. package/dist/utils/import.js +81 -81
  461. package/dist/utils/inventories.d.ts +26 -26
  462. package/dist/utils/inventories.js +368 -368
  463. package/dist/utils/locale.d.ts +13 -13
  464. package/dist/utils/locale.js +67 -67
  465. package/dist/utils/mailchimp.d.ts +57 -57
  466. package/dist/utils/mailchimp.js +735 -735
  467. package/dist/utils/mongodb.d.ts +1 -1
  468. package/dist/utils/mongodb.js +68 -68
  469. package/dist/utils/object.d.ts +12 -12
  470. package/dist/utils/object.js +129 -129
  471. package/dist/utils/payment.d.ts +10 -10
  472. package/dist/utils/payment.js +25 -25
  473. package/dist/utils/products.d.ts +26 -26
  474. package/dist/utils/products.js +301 -301
  475. package/dist/utils/promiseToPurchase.d.ts +56 -56
  476. package/dist/utils/promiseToPurchase.js +228 -228
  477. package/dist/utils/prosprsearch.d.ts +21 -21
  478. package/dist/utils/prosprsearch.js +276 -276
  479. package/dist/utils/sdc.d.ts +10 -10
  480. package/dist/utils/sdc.js +1308 -1308
  481. package/dist/utils/searchIndexes.d.ts +20 -20
  482. package/dist/utils/searchIndexes.js +273 -273
  483. package/dist/utils/services.d.ts +40 -40
  484. package/dist/utils/services.js +407 -407
  485. package/dist/utils/shipment.d.ts +110 -110
  486. package/dist/utils/shipment.js +410 -410
  487. package/dist/utils/simpletexting.d.ts +2 -2
  488. package/dist/utils/simpletexting.js +88 -88
  489. package/dist/utils/sliders.d.ts +4 -4
  490. package/dist/utils/sliders.js +70 -70
  491. package/dist/utils/string.d.ts +16 -16
  492. package/dist/utils/string.js +194 -194
  493. package/dist/utils/update.d.ts +7 -7
  494. package/dist/utils/update.js +244 -244
  495. package/dist/utils/weight.d.ts +3 -3
  496. package/dist/utils/weight.js +18 -18
  497. package/dist/utils/zones.d.ts +10 -10
  498. package/dist/utils/zones.js +287 -287
  499. package/package.json +106 -106
  500. package/publish.sh +143 -143
  501. package/readme.md +182 -182
  502. package/.env +0 -17
@@ -1,1026 +1,1026 @@
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 cmdStepFittingUnit = commandStep.fitting_unit;
207
- var saleFittingUnit = saleUnit.fitting_unit;
208
- var nbSaleUnitPerCmdStep = (0, round_1.default)(cmdStepFittingUnit / saleFittingUnit, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0);
209
- var roundedValue = value === 0
210
- ? 0
211
- : _roundNbSaleUnitPerCmdStep(value, nbSaleUnitPerCmdStep, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug));
212
- var commandUnitQty = undefined;
213
- if (!!commandUnit && !!commandUnit.fitting_unit) {
214
- if (value === 0) {
215
- commandUnitQty = 0;
216
- }
217
- else if (saleFittingUnit == 1) {
218
- commandUnitQty = (0, round_1.default)(roundedValue / commandUnit.fitting_unit, (0, exports.productUnitSupportsDecimals)(commandUnit.unit_slug) ? 2 : 0);
219
- }
220
- else {
221
- commandUnitQty = roundedValue * (0, round_1.default)(cmdStepFittingUnit / commandUnit.fitting_unit, 2);
222
- }
223
- }
224
- roundedQuantities = {
225
- qte1: roundedValue,
226
- qte2: commandUnitQty
227
- };
228
- }
229
- return roundedQuantities;
230
- };
231
- exports.getRoundedProductQuantities = getRoundedProductQuantities;
232
- var _roundNbSaleUnitPerCmdStep = function (value, nbSaleUnitPerCmdStep, supportsDecimals) {
233
- var rounded = (0, round_1.default)(value / nbSaleUnitPerCmdStep, !!supportsDecimals ? 2 : 0) * nbSaleUnitPerCmdStep;
234
- var roundedUp = Math.ceil(value / nbSaleUnitPerCmdStep) * nbSaleUnitPerCmdStep;
235
- if (rounded == 0 && roundedUp > 0)
236
- return roundedUp;
237
- if ((0, round_1.default)(rounded, !!supportsDecimals ? 2 : 0) % nbSaleUnitPerCmdStep == 0)
238
- return rounded;
239
- return roundedUp;
240
- };
241
- var splitOnDashes = function (stringToSplit, dummyStringToReplace) {
242
- if (dummyStringToReplace === void 0) { dummyStringToReplace = { currentValue: '%%-%%', newValue: ' - ' }; }
243
- var splited = stringToSplit.split(' - ');
244
- if (splited.length === 1)
245
- splited = stringToSplit.split(' -');
246
- if (splited.length === 1)
247
- splited = stringToSplit.split('- ');
248
- return __spreadArray([
249
- splited[0].replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)
250
- ], (!!splited[1]
251
- ? [splited.slice(1).join(' - ').replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)]
252
- : []), true);
253
- };
254
- exports.splitOnDashes = splitOnDashes;
255
- var getProdName = function (product, locale) {
256
- var name;
257
- if (!!product.full_name) {
258
- name = (0, locale_1.getLocaleOfDictionnary)(product.full_name, locale);
259
- }
260
- else {
261
- name = (0, locale_1.getLocaleOfDictionnary)(product.name, locale);
262
- if (!!product.use_parent && !!product.parent_name) {
263
- if (typeof product.parent_name === 'string') {
264
- name = product.parent_name;
265
- }
266
- }
267
- }
268
- var newNameArray = [];
269
- var dashesToFind = [' - ', '- ', ' -'];
270
- if (name.includes('(')) {
271
- var newStr = '';
272
- var strWithParenthesisToCheck = name;
273
- while (strWithParenthesisToCheck.includes('(')) {
274
- var positionStart = strWithParenthesisToCheck.indexOf('(');
275
- var positionEnd = strWithParenthesisToCheck.indexOf(')');
276
- var substrToCheck = strWithParenthesisToCheck.substring(positionStart, positionEnd + 1);
277
- for (var _i = 0, dashesToFind_1 = dashesToFind; _i < dashesToFind_1.length; _i++) {
278
- var dash = dashesToFind_1[_i];
279
- substrToCheck = substrToCheck.replace(dash, '-');
280
- }
281
- newStr += strWithParenthesisToCheck.substring(0, positionStart) + substrToCheck;
282
- strWithParenthesisToCheck =
283
- positionEnd === strWithParenthesisToCheck.length - 1 ? '' : strWithParenthesisToCheck.substring(positionEnd + 1);
284
- }
285
- newStr += strWithParenthesisToCheck;
286
- var positionOfFirst = newStr.indexOf(')');
287
- var firstPart_1 = newStr.substring(0, positionOfFirst);
288
- if (positionOfFirst !== newStr.length - 1 && dashesToFind.some(function (str) { return firstPart_1.includes(str); })) {
289
- var secondPart = newStr.substring(positionOfFirst);
290
- for (var _a = 0, dashesToFind_2 = dashesToFind; _a < dashesToFind_2.length; _a++) {
291
- var str = dashesToFind_2[_a];
292
- firstPart_1.replace(str, '%%-%%');
293
- }
294
- newNameArray = (0, exports.splitOnDashes)("".concat(firstPart_1).concat(secondPart));
295
- }
296
- else {
297
- newNameArray = (0, exports.splitOnDashes)(newStr);
298
- }
299
- }
300
- else {
301
- newNameArray = (0, exports.splitOnDashes)(name);
302
- }
303
- return newNameArray;
304
- };
305
- exports.getProdName = getProdName;
306
- var getParentProductCategoryGroup = function (prod) {
307
- var type = 'other';
308
- if (!!prod.categories && !!prod.categories['lvl0']) {
309
- var categorySlug = prod.categories['lvl0'];
310
- switch (categorySlug) {
311
- case 'gazon':
312
- if (!!(0, exports.checkIfProductIsOfType)(prod, 'gazon')) {
313
- type = 'gazon';
314
- }
315
- break;
316
- case 'amenagement-paysager':
317
- if (!!(0, exports.checkIfProductIsOfType)(prod, 'beton')) {
318
- type = 'beton';
319
- }
320
- break;
321
- default:
322
- if (!!(0, exports.checkIfProductIsOfType)(prod, 'vrac')) {
323
- type = 'vrac';
324
- }
325
- break;
326
- }
327
- }
328
- return type;
329
- };
330
- exports.getParentProductCategoryGroup = getParentProductCategoryGroup;
331
- var getProductFormOptions = function (product, attributes) {
332
- var allColorOptions = [];
333
- var allDimensionOptions = [];
334
- var allFormatOptions = [];
335
- var product_attributes = (0, exports.getProductAttributes)(product);
336
- var overridenAttributes = product.declinations
337
- .map(function (declination) { return declination.overriden_attributes; })
338
- .filter(function (ova) { return !!ova; });
339
- overridenAttributes = (0, flatten_1.default)(overridenAttributes);
340
- overridenAttributes = (0, uniqBy_1.default)(overridenAttributes, 'slug');
341
- var getOverriddenValues = function (prodAttributes, attrId) {
342
- var overridenOptions = !!overridenAttributes.length
343
- ? overridenAttributes.filter(function (attr) { return attr.id === attrId; })
344
- : [];
345
- var finalOptions = [];
346
- for (var _i = 0, prodAttributes_1 = prodAttributes; _i < prodAttributes_1.length; _i++) {
347
- var attr = prodAttributes_1[_i];
348
- var isOverridden = false;
349
- for (var _a = 0, overridenOptions_1 = overridenOptions; _a < overridenOptions_1.length; _a++) {
350
- var ovOption = overridenOptions_1[_a];
351
- if (!isOverridden) {
352
- if (!!attr && attr.slug === ovOption.slug) {
353
- isOverridden = true;
354
- finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [
355
- __assign(__assign({}, attr), { other_details: __assign(__assign({}, attr.other_details), { image: ovOption.overriden_values }) })
356
- ], false);
357
- }
358
- }
359
- }
360
- if (!isOverridden) {
361
- finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [attr], false);
362
- }
363
- }
364
- return finalOptions;
365
- };
366
- var subColorsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.SUBCOLOR; });
367
- if (!!subColorsAttr) {
368
- var subColors = subColorsAttr.values;
369
- var colorsAttributes = subColors.filter(function (sub) { return product_attributes.colors.includes(sub.slug); });
370
- var finalColors = getOverriddenValues(colorsAttributes, data_2.AttributesIdEnumGR.SUBCOLOR);
371
- allColorOptions = (0, orderBy_1.default)(finalColors, function (color) {
372
- return product.declinations.findIndex(function (d) { return d.attributes[data_2.AttributesIdEnumGR.SUBCOLOR].includes(color.slug); });
373
- });
374
- }
375
- var dimensionsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.DIMENSIONS; });
376
- if (!!dimensionsAttr) {
377
- var dimensions = dimensionsAttr.values;
378
- var dimensionsAttributes = dimensions.filter(function (d) { return product_attributes.dimensions.includes(d.slug); });
379
- var finalDimensions = getOverriddenValues(dimensionsAttributes, data_2.AttributesIdEnumGR.DIMENSIONS);
380
- allDimensionOptions = finalDimensions;
381
- }
382
- var formatsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.FORMATS; });
383
- if (!!formatsAttr) {
384
- var formats = formatsAttr.values;
385
- allFormatOptions = formats.filter(function (f) { return product_attributes.formats.includes(f.slug); });
386
- }
387
- return {
388
- allColors: allColorOptions,
389
- allDimensions: allDimensionOptions,
390
- allFormats: allFormatOptions
391
- };
392
- };
393
- exports.getProductFormOptions = getProductFormOptions;
394
- var checkIfProductIsOfType = function (product, type, excludeUndefined) {
395
- var attr = !!product && !!product.attributes ? product.attributes : {};
396
- if (!!!attr[data_2.AttributesIdEnumGR.TYPE] && !!excludeUndefined)
397
- return true;
398
- return (!!attr[data_2.AttributesIdEnumGR.TYPE] &&
399
- Array.isArray(attr[data_2.AttributesIdEnumGR.TYPE]) &&
400
- attr[data_2.AttributesIdEnumGR.TYPE].includes(type));
401
- };
402
- exports.checkIfProductIsOfType = checkIfProductIsOfType;
403
- var checkIfProductIsInstallation = function (item) {
404
- return !!item.is_service && !!item.parent_slug && !!item.parent_slug.includes('installation');
405
- };
406
- exports.checkIfProductIsInstallation = checkIfProductIsInstallation;
407
- var getAllInstallFromItems = function (items) {
408
- return items.filter(function (i) {
409
- return (!!i.parent_slug && products_2.installationProductsSlugs.includes(i.parent_slug)) ||
410
- Object.values(products_2.installationProSpecSkus).includes(i.sku);
411
- });
412
- };
413
- exports.getAllInstallFromItems = getAllInstallFromItems;
414
- var fuseGrassProducts = function (recursiveItems, isPro) {
415
- var specialityGrass = recursiveItems[0];
416
- var kentuckyGrass = (specialityGrass.sub_items || []).find(function (sub) { return sub.sku === products_2.kentucky; });
417
- var newItems = [];
418
- if (!!kentuckyGrass) {
419
- var kentuckyPrice = (0, products_1.getLowestPrice)(kentuckyGrass);
420
- var regPriceKentucky = kentuckyGrass.regular_price.amount;
421
- var newGrassRegPrice = !!kentuckyPrice.promo ? regPriceKentucky : kentuckyPrice.price.amount;
422
- var newGrassDiscountPrice = (!!specialityGrass.discount_price
423
- ? specialityGrass.discount_price.amount
424
- : specialityGrass.regular_price.amount) +
425
- (!!kentuckyPrice.promo ? kentuckyPrice.price.amount : regPriceKentucky);
426
- var getLowestPriceSpecialityGrass_1 = (0, products_1.getLowestPrice)(specialityGrass);
427
- newItems = __spreadArray([
428
- __assign(__assign(__assign(__assign(__assign(__assign({}, specialityGrass), { regular_price: __assign(__assign({}, specialityGrass.regular_price), { amount: newGrassRegPrice + specialityGrass.regular_price.amount }) }), (!!newGrassDiscountPrice
429
- ? {
430
- discount_price: __assign(__assign({}, (specialityGrass.discount_price || { currency: 'CAD' })), { amount: newGrassDiscountPrice })
431
- }
432
- : {})), (!!specialityGrass.promo_price
433
- ? {
434
- promo_price: __assign(__assign({}, specialityGrass.promo_price), { amount: specialityGrass.promo_price.amount + kentuckyPrice.price.amount })
435
- }
436
- : {})), (!!!isPro && !!kentuckyGrass.tier_pricing
437
- ? {
438
- 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 }) })); })
439
- }
440
- : {})), { sub_items: __spreadArray([
441
- __assign(__assign({}, kentuckyGrass), { hide_from_summary: true })
442
- ], (specialityGrass.sub_items || []).slice(1), true) })
443
- ], recursiveItems.slice(1), true);
444
- }
445
- return newItems;
446
- };
447
- exports.fuseGrassProducts = fuseGrassProducts;
448
- var isMinQtyFee = function (slug) {
449
- return ['minimum-facturable-commande', 'frais-minimum-gazon-pour-installation'].includes(slug);
450
- };
451
- exports.isMinQtyFee = isMinQtyFee;
452
- var getAllMinGrassQuantities = function (grassProduct, isPro) {
453
- return {
454
- pickup: (0, expedition_1.getMinGrassQte)(grassProduct, 'pickup', isPro),
455
- shipping: (0, expedition_1.getMinGrassQte)(grassProduct, 'shipping', isPro),
456
- install: (0, expedition_1.getMinQteInstall)(isPro)
457
- };
458
- };
459
- exports.getAllMinGrassQuantities = getAllMinGrassQuantities;
460
- var getMinQtyFeeText = function (parent_slug, grassProduct, isPro, locale, expeditionMethod, shortVersion) {
461
- if (parent_slug === void 0) { parent_slug = ''; }
462
- if (locale === void 0) { locale = 'fr'; }
463
- var type = parent_slug === 'frais-minimum-gazon-pour-installation' ? 'install' : 'order';
464
- var minQuantities = (0, exports.getAllMinGrassQuantities)(grassProduct, isPro);
465
- var localeSellUnit = (0, locale_1.translateILang)(pluralSellUnits.p2, locale);
466
- var localeStepUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('roul'), locale).toLowerCase();
467
- var localeMinUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('pal'), locale).toLowerCase();
468
- var minQtyPallets = !!isPro ? 2 : 1;
469
- var str = '';
470
- var endStr = (0, locale_1.translateILang)({
471
- fr: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum.",
472
- en: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum."
473
- }, locale);
474
- if (!!!expeditionMethod && type === 'order' && minQuantities.pickup !== minQuantities.shipping) {
475
- var strMinShipping = "".concat(minQuantities.shipping).concat(localeSellUnit, " (").concat(minQuantities.shipping / 740, " ").concat(localeMinUnit, ")");
476
- var strMinPickup = !!minQuantities.pickup
477
- ? "".concat(minQuantities.pickup).concat(localeSellUnit, " (").concat(minQuantities.pickup / 740, " ").concat(localeMinUnit, ")")
478
- : '';
479
- str = (0, locale_1.translateILang)({
480
- 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.") : ""),
481
- 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.") : "")
482
- }, locale);
483
- if (!!!shortVersion) {
484
- str += endStr;
485
- }
486
- return str;
487
- }
488
- str = (0, locale_1.translateILang)({
489
- fr: "".concat(type === 'install'
490
- ? "L'installation"
491
- : expeditionMethod === 'pickup'
492
- ? 'La cueillette'
493
- : expeditionMethod === 'delivery'
494
- ? 'La livraison'
495
- : 'La commande', " de gazon est disponible \u00E0 partir de 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), mais le minimum facturable est de ").concat(type === 'install'
496
- ? minQuantities.install
497
- : expeditionMethod === 'pickup'
498
- ? minQuantities.pickup
499
- : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', "."),
500
- en: "".concat(type === 'install'
501
- ? 'Sod installation'
502
- : expeditionMethod === 'pickup'
503
- ? 'Sod pick-up'
504
- : expeditionMethod === 'delivery'
505
- ? 'Sod delivery'
506
- : 'Sod ordering', " is available starting at 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), but the minimum billable is ").concat(type === 'install'
507
- ? minQuantities.install
508
- : expeditionMethod === 'pickup'
509
- ? minQuantities.pickup
510
- : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', ".")
511
- }, locale);
512
- if (!!!shortVersion) {
513
- str += endStr;
514
- }
515
- return str;
516
- };
517
- exports.getMinQtyFeeText = getMinQtyFeeText;
518
- var getMinQtyFeeAmountText = function (parent_slug, locale, servicesFees, showMinFeeAmount) {
519
- if (parent_slug === void 0) { parent_slug = ''; }
520
- if (locale === void 0) { locale = 'fr'; }
521
- if (showMinFeeAmount === void 0) { showMinFeeAmount = true; }
522
- var serviceOrFee = servicesFees.find(function (i) { return i.parent_slug === parent_slug; });
523
- if (!!!serviceOrFee)
524
- return '';
525
- var amount = (0, toNumber_1.default)(serviceOrFee.regular_price.amount) * serviceOrFee.qte;
526
- return (0, locale_1.translateILang)({
527
- 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."),
528
- 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.")
529
- }, locale);
530
- };
531
- exports.getMinQtyFeeAmountText = getMinQtyFeeAmountText;
532
- var getGrassQteText = function (chosenDeclination, locale) {
533
- if (locale === void 0) { locale = 'fr'; }
534
- var txt = '';
535
- var nbRolls = 0;
536
- var nbSquareFeet = 0;
537
- var units = !!!chosenDeclination ? [] : chosenDeclination.other_units;
538
- if (!!units && !!units.length) {
539
- var itemRolls = units.find(function (measure) { return measure.unit_slug === 'roul'; });
540
- var itemSquareFeet = units.find(function (measure) { return measure.unit_slug === 'pal'; });
541
- if (!!itemSquareFeet && !!itemSquareFeet.fitting_unit) {
542
- nbSquareFeet = itemSquareFeet.fitting_unit;
543
- }
544
- if (!!itemRolls && !!itemRolls.fitting_unit && nbSquareFeet !== 0) {
545
- nbRolls = nbSquareFeet / itemRolls.fitting_unit;
546
- }
547
- }
548
- txt = (0, locale_1.translateILang)({
549
- fr: 'Pour ce produit, vous devez commander par pieds carrés. Une palette = *nbRolls* rouleaux (*nbSquareFeet*pi2)',
550
- en: 'For this product, you have to order by square feet. A pallet = *nbRolls* rolls (*nbSquareFeet*pi2)'
551
- }, locale);
552
- txt = txt.replace('*nbRolls*', String(nbRolls));
553
- txt = txt.replace('*nbSquareFeet*', String(nbSquareFeet));
554
- return txt;
555
- };
556
- exports.getGrassQteText = getGrassQteText;
557
- var getGrassServicesFees = function (grassProduct, isPro, useFees, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, chosenGrass, baseGrass, customPriceList) { return __awaiter(void 0, void 0, void 0, function () {
558
- var installItems, cart, applied;
559
- return __generator(this, function (_a) {
560
- switch (_a.label) {
561
- case 0: return [4, (0, exports.getInstallationArray)(grassProduct.qte, (!!baseGrass ? baseGrass : chosenGrass).product_upsells, fetchProduct, locale, isPro, chosenGrass.sku, customPriceList, { engrais: true, roulage: true })];
562
- case 1:
563
- installItems = _a.sent();
564
- cart = __assign(__assign({}, (0, Cart_1.getDefaultCart)()), { items: __spreadArray(__spreadArray([
565
- chosenGrass
566
- ], (!!baseGrass ? [baseGrass] : []), true), installItems.filter(function (item) { return !!!(0, exports.isMinQtyFee)(item.parent_slug || ''); }), true) });
567
- return [4, (0, exports.fetchFeesBeforeCart)(!!useFees, cart, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, isPro, grassProduct, undefined, { useDefaultAddress: true }, customPriceList)];
568
- case 2:
569
- applied = _a.sent();
570
- return [2, __spreadArray(__spreadArray([], installItems, true), applied.itemsToAdd, true)];
571
- }
572
- });
573
- }); };
574
- exports.getGrassServicesFees = getGrassServicesFees;
575
- var getGrassSubQuestionsByType = function (type) {
576
- if (type === 'pro') {
577
- return products_2.otherGrassSubQuestions.filter(function (sub) { return !!sub.proOnly; });
578
- }
579
- return products_2.otherGrassSubQuestions.filter(function (sub) { return 'installation-gazon' === sub.associatedProductSlug || (!!sub.installOnly && !!!sub.proOnly); });
580
- };
581
- exports.getGrassSubQuestionsByType = getGrassSubQuestionsByType;
582
- var handleGrassProductQtyRoundForShipping = function (cartData, grassProduct) {
583
- if (!!!cartData || !!!grassProduct)
584
- return;
585
- var product = cartData.items.find(function (item) { return item.sku === grassProduct.sku; });
586
- if (!!!product)
587
- return;
588
- var productOtherUnits = product.other_units;
589
- if (!!!productOtherUnits)
590
- return;
591
- var palUnit = productOtherUnits.find(function (u) { return u.unit_slug === 'pal'; });
592
- var rounded = (0, exports.roundGrassQte)(product.qte, !!!cartData.is_pickup, palUnit);
593
- if (!!!rounded || rounded === grassProduct.qte)
594
- return;
595
- var itemsToChange = [];
596
- var recursiveGrassItem = (0, cart_1.getRecursiveItems)(cartData.items).find(function (item) { return item.sku === grassProduct.sku; });
597
- var getItemsToChange = function (item) {
598
- if (!!item.sub_items) {
599
- item.sub_items.forEach(function (subItem) { return getItemsToChange(subItem); });
600
- }
601
- if (item.parent_slug === 'frais-de-mobilisation') {
602
- var totalPallet = (0, expedition_1.getPalletQty)(cartData.items.map(function (i) {
603
- if ((0, exports.checkIfProductIsOfType)(i, 'gazon')) {
604
- return __assign(__assign({}, i), { qte: rounded });
605
- }
606
- return i;
607
- }), 'grass');
608
- itemsToChange.push({
609
- sku: item.sku,
610
- qte: (0, ceil_1.default)(totalPallet / expedition_1.installationFeePalletTier)
611
- });
612
- return;
613
- }
614
- if (!!item.is_upsell_of_sku) {
615
- var parentUpsellProd = cartData.items.find(function (i) { return i.sku === item.is_upsell_of_sku; });
616
- if (!!parentUpsellProd) {
617
- var sameUpsell = (parentUpsellProd.product_upsells || []).find(function (up) { return up.recommendation_sku === item.sku; });
618
- if (!!sameUpsell) {
619
- 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 } : {}));
620
- var ratio = (0, upsells_1.calculateUpsellQte)(anUpsellProduct, rounded);
621
- if (!!ratio) {
622
- itemsToChange.push({
623
- sku: item.sku,
624
- qte: ratio
625
- });
626
- return;
627
- }
628
- }
629
- }
630
- }
631
- itemsToChange.push({
632
- sku: item.sku,
633
- qte: rounded
634
- });
635
- return;
636
- };
637
- if (!!recursiveGrassItem) {
638
- getItemsToChange(recursiveGrassItem);
639
- }
640
- return { rounded: rounded, itemsToChange: itemsToChange };
641
- };
642
- exports.handleGrassProductQtyRoundForShipping = handleGrassProductQtyRoundForShipping;
643
- var roundGrassQte = function (currentQte, isShipping, palUnit) {
644
- var newQte = currentQte;
645
- switch (true) {
646
- case currentQte < 1480:
647
- var rest1480 = currentQte % 10;
648
- if (rest1480 !== 0) {
649
- newQte = currentQte - rest1480 + 10;
650
- }
651
- break;
652
- case currentQte >= 1480 && !!!isShipping:
653
- var rest1480Install = currentQte % 10;
654
- if (rest1480Install !== 0) {
655
- newQte = currentQte - rest1480Install + 10;
656
- }
657
- break;
658
- case currentQte >= 1480:
659
- if (!!palUnit && !!palUnit.fitting_unit) {
660
- var rest1480_1 = currentQte % palUnit.fitting_unit;
661
- if (rest1480_1 !== 0 && !!((rest1480_1 - 400) % palUnit.fitting_unit)) {
662
- newQte = currentQte - rest1480_1;
663
- if (newQte + 400 > currentQte) {
664
- newQte = newQte + 400;
665
- }
666
- else if (newQte + palUnit.fitting_unit > currentQte) {
667
- newQte = newQte + palUnit.fitting_unit;
668
- }
669
- }
670
- }
671
- break;
672
- }
673
- return newQte;
674
- };
675
- exports.roundGrassQte = roundGrassQte;
676
- var getInstallationArray = function (qte, baseGrassUpsells, fetchProduct, locale, isPro, chosenSku, customPriceList, returnOtherFees) { return __awaiter(void 0, void 0, void 0, function () {
677
- 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;
678
- return __generator(this, function (_a) {
679
- switch (_a.label) {
680
- case 0:
681
- upsell = baseGrassUpsells;
682
- if (!!!upsell)
683
- return [2, []];
684
- installation_upsell = upsell.filter(function (upsell) { return upsell.recommendation_parent_slug === 'installation-gazon'; });
685
- return [4, fetchProduct('installation-gazon', locale, true, true)];
686
- case 1:
687
- installation_parent = _a.sent();
688
- minQteInstall = (0, expedition_1.getMinQteInstall)(isPro);
689
- arrayFinal = [];
690
- if (!(!!installation_parent && !!installation_upsell && !!installation_upsell.length)) return [3, 8];
691
- installation_array_1 = [];
692
- if (!!isPro) {
693
- installation_array_1 = installation_parent.declinations.filter(function (decli) {
694
- return !!decli.attributes &&
695
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
696
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('pro');
697
- });
698
- }
699
- else {
700
- installation_array_1 = installation_parent.declinations.filter(function (decli) {
701
- return !!decli.attributes &&
702
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
703
- !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('au-detail');
704
- });
705
- }
706
- installation_qte_array = installation_upsell.filter(function (upsell) {
707
- return installation_array_1.find(function (decli) { return decli.sku === upsell.recommendation_sku; });
708
- });
709
- closestQte_1 = (0, maxBy_1.default)(installation_qte_array.filter(function (upsell) {
710
- return upsell.actual_qty <= qte;
711
- }), 'actual_qty');
712
- if (!!!closestQte_1) return [3, 8];
713
- installation_decli = installation_parent.declinations.find(function (decli) { return decli.sku === closestQte_1.recommendation_sku; });
714
- if (!!installation_decli) {
715
- if (!!isPro && !!customPriceList) {
716
- installation_decli = (0, g2_1.checkForCustomPriceEquivalent)(installation_decli, customPriceList);
717
- }
718
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(installation_decli, installation_parent.slug)) {
719
- arrayFinal.push(__assign(__assign({}, installation_decli), { parent_slug: 'installation-gazon', qte: qte, is_upsell_of_sku: chosenSku, product_upsells: installation_parent.product_upsells }));
720
- }
721
- }
722
- if (!(qte < minQteInstall)) return [3, 3];
723
- return [4, fetchProduct('frais-minimum-gazon-pour-installation', locale, true, true)];
724
- case 2:
725
- minimum_installation_fee = _a.sent();
726
- if (!!minimum_installation_fee) {
727
- minInstallDecli = minimum_installation_fee.declinations[0];
728
- minInstallDecli = __assign(__assign({}, minInstallDecli), { regular_price: __assign(__assign({}, minInstallDecli.regular_price), { amount: installation_decli.regular_price.amount }) });
729
- if (!!isPro && !!customPriceList) {
730
- minInstallDecli = (0, g2_1.checkForCustomPriceEquivalent)(__assign(__assign({}, minInstallDecli), { price_override: true }), customPriceList);
731
- }
732
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(minInstallDecli, minimum_installation_fee.slug)) {
733
- 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 }));
734
- }
735
- }
736
- _a.label = 3;
737
- case 3: return [4, fetchProduct('frais-de-mobilisation', locale, true, true)];
738
- case 4:
739
- mobilisation_fee = _a.sent();
740
- if (!!mobilisation_fee && !!isPro) {
741
- mobilisationDecli = mobilisation_fee.declinations[0];
742
- if (!!customPriceList) {
743
- mobilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(mobilisationDecli, customPriceList);
744
- }
745
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(mobilisationDecli, mobilisation_fee.slug, true)) {
746
- arrayFinal.push(__assign(__assign({}, mobilisationDecli), { parent_slug: 'frais-de-mobilisation', qte: (0, ceil_1.default)(qte > minQteInstall
747
- ? qte / (740 * expedition_1.installationFeePalletTier)
748
- : minQteInstall / (740 * expedition_1.installationFeePalletTier)), is_upsell_of_sku: installation_decli.sku, product_upsells: mobilisation_fee.product_upsells }));
749
- }
750
- }
751
- if (!!!returnOtherFees) return [3, 8];
752
- if (!!!returnOtherFees.engrais) return [3, 6];
753
- return [4, fetchProduct('installation-fertilisation', locale, true, true)];
754
- case 5:
755
- fertilisation = _a.sent();
756
- if (!!fertilisation) {
757
- minFertilisationDecli = fertilisation.declinations[0];
758
- if (!!isPro && !!customPriceList) {
759
- minFertilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(minFertilisationDecli, customPriceList);
760
- }
761
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(minFertilisationDecli, fertilisation.slug, true)) {
762
- 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 }));
763
- }
764
- }
765
- _a.label = 6;
766
- case 6:
767
- if (!returnOtherFees.roulage) return [3, 8];
768
- return [4, fetchProduct('installation-roulage', locale, true, true)];
769
- case 7:
770
- roullage = _a.sent();
771
- if (!!roullage) {
772
- minRoulageDecli = roullage.declinations[0];
773
- if (!!isPro && !!customPriceList) {
774
- minRoulageDecli = (0, g2_1.checkForCustomPriceEquivalent)(minRoulageDecli, customPriceList);
775
- }
776
- if (!(0, exports.shouldHideItemIfRegPriceIs0)(minRoulageDecli, roullage.slug, true)) {
777
- 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 }));
778
- }
779
- }
780
- _a.label = 8;
781
- case 8: return [2, arrayFinal];
782
- }
783
- });
784
- }); };
785
- exports.getInstallationArray = getInstallationArray;
786
- var getInstallItemPrice = function (parentSlug, servicesFees) {
787
- var price = 0;
788
- switch (parentSlug) {
789
- case 'installation-gazon':
790
- var itemsToUse = servicesFees.filter(function (i) { return i.parent_slug && ['installation-gazon', 'frais-de-mobilisation'].includes(i.parent_slug); });
791
- if (!!itemsToUse) {
792
- price = (0, sumBy_1.default)(itemsToUse, function (item) { return (0, products_1.getLowestPrice)(item).price.amount * item.qte; });
793
- }
794
- break;
795
- default:
796
- var itemToUse = servicesFees.find(function (i) { return i.parent_slug === parentSlug; });
797
- if (!!itemToUse) {
798
- price = (0, products_1.getLowestPrice)(itemToUse).price.amount * itemToUse.qte;
799
- }
800
- break;
801
- }
802
- return price;
803
- };
804
- exports.getInstallItemPrice = getInstallItemPrice;
805
- var getConcreteQteText = function (declination, locale) {
806
- if (locale === void 0) { locale = 'fr'; }
807
- var txt = '';
808
- if (!!!declination)
809
- return txt;
810
- var nbSaleUnitsPerCmdStep = 0;
811
- var nbUnitsPerPal = 0;
812
- var other_units = declination.other_units;
813
- if (!!!other_units || !!!other_units.length) {
814
- return '';
815
- }
816
- else {
817
- var commandStep = other_units.find(function (unit) { return unit.is_command_step; });
818
- var commandUnit = other_units.find(function (unit) { return unit.is_command_unit; });
819
- var saleUnit = other_units.find(function (unit) { return unit.is_sale_unit; });
820
- var unitsPerPal = other_units.find(function (unit) { return unit.unit_slug === 'pal'; });
821
- if (!!commandStep &&
822
- !!commandStep.fitting_unit &&
823
- !!commandUnit &&
824
- !!commandUnit.fitting_unit &&
825
- !!saleUnit &&
826
- !!saleUnit.fitting_unit &&
827
- !!unitsPerPal &&
828
- !!unitsPerPal.fitting_unit) {
829
- var cmdSameAsSale = commandStep.unit_slug === saleUnit.unit_slug;
830
- var nbP2PerRgSlug = !!cmdSameAsSale ? commandUnit.unit_slug : saleUnit.unit_slug;
831
- nbSaleUnitsPerCmdStep = !!cmdSameAsSale
832
- ? commandStep.fitting_unit / commandUnit.fitting_unit
833
- : commandStep.fitting_unit / saleUnit.fitting_unit;
834
- nbUnitsPerPal =
835
- commandStep.fitting_unit == 1 && !!!commandStep.is_sale_unit
836
- ? unitsPerPal.fitting_unit * (0, round_1.default)(nbSaleUnitsPerCmdStep, 2)
837
- : unitsPerPal.fitting_unit / saleUnit.fitting_unit;
838
- txt = (0, locale_1.translateILang)({
839
- fr: 'Pour ce produit, vous devez commander par *cmdStep* (*nbUnitsPerCmdStep*).',
840
- en: 'For this product, you have to order by *cmdStep* (*nbUnitsPerCmdStep*).'
841
- }, locale);
842
- if (unitsPerPal.unit_slug != commandStep.unit_slug) {
843
- txt += (0, locale_1.translateILang)({
844
- fr: ' Une palette = *nbUnitsPerPal*.',
845
- en: ' A pallet = *nbUnitsPerPal*.'
846
- }, locale);
847
- }
848
- txt = txt.replace('*cmdStep*', String("".concat((0, locale_1.translateILang)(inventories_1.unitDict[commandStep.unit_slug], locale).toLowerCase())));
849
- txt = txt.replace('*nbUnitsPerCmdStep*', String("".concat((0, round_1.default)(nbSaleUnitsPerCmdStep, 2), " ").concat((0, locale_1.translateILang)(inventories_1.unitDict[nbP2PerRgSlug], locale).toLowerCase())));
850
- 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())));
851
- }
852
- else {
853
- return '';
854
- }
855
- }
856
- return txt;
857
- };
858
- exports.getConcreteQteText = getConcreteQteText;
859
- var getConcreteItemsByAvailability = function (cartData, availabilityType) {
860
- return cartData.items.filter(function (i) {
861
- return (i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY] &&
862
- i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY][0] === availabilityType);
863
- });
864
- };
865
- exports.getConcreteItemsByAvailability = getConcreteItemsByAvailability;
866
- var getVracType = function (stores, cartData, getInventoryItemCallback) { return __awaiter(void 0, void 0, void 0, function () {
867
- var items, allStoreIds, itemFormat, onlySteJulieNobel;
868
- return __generator(this, function (_a) {
869
- switch (_a.label) {
870
- case 0:
871
- items = cartData.items;
872
- if (!!!items ||
873
- !!!items.length ||
874
- (!!!(0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, cartData) &&
875
- !!!cartData.items.find(function (item) { return !!item.is_other_type && item.is_other_type === 'vrac'; })))
876
- return [2];
877
- allStoreIds = stores.map(function (store) { return store.id; });
878
- itemFormat = '';
879
- return [4, Promise.all(items.map(function (item) { return __awaiter(void 0, void 0, void 0, function () {
880
- var productInventory, _a;
881
- return __generator(this, function (_b) {
882
- switch (_b.label) {
883
- case 0:
884
- if (!!!!item.is_service) return [3, 2];
885
- return [4, getInventoryItemCallback(item.sku)];
886
- case 1:
887
- _a = _b.sent();
888
- return [3, 3];
889
- case 2:
890
- _a = undefined;
891
- _b.label = 3;
892
- case 3:
893
- productInventory = _a;
894
- if (!!!productInventory)
895
- return [2];
896
- allStoreIds = allStoreIds.filter(function (id) {
897
- var sameStoreInProdInventory = productInventory.inventories.find(function (i) { return i.store_id === id; });
898
- if (!!!sameStoreInProdInventory)
899
- return true;
900
- return !!!sameStoreInProdInventory.unavailable_in_store;
901
- });
902
- if (!!!itemFormat && !!item.attributes && !!item.attributes[data_2.AttributesIdEnumGR.FORMATS]) {
903
- itemFormat = item.attributes[data_2.AttributesIdEnumGR.FORMATS][0];
904
- }
905
- return [2];
906
- }
907
- });
908
- }); }))];
909
- case 1:
910
- _a.sent();
911
- onlySteJulieNobel = allStoreIds.length === 1 && allStoreIds[0] === 'sainte-julie-nobel';
912
- if (!!itemFormat.includes('sac')) {
913
- return [2, {
914
- vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_SAC : products_3.VracTypeEnum.AUTRE_SAC,
915
- vrac_store_ids: allStoreIds
916
- }];
917
- }
918
- else {
919
- return [2, {
920
- vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_TONNE : products_3.VracTypeEnum.AUTRE_TONNE,
921
- vrac_store_ids: allStoreIds
922
- }];
923
- }
924
- return [2];
925
- }
926
- });
927
- }); };
928
- exports.getVracType = getVracType;
929
- 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 () {
930
- var cartContainsVrac, cartContainsInstallation, cartContainsSample, cartContainsAccessoriesOnly;
931
- return __generator(this, function (_a) {
932
- switch (_a.label) {
933
- case 0:
934
- cartContainsVrac = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, newCart);
935
- cartContainsInstallation = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.INSTALLATION, newCart);
936
- cartContainsSample = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.SAMPLE, newCart);
937
- cartContainsAccessoriesOnly = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.ONLY_ACCESSORIES, newCart);
938
- 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
939
- ? undefined
940
- : !!settings.useDefaultAddress
941
- ? data_1.defaultVracStoreAddress
942
- : !!settings.useDeliveryAddress && !!newCart.shipping_address
943
- ? newCart.shipping_address.address
944
- : undefined, locale, undefined, false, cartContainsAccessoriesOnly, undefined, allStores, customPriceList, !!useFees)];
945
- case 1: return [2, _a.sent()];
946
- }
947
- });
948
- }); };
949
- exports.fetchFeesBeforeCart = fetchFeesBeforeCart;
950
- var shouldShowProCustomPromo = function (userData, isPro, product, customMinPrice) {
951
- if (!!!product || !!!isPro || !!!userData)
952
- return false;
953
- if (!!customMinPrice) {
954
- if (customMinPrice.type === G2_1.CustomPriceItemTypeEnum.REG && customMinPrice.code2 !== 'NET')
955
- return false;
956
- return true;
957
- }
958
- var customerGroup = (0, object_1.recursiveCheckObject)(userData, 'userData.basic_info.customer_professionnal_info.external_customer_group');
959
- var customerType = !!customerGroup ? (0, g2_1.getG2CustomerTypeFromCode)(customerGroup) : undefined;
960
- var prodPriceClass = !!product.price_classes_range
961
- ? product.price_classes_range.find(function (range) {
962
- return !!customerType && range.external_slug ? range.external_slug === customerType : range.class === 'aspirant';
963
- })
964
- : !!product.prices_list
965
- ? product.prices_list.find(function (range) {
966
- return !!customerType && range.external_slug ? range.external_slug === customerType : range.group_id === 'aspirant';
967
- })
968
- : undefined;
969
- return !!prodPriceClass && !!prodPriceClass.custom_promo_applies;
970
- };
971
- exports.shouldShowProCustomPromo = shouldShowProCustomPromo;
972
- var applyProCustomPromo = function (decli, userData) {
973
- var customerCode = userData.basic_info.customer_professionnal_info &&
974
- userData.basic_info.customer_professionnal_info.external_customer_group;
975
- if (!!!customerCode)
976
- return {};
977
- var customerCustomPromo = (0, g2_1.getG2DiscountFromCode)(customerCode);
978
- if (!!!customerCustomPromo)
979
- return {};
980
- var regPrice = decli.regular_price.amount;
981
- var newDiscountAmount = (0, toNumber_1.default)(regPrice) * ((100 - customerCustomPromo) / 100);
982
- var newPromoObj = (0, IDiscountRule_1.getDefaultDiscountRule)('product');
983
- newPromoObj = __assign(__assign({}, newPromoObj), { appliesTo: __assign(__assign({}, newPromoObj.appliesTo), { label: IDiscountRule_1.AppliesToEnum.PRODUCT, value: decli.sku }), rules: [
984
- {
985
- field: IDiscountRule_1.RuleFieldEnum.CUSTOMER,
986
- condition: IDiscountRule_1.RuleConditionEnum.AND,
987
- ruleDetails: [
988
- {
989
- operator: '==',
990
- value: [userData.id],
991
- condition: IDiscountRule_1.RuleConditionEnum.AND
992
- }
993
- ]
994
- }
995
- ], result: {
996
- action: IDiscountRule_1.ResultActionEnum.PERCENT,
997
- action_value: customerCustomPromo
998
- } });
999
- return {
1000
- discount_rules: [newPromoObj],
1001
- promo_price: {
1002
- currency: 'CAD',
1003
- amount: (0, round_1.default)(newDiscountAmount, 3)
1004
- }
1005
- };
1006
- };
1007
- exports.applyProCustomPromo = applyProCustomPromo;
1008
- var getFormattedProdGR = function (decli, productSlug, isPro) {
1009
- 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"]);
1010
- return !!isPro ? __assign(__assign({}, rest), (productSlug !== 'kentucky' ? { tier_pricing: tier_pricing } : {})) : decli;
1011
- };
1012
- exports.getFormattedProdGR = getFormattedProdGR;
1013
- var shouldHideItemIfRegPriceIs0 = function (item, productSlug, isUpsellOfInstallProd) {
1014
- var regPriceIs0 = item.regular_price.amount == 0;
1015
- if (!regPriceIs0)
1016
- return false;
1017
- if (!item.is_service)
1018
- return false;
1019
- if (!!isUpsellOfInstallProd)
1020
- return false;
1021
- if (expedition_1.slugsToCheckFromExpeditionFees.shipping.includes(productSlug))
1022
- return false;
1023
- return true;
1024
- };
1025
- 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 cmdStepFittingUnit = commandStep.fitting_unit;
207
+ var saleFittingUnit = saleUnit.fitting_unit;
208
+ var nbSaleUnitPerCmdStep = (0, round_1.default)(cmdStepFittingUnit / saleFittingUnit, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0);
209
+ var roundedValue = value === 0
210
+ ? 0
211
+ : _roundNbSaleUnitPerCmdStep(value, nbSaleUnitPerCmdStep, (0, exports.productUnitSupportsDecimals)(saleUnit.unit_slug));
212
+ var commandUnitQty = undefined;
213
+ if (!!commandUnit && !!commandUnit.fitting_unit) {
214
+ if (value === 0) {
215
+ commandUnitQty = 0;
216
+ }
217
+ else if (saleFittingUnit == 1) {
218
+ commandUnitQty = (0, round_1.default)(roundedValue / commandUnit.fitting_unit, (0, exports.productUnitSupportsDecimals)(commandUnit.unit_slug) ? 2 : 0);
219
+ }
220
+ else {
221
+ commandUnitQty = roundedValue * (0, round_1.default)(cmdStepFittingUnit / commandUnit.fitting_unit, 2);
222
+ }
223
+ }
224
+ roundedQuantities = {
225
+ qte1: roundedValue,
226
+ qte2: commandUnitQty
227
+ };
228
+ }
229
+ return roundedQuantities;
230
+ };
231
+ exports.getRoundedProductQuantities = getRoundedProductQuantities;
232
+ var _roundNbSaleUnitPerCmdStep = function (value, nbSaleUnitPerCmdStep, supportsDecimals) {
233
+ var rounded = (0, round_1.default)(value / nbSaleUnitPerCmdStep, !!supportsDecimals ? 2 : 0) * nbSaleUnitPerCmdStep;
234
+ var roundedUp = Math.ceil(value / nbSaleUnitPerCmdStep) * nbSaleUnitPerCmdStep;
235
+ if (rounded == 0 && roundedUp > 0)
236
+ return roundedUp;
237
+ if ((0, round_1.default)(rounded, !!supportsDecimals ? 2 : 0) % nbSaleUnitPerCmdStep == 0)
238
+ return rounded;
239
+ return roundedUp;
240
+ };
241
+ var splitOnDashes = function (stringToSplit, dummyStringToReplace) {
242
+ if (dummyStringToReplace === void 0) { dummyStringToReplace = { currentValue: '%%-%%', newValue: ' - ' }; }
243
+ var splited = stringToSplit.split(' - ');
244
+ if (splited.length === 1)
245
+ splited = stringToSplit.split(' -');
246
+ if (splited.length === 1)
247
+ splited = stringToSplit.split('- ');
248
+ return __spreadArray([
249
+ splited[0].replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)
250
+ ], (!!splited[1]
251
+ ? [splited.slice(1).join(' - ').replace(dummyStringToReplace.currentValue, dummyStringToReplace.newValue)]
252
+ : []), true);
253
+ };
254
+ exports.splitOnDashes = splitOnDashes;
255
+ var getProdName = function (product, locale) {
256
+ var name;
257
+ if (!!product.full_name) {
258
+ name = (0, locale_1.getLocaleOfDictionnary)(product.full_name, locale);
259
+ }
260
+ else {
261
+ name = (0, locale_1.getLocaleOfDictionnary)(product.name, locale);
262
+ if (!!product.use_parent && !!product.parent_name) {
263
+ if (typeof product.parent_name === 'string') {
264
+ name = product.parent_name;
265
+ }
266
+ }
267
+ }
268
+ var newNameArray = [];
269
+ var dashesToFind = [' - ', '- ', ' -'];
270
+ if (name.includes('(')) {
271
+ var newStr = '';
272
+ var strWithParenthesisToCheck = name;
273
+ while (strWithParenthesisToCheck.includes('(')) {
274
+ var positionStart = strWithParenthesisToCheck.indexOf('(');
275
+ var positionEnd = strWithParenthesisToCheck.indexOf(')');
276
+ var substrToCheck = strWithParenthesisToCheck.substring(positionStart, positionEnd + 1);
277
+ for (var _i = 0, dashesToFind_1 = dashesToFind; _i < dashesToFind_1.length; _i++) {
278
+ var dash = dashesToFind_1[_i];
279
+ substrToCheck = substrToCheck.replace(dash, '-');
280
+ }
281
+ newStr += strWithParenthesisToCheck.substring(0, positionStart) + substrToCheck;
282
+ strWithParenthesisToCheck =
283
+ positionEnd === strWithParenthesisToCheck.length - 1 ? '' : strWithParenthesisToCheck.substring(positionEnd + 1);
284
+ }
285
+ newStr += strWithParenthesisToCheck;
286
+ var positionOfFirst = newStr.indexOf(')');
287
+ var firstPart_1 = newStr.substring(0, positionOfFirst);
288
+ if (positionOfFirst !== newStr.length - 1 && dashesToFind.some(function (str) { return firstPart_1.includes(str); })) {
289
+ var secondPart = newStr.substring(positionOfFirst);
290
+ for (var _a = 0, dashesToFind_2 = dashesToFind; _a < dashesToFind_2.length; _a++) {
291
+ var str = dashesToFind_2[_a];
292
+ firstPart_1.replace(str, '%%-%%');
293
+ }
294
+ newNameArray = (0, exports.splitOnDashes)("".concat(firstPart_1).concat(secondPart));
295
+ }
296
+ else {
297
+ newNameArray = (0, exports.splitOnDashes)(newStr);
298
+ }
299
+ }
300
+ else {
301
+ newNameArray = (0, exports.splitOnDashes)(name);
302
+ }
303
+ return newNameArray;
304
+ };
305
+ exports.getProdName = getProdName;
306
+ var getParentProductCategoryGroup = function (prod) {
307
+ var type = 'other';
308
+ if (!!prod.categories && !!prod.categories['lvl0']) {
309
+ var categorySlug = prod.categories['lvl0'];
310
+ switch (categorySlug) {
311
+ case 'gazon':
312
+ if (!!(0, exports.checkIfProductIsOfType)(prod, 'gazon')) {
313
+ type = 'gazon';
314
+ }
315
+ break;
316
+ case 'amenagement-paysager':
317
+ if (!!(0, exports.checkIfProductIsOfType)(prod, 'beton')) {
318
+ type = 'beton';
319
+ }
320
+ break;
321
+ default:
322
+ if (!!(0, exports.checkIfProductIsOfType)(prod, 'vrac')) {
323
+ type = 'vrac';
324
+ }
325
+ break;
326
+ }
327
+ }
328
+ return type;
329
+ };
330
+ exports.getParentProductCategoryGroup = getParentProductCategoryGroup;
331
+ var getProductFormOptions = function (product, attributes) {
332
+ var allColorOptions = [];
333
+ var allDimensionOptions = [];
334
+ var allFormatOptions = [];
335
+ var product_attributes = (0, exports.getProductAttributes)(product);
336
+ var overridenAttributes = product.declinations
337
+ .map(function (declination) { return declination.overriden_attributes; })
338
+ .filter(function (ova) { return !!ova; });
339
+ overridenAttributes = (0, flatten_1.default)(overridenAttributes);
340
+ overridenAttributes = (0, uniqBy_1.default)(overridenAttributes, 'slug');
341
+ var getOverriddenValues = function (prodAttributes, attrId) {
342
+ var overridenOptions = !!overridenAttributes.length
343
+ ? overridenAttributes.filter(function (attr) { return attr.id === attrId; })
344
+ : [];
345
+ var finalOptions = [];
346
+ for (var _i = 0, prodAttributes_1 = prodAttributes; _i < prodAttributes_1.length; _i++) {
347
+ var attr = prodAttributes_1[_i];
348
+ var isOverridden = false;
349
+ for (var _a = 0, overridenOptions_1 = overridenOptions; _a < overridenOptions_1.length; _a++) {
350
+ var ovOption = overridenOptions_1[_a];
351
+ if (!isOverridden) {
352
+ if (!!attr && attr.slug === ovOption.slug) {
353
+ isOverridden = true;
354
+ finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [
355
+ __assign(__assign({}, attr), { other_details: __assign(__assign({}, attr.other_details), { image: ovOption.overriden_values }) })
356
+ ], false);
357
+ }
358
+ }
359
+ }
360
+ if (!isOverridden) {
361
+ finalOptions = __spreadArray(__spreadArray([], finalOptions, true), [attr], false);
362
+ }
363
+ }
364
+ return finalOptions;
365
+ };
366
+ var subColorsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.SUBCOLOR; });
367
+ if (!!subColorsAttr) {
368
+ var subColors = subColorsAttr.values;
369
+ var colorsAttributes = subColors.filter(function (sub) { return product_attributes.colors.includes(sub.slug); });
370
+ var finalColors = getOverriddenValues(colorsAttributes, data_2.AttributesIdEnumGR.SUBCOLOR);
371
+ allColorOptions = (0, orderBy_1.default)(finalColors, function (color) {
372
+ return product.declinations.findIndex(function (d) { return d.attributes[data_2.AttributesIdEnumGR.SUBCOLOR].includes(color.slug); });
373
+ });
374
+ }
375
+ var dimensionsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.DIMENSIONS; });
376
+ if (!!dimensionsAttr) {
377
+ var dimensions = dimensionsAttr.values;
378
+ var dimensionsAttributes = dimensions.filter(function (d) { return product_attributes.dimensions.includes(d.slug); });
379
+ var finalDimensions = getOverriddenValues(dimensionsAttributes, data_2.AttributesIdEnumGR.DIMENSIONS);
380
+ allDimensionOptions = finalDimensions;
381
+ }
382
+ var formatsAttr = attributes.find(function (attr) { return attr.id === data_2.AttributesIdEnumGR.FORMATS; });
383
+ if (!!formatsAttr) {
384
+ var formats = formatsAttr.values;
385
+ allFormatOptions = formats.filter(function (f) { return product_attributes.formats.includes(f.slug); });
386
+ }
387
+ return {
388
+ allColors: allColorOptions,
389
+ allDimensions: allDimensionOptions,
390
+ allFormats: allFormatOptions
391
+ };
392
+ };
393
+ exports.getProductFormOptions = getProductFormOptions;
394
+ var checkIfProductIsOfType = function (product, type, excludeUndefined) {
395
+ var attr = !!product && !!product.attributes ? product.attributes : {};
396
+ if (!!!attr[data_2.AttributesIdEnumGR.TYPE] && !!excludeUndefined)
397
+ return true;
398
+ return (!!attr[data_2.AttributesIdEnumGR.TYPE] &&
399
+ Array.isArray(attr[data_2.AttributesIdEnumGR.TYPE]) &&
400
+ attr[data_2.AttributesIdEnumGR.TYPE].includes(type));
401
+ };
402
+ exports.checkIfProductIsOfType = checkIfProductIsOfType;
403
+ var checkIfProductIsInstallation = function (item) {
404
+ return !!item.is_service && !!item.parent_slug && !!item.parent_slug.includes('installation');
405
+ };
406
+ exports.checkIfProductIsInstallation = checkIfProductIsInstallation;
407
+ var getAllInstallFromItems = function (items) {
408
+ return items.filter(function (i) {
409
+ return (!!i.parent_slug && products_2.installationProductsSlugs.includes(i.parent_slug)) ||
410
+ Object.values(products_2.installationProSpecSkus).includes(i.sku);
411
+ });
412
+ };
413
+ exports.getAllInstallFromItems = getAllInstallFromItems;
414
+ var fuseGrassProducts = function (recursiveItems, isPro) {
415
+ var specialityGrass = recursiveItems[0];
416
+ var kentuckyGrass = (specialityGrass.sub_items || []).find(function (sub) { return sub.sku === products_2.kentucky; });
417
+ var newItems = [];
418
+ if (!!kentuckyGrass) {
419
+ var kentuckyPrice = (0, products_1.getLowestPrice)(kentuckyGrass);
420
+ var regPriceKentucky = kentuckyGrass.regular_price.amount;
421
+ var newGrassRegPrice = !!kentuckyPrice.promo ? regPriceKentucky : kentuckyPrice.price.amount;
422
+ var newGrassDiscountPrice = (!!specialityGrass.discount_price
423
+ ? specialityGrass.discount_price.amount
424
+ : specialityGrass.regular_price.amount) +
425
+ (!!kentuckyPrice.promo ? kentuckyPrice.price.amount : regPriceKentucky);
426
+ var getLowestPriceSpecialityGrass_1 = (0, products_1.getLowestPrice)(specialityGrass);
427
+ newItems = __spreadArray([
428
+ __assign(__assign(__assign(__assign(__assign(__assign({}, specialityGrass), { regular_price: __assign(__assign({}, specialityGrass.regular_price), { amount: newGrassRegPrice + specialityGrass.regular_price.amount }) }), (!!newGrassDiscountPrice
429
+ ? {
430
+ discount_price: __assign(__assign({}, (specialityGrass.discount_price || { currency: 'CAD' })), { amount: newGrassDiscountPrice })
431
+ }
432
+ : {})), (!!specialityGrass.promo_price
433
+ ? {
434
+ promo_price: __assign(__assign({}, specialityGrass.promo_price), { amount: specialityGrass.promo_price.amount + kentuckyPrice.price.amount })
435
+ }
436
+ : {})), (!!!isPro && !!kentuckyGrass.tier_pricing
437
+ ? {
438
+ 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 }) })); })
439
+ }
440
+ : {})), { sub_items: __spreadArray([
441
+ __assign(__assign({}, kentuckyGrass), { hide_from_summary: true })
442
+ ], (specialityGrass.sub_items || []).slice(1), true) })
443
+ ], recursiveItems.slice(1), true);
444
+ }
445
+ return newItems;
446
+ };
447
+ exports.fuseGrassProducts = fuseGrassProducts;
448
+ var isMinQtyFee = function (slug) {
449
+ return ['minimum-facturable-commande', 'frais-minimum-gazon-pour-installation'].includes(slug);
450
+ };
451
+ exports.isMinQtyFee = isMinQtyFee;
452
+ var getAllMinGrassQuantities = function (grassProduct, isPro) {
453
+ return {
454
+ pickup: (0, expedition_1.getMinGrassQte)(grassProduct, 'pickup', isPro),
455
+ shipping: (0, expedition_1.getMinGrassQte)(grassProduct, 'shipping', isPro),
456
+ install: (0, expedition_1.getMinQteInstall)(isPro)
457
+ };
458
+ };
459
+ exports.getAllMinGrassQuantities = getAllMinGrassQuantities;
460
+ var getMinQtyFeeText = function (parent_slug, grassProduct, isPro, locale, expeditionMethod, shortVersion) {
461
+ if (parent_slug === void 0) { parent_slug = ''; }
462
+ if (locale === void 0) { locale = 'fr'; }
463
+ var type = parent_slug === 'frais-minimum-gazon-pour-installation' ? 'install' : 'order';
464
+ var minQuantities = (0, exports.getAllMinGrassQuantities)(grassProduct, isPro);
465
+ var localeSellUnit = (0, locale_1.translateILang)(pluralSellUnits.p2, locale);
466
+ var localeStepUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('roul'), locale).toLowerCase();
467
+ var localeMinUnit = (0, locale_1.translateILang)((0, inventories_1.getUnitShortDict)('pal'), locale).toLowerCase();
468
+ var minQtyPallets = !!isPro ? 2 : 1;
469
+ var str = '';
470
+ var endStr = (0, locale_1.translateILang)({
471
+ fr: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum.",
472
+ en: " Ce frais correspond au prix du gazon choisi multipli\u00E9 par la diff\u00E9rence entre la quantit\u00E9 choisie et le minimum."
473
+ }, locale);
474
+ if (!!!expeditionMethod && type === 'order' && minQuantities.pickup !== minQuantities.shipping) {
475
+ var strMinShipping = "".concat(minQuantities.shipping).concat(localeSellUnit, " (").concat(minQuantities.shipping / 740, " ").concat(localeMinUnit, ")");
476
+ var strMinPickup = !!minQuantities.pickup
477
+ ? "".concat(minQuantities.pickup).concat(localeSellUnit, " (").concat(minQuantities.pickup / 740, " ").concat(localeMinUnit, ")")
478
+ : '';
479
+ str = (0, locale_1.translateILang)({
480
+ 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.") : ""),
481
+ 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.") : "")
482
+ }, locale);
483
+ if (!!!shortVersion) {
484
+ str += endStr;
485
+ }
486
+ return str;
487
+ }
488
+ str = (0, locale_1.translateILang)({
489
+ fr: "".concat(type === 'install'
490
+ ? "L'installation"
491
+ : expeditionMethod === 'pickup'
492
+ ? 'La cueillette'
493
+ : expeditionMethod === 'delivery'
494
+ ? 'La livraison'
495
+ : 'La commande', " de gazon est disponible \u00E0 partir de 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), mais le minimum facturable est de ").concat(type === 'install'
496
+ ? minQuantities.install
497
+ : expeditionMethod === 'pickup'
498
+ ? minQuantities.pickup
499
+ : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', "."),
500
+ en: "".concat(type === 'install'
501
+ ? 'Sod installation'
502
+ : expeditionMethod === 'pickup'
503
+ ? 'Sod pick-up'
504
+ : expeditionMethod === 'delivery'
505
+ ? 'Sod delivery'
506
+ : 'Sod ordering', " is available starting at 10").concat(localeSellUnit, " (1 ").concat(localeStepUnit, "), but the minimum billable is ").concat(type === 'install'
507
+ ? minQuantities.install
508
+ : expeditionMethod === 'pickup'
509
+ ? minQuantities.pickup
510
+ : minQuantities.shipping).concat(localeSellUnit).concat(type === 'order' ? ' (' + minQtyPallets + ' ' + localeMinUnit + ')' : '', ".")
511
+ }, locale);
512
+ if (!!!shortVersion) {
513
+ str += endStr;
514
+ }
515
+ return str;
516
+ };
517
+ exports.getMinQtyFeeText = getMinQtyFeeText;
518
+ var getMinQtyFeeAmountText = function (parent_slug, locale, servicesFees, showMinFeeAmount) {
519
+ if (parent_slug === void 0) { parent_slug = ''; }
520
+ if (locale === void 0) { locale = 'fr'; }
521
+ if (showMinFeeAmount === void 0) { showMinFeeAmount = true; }
522
+ var serviceOrFee = servicesFees.find(function (i) { return i.parent_slug === parent_slug; });
523
+ if (!!!serviceOrFee)
524
+ return '';
525
+ var amount = (0, toNumber_1.default)(serviceOrFee.regular_price.amount) * serviceOrFee.qte;
526
+ return (0, locale_1.translateILang)({
527
+ 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."),
528
+ 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.")
529
+ }, locale);
530
+ };
531
+ exports.getMinQtyFeeAmountText = getMinQtyFeeAmountText;
532
+ var getGrassQteText = function (chosenDeclination, locale) {
533
+ if (locale === void 0) { locale = 'fr'; }
534
+ var txt = '';
535
+ var nbRolls = 0;
536
+ var nbSquareFeet = 0;
537
+ var units = !!!chosenDeclination ? [] : chosenDeclination.other_units;
538
+ if (!!units && !!units.length) {
539
+ var itemRolls = units.find(function (measure) { return measure.unit_slug === 'roul'; });
540
+ var itemSquareFeet = units.find(function (measure) { return measure.unit_slug === 'pal'; });
541
+ if (!!itemSquareFeet && !!itemSquareFeet.fitting_unit) {
542
+ nbSquareFeet = itemSquareFeet.fitting_unit;
543
+ }
544
+ if (!!itemRolls && !!itemRolls.fitting_unit && nbSquareFeet !== 0) {
545
+ nbRolls = nbSquareFeet / itemRolls.fitting_unit;
546
+ }
547
+ }
548
+ txt = (0, locale_1.translateILang)({
549
+ fr: 'Pour ce produit, vous devez commander par pieds carrés. Une palette = *nbRolls* rouleaux (*nbSquareFeet*pi2)',
550
+ en: 'For this product, you have to order by square feet. A pallet = *nbRolls* rolls (*nbSquareFeet*pi2)'
551
+ }, locale);
552
+ txt = txt.replace('*nbRolls*', String(nbRolls));
553
+ txt = txt.replace('*nbSquareFeet*', String(nbSquareFeet));
554
+ return txt;
555
+ };
556
+ exports.getGrassQteText = getGrassQteText;
557
+ var getGrassServicesFees = function (grassProduct, isPro, useFees, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, chosenGrass, baseGrass, customPriceList) { return __awaiter(void 0, void 0, void 0, function () {
558
+ var installItems, cart, applied;
559
+ return __generator(this, function (_a) {
560
+ switch (_a.label) {
561
+ case 0: return [4, (0, exports.getInstallationArray)(grassProduct.qte, (!!baseGrass ? baseGrass : chosenGrass).product_upsells, fetchProduct, locale, isPro, chosenGrass.sku, customPriceList, { engrais: true, roulage: true })];
562
+ case 1:
563
+ installItems = _a.sent();
564
+ cart = __assign(__assign({}, (0, Cart_1.getDefaultCart)()), { items: __spreadArray(__spreadArray([
565
+ chosenGrass
566
+ ], (!!baseGrass ? [baseGrass] : []), true), installItems.filter(function (item) { return !!!(0, exports.isMinQtyFee)(item.parent_slug || ''); }), true) });
567
+ return [4, (0, exports.fetchFeesBeforeCart)(!!useFees, cart, expeditionMethod, fetchProduct, getIfAddressIsInsideZones, getDistanceFromAddress, locale, allStores, isPro, grassProduct, undefined, { useDefaultAddress: true }, customPriceList)];
568
+ case 2:
569
+ applied = _a.sent();
570
+ return [2, __spreadArray(__spreadArray([], installItems, true), applied.itemsToAdd, true)];
571
+ }
572
+ });
573
+ }); };
574
+ exports.getGrassServicesFees = getGrassServicesFees;
575
+ var getGrassSubQuestionsByType = function (type) {
576
+ if (type === 'pro') {
577
+ return products_2.otherGrassSubQuestions.filter(function (sub) { return !!sub.proOnly; });
578
+ }
579
+ return products_2.otherGrassSubQuestions.filter(function (sub) { return 'installation-gazon' === sub.associatedProductSlug || (!!sub.installOnly && !!!sub.proOnly); });
580
+ };
581
+ exports.getGrassSubQuestionsByType = getGrassSubQuestionsByType;
582
+ var handleGrassProductQtyRoundForShipping = function (cartData, grassProduct) {
583
+ if (!!!cartData || !!!grassProduct)
584
+ return;
585
+ var product = cartData.items.find(function (item) { return item.sku === grassProduct.sku; });
586
+ if (!!!product)
587
+ return;
588
+ var productOtherUnits = product.other_units;
589
+ if (!!!productOtherUnits)
590
+ return;
591
+ var palUnit = productOtherUnits.find(function (u) { return u.unit_slug === 'pal'; });
592
+ var rounded = (0, exports.roundGrassQte)(product.qte, !!!cartData.is_pickup, palUnit);
593
+ if (!!!rounded || rounded === grassProduct.qte)
594
+ return;
595
+ var itemsToChange = [];
596
+ var recursiveGrassItem = (0, cart_1.getRecursiveItems)(cartData.items).find(function (item) { return item.sku === grassProduct.sku; });
597
+ var getItemsToChange = function (item) {
598
+ if (!!item.sub_items) {
599
+ item.sub_items.forEach(function (subItem) { return getItemsToChange(subItem); });
600
+ }
601
+ if (item.parent_slug === 'frais-de-mobilisation') {
602
+ var totalPallet = (0, expedition_1.getPalletQty)(cartData.items.map(function (i) {
603
+ if ((0, exports.checkIfProductIsOfType)(i, 'gazon')) {
604
+ return __assign(__assign({}, i), { qte: rounded });
605
+ }
606
+ return i;
607
+ }), 'grass');
608
+ itemsToChange.push({
609
+ sku: item.sku,
610
+ qte: (0, ceil_1.default)(totalPallet / expedition_1.installationFeePalletTier)
611
+ });
612
+ return;
613
+ }
614
+ if (!!item.is_upsell_of_sku) {
615
+ var parentUpsellProd = cartData.items.find(function (i) { return i.sku === item.is_upsell_of_sku; });
616
+ if (!!parentUpsellProd) {
617
+ var sameUpsell = (parentUpsellProd.product_upsells || []).find(function (up) { return up.recommendation_sku === item.sku; });
618
+ if (!!sameUpsell) {
619
+ 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 } : {}));
620
+ var ratio = (0, upsells_1.calculateUpsellQte)(anUpsellProduct, rounded);
621
+ if (!!ratio) {
622
+ itemsToChange.push({
623
+ sku: item.sku,
624
+ qte: ratio
625
+ });
626
+ return;
627
+ }
628
+ }
629
+ }
630
+ }
631
+ itemsToChange.push({
632
+ sku: item.sku,
633
+ qte: rounded
634
+ });
635
+ return;
636
+ };
637
+ if (!!recursiveGrassItem) {
638
+ getItemsToChange(recursiveGrassItem);
639
+ }
640
+ return { rounded: rounded, itemsToChange: itemsToChange };
641
+ };
642
+ exports.handleGrassProductQtyRoundForShipping = handleGrassProductQtyRoundForShipping;
643
+ var roundGrassQte = function (currentQte, isShipping, palUnit) {
644
+ var newQte = currentQte;
645
+ switch (true) {
646
+ case currentQte < 1480:
647
+ var rest1480 = currentQte % 10;
648
+ if (rest1480 !== 0) {
649
+ newQte = currentQte - rest1480 + 10;
650
+ }
651
+ break;
652
+ case currentQte >= 1480 && !!!isShipping:
653
+ var rest1480Install = currentQte % 10;
654
+ if (rest1480Install !== 0) {
655
+ newQte = currentQte - rest1480Install + 10;
656
+ }
657
+ break;
658
+ case currentQte >= 1480:
659
+ if (!!palUnit && !!palUnit.fitting_unit) {
660
+ var rest1480_1 = currentQte % palUnit.fitting_unit;
661
+ if (rest1480_1 !== 0 && !!((rest1480_1 - 400) % palUnit.fitting_unit)) {
662
+ newQte = currentQte - rest1480_1;
663
+ if (newQte + 400 > currentQte) {
664
+ newQte = newQte + 400;
665
+ }
666
+ else if (newQte + palUnit.fitting_unit > currentQte) {
667
+ newQte = newQte + palUnit.fitting_unit;
668
+ }
669
+ }
670
+ }
671
+ break;
672
+ }
673
+ return newQte;
674
+ };
675
+ exports.roundGrassQte = roundGrassQte;
676
+ var getInstallationArray = function (qte, baseGrassUpsells, fetchProduct, locale, isPro, chosenSku, customPriceList, returnOtherFees) { return __awaiter(void 0, void 0, void 0, function () {
677
+ 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;
678
+ return __generator(this, function (_a) {
679
+ switch (_a.label) {
680
+ case 0:
681
+ upsell = baseGrassUpsells;
682
+ if (!!!upsell)
683
+ return [2, []];
684
+ installation_upsell = upsell.filter(function (upsell) { return upsell.recommendation_parent_slug === 'installation-gazon'; });
685
+ return [4, fetchProduct('installation-gazon', locale, true, true)];
686
+ case 1:
687
+ installation_parent = _a.sent();
688
+ minQteInstall = (0, expedition_1.getMinQteInstall)(isPro);
689
+ arrayFinal = [];
690
+ if (!(!!installation_parent && !!installation_upsell && !!installation_upsell.length)) return [3, 8];
691
+ installation_array_1 = [];
692
+ if (!!isPro) {
693
+ installation_array_1 = installation_parent.declinations.filter(function (decli) {
694
+ return !!decli.attributes &&
695
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
696
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('pro');
697
+ });
698
+ }
699
+ else {
700
+ installation_array_1 = installation_parent.declinations.filter(function (decli) {
701
+ return !!decli.attributes &&
702
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE] &&
703
+ !!decli.attributes[data_2.AttributesIdEnumGR.CLIENT_TYPE].includes('au-detail');
704
+ });
705
+ }
706
+ installation_qte_array = installation_upsell.filter(function (upsell) {
707
+ return installation_array_1.find(function (decli) { return decli.sku === upsell.recommendation_sku; });
708
+ });
709
+ closestQte_1 = (0, maxBy_1.default)(installation_qte_array.filter(function (upsell) {
710
+ return upsell.actual_qty <= qte;
711
+ }), 'actual_qty');
712
+ if (!!!closestQte_1) return [3, 8];
713
+ installation_decli = installation_parent.declinations.find(function (decli) { return decli.sku === closestQte_1.recommendation_sku; });
714
+ if (!!installation_decli) {
715
+ if (!!isPro && !!customPriceList) {
716
+ installation_decli = (0, g2_1.checkForCustomPriceEquivalent)(installation_decli, customPriceList);
717
+ }
718
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(installation_decli, installation_parent.slug)) {
719
+ arrayFinal.push(__assign(__assign({}, installation_decli), { parent_slug: 'installation-gazon', qte: qte, is_upsell_of_sku: chosenSku, product_upsells: installation_parent.product_upsells }));
720
+ }
721
+ }
722
+ if (!(qte < minQteInstall)) return [3, 3];
723
+ return [4, fetchProduct('frais-minimum-gazon-pour-installation', locale, true, true)];
724
+ case 2:
725
+ minimum_installation_fee = _a.sent();
726
+ if (!!minimum_installation_fee) {
727
+ minInstallDecli = minimum_installation_fee.declinations[0];
728
+ minInstallDecli = __assign(__assign({}, minInstallDecli), { regular_price: __assign(__assign({}, minInstallDecli.regular_price), { amount: installation_decli.regular_price.amount }) });
729
+ if (!!isPro && !!customPriceList) {
730
+ minInstallDecli = (0, g2_1.checkForCustomPriceEquivalent)(__assign(__assign({}, minInstallDecli), { price_override: true }), customPriceList);
731
+ }
732
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(minInstallDecli, minimum_installation_fee.slug)) {
733
+ 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 }));
734
+ }
735
+ }
736
+ _a.label = 3;
737
+ case 3: return [4, fetchProduct('frais-de-mobilisation', locale, true, true)];
738
+ case 4:
739
+ mobilisation_fee = _a.sent();
740
+ if (!!mobilisation_fee && !!isPro) {
741
+ mobilisationDecli = mobilisation_fee.declinations[0];
742
+ if (!!customPriceList) {
743
+ mobilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(mobilisationDecli, customPriceList);
744
+ }
745
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(mobilisationDecli, mobilisation_fee.slug, true)) {
746
+ arrayFinal.push(__assign(__assign({}, mobilisationDecli), { parent_slug: 'frais-de-mobilisation', qte: (0, ceil_1.default)(qte > minQteInstall
747
+ ? qte / (740 * expedition_1.installationFeePalletTier)
748
+ : minQteInstall / (740 * expedition_1.installationFeePalletTier)), is_upsell_of_sku: installation_decli.sku, product_upsells: mobilisation_fee.product_upsells }));
749
+ }
750
+ }
751
+ if (!!!returnOtherFees) return [3, 8];
752
+ if (!!!returnOtherFees.engrais) return [3, 6];
753
+ return [4, fetchProduct('installation-fertilisation', locale, true, true)];
754
+ case 5:
755
+ fertilisation = _a.sent();
756
+ if (!!fertilisation) {
757
+ minFertilisationDecli = fertilisation.declinations[0];
758
+ if (!!isPro && !!customPriceList) {
759
+ minFertilisationDecli = (0, g2_1.checkForCustomPriceEquivalent)(minFertilisationDecli, customPriceList);
760
+ }
761
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(minFertilisationDecli, fertilisation.slug, true)) {
762
+ 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 }));
763
+ }
764
+ }
765
+ _a.label = 6;
766
+ case 6:
767
+ if (!returnOtherFees.roulage) return [3, 8];
768
+ return [4, fetchProduct('installation-roulage', locale, true, true)];
769
+ case 7:
770
+ roullage = _a.sent();
771
+ if (!!roullage) {
772
+ minRoulageDecli = roullage.declinations[0];
773
+ if (!!isPro && !!customPriceList) {
774
+ minRoulageDecli = (0, g2_1.checkForCustomPriceEquivalent)(minRoulageDecli, customPriceList);
775
+ }
776
+ if (!(0, exports.shouldHideItemIfRegPriceIs0)(minRoulageDecli, roullage.slug, true)) {
777
+ 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 }));
778
+ }
779
+ }
780
+ _a.label = 8;
781
+ case 8: return [2, arrayFinal];
782
+ }
783
+ });
784
+ }); };
785
+ exports.getInstallationArray = getInstallationArray;
786
+ var getInstallItemPrice = function (parentSlug, servicesFees) {
787
+ var price = 0;
788
+ switch (parentSlug) {
789
+ case 'installation-gazon':
790
+ var itemsToUse = servicesFees.filter(function (i) { return i.parent_slug && ['installation-gazon', 'frais-de-mobilisation'].includes(i.parent_slug); });
791
+ if (!!itemsToUse) {
792
+ price = (0, sumBy_1.default)(itemsToUse, function (item) { return (0, products_1.getLowestPrice)(item).price.amount * item.qte; });
793
+ }
794
+ break;
795
+ default:
796
+ var itemToUse = servicesFees.find(function (i) { return i.parent_slug === parentSlug; });
797
+ if (!!itemToUse) {
798
+ price = (0, products_1.getLowestPrice)(itemToUse).price.amount * itemToUse.qte;
799
+ }
800
+ break;
801
+ }
802
+ return price;
803
+ };
804
+ exports.getInstallItemPrice = getInstallItemPrice;
805
+ var getConcreteQteText = function (declination, locale) {
806
+ if (locale === void 0) { locale = 'fr'; }
807
+ var txt = '';
808
+ if (!!!declination)
809
+ return txt;
810
+ var nbSaleUnitsPerCmdStep = 0;
811
+ var nbUnitsPerPal = 0;
812
+ var other_units = declination.other_units;
813
+ if (!!!other_units || !!!other_units.length) {
814
+ return '';
815
+ }
816
+ else {
817
+ var commandStep = other_units.find(function (unit) { return unit.is_command_step; });
818
+ var commandUnit = other_units.find(function (unit) { return unit.is_command_unit; });
819
+ var saleUnit = other_units.find(function (unit) { return unit.is_sale_unit; });
820
+ var unitsPerPal = other_units.find(function (unit) { return unit.unit_slug === 'pal'; });
821
+ if (!!commandStep &&
822
+ !!commandStep.fitting_unit &&
823
+ !!commandUnit &&
824
+ !!commandUnit.fitting_unit &&
825
+ !!saleUnit &&
826
+ !!saleUnit.fitting_unit &&
827
+ !!unitsPerPal &&
828
+ !!unitsPerPal.fitting_unit) {
829
+ var cmdSameAsSale = commandStep.unit_slug === saleUnit.unit_slug;
830
+ var nbP2PerRgSlug = !!cmdSameAsSale ? commandUnit.unit_slug : saleUnit.unit_slug;
831
+ nbSaleUnitsPerCmdStep = !!cmdSameAsSale
832
+ ? commandStep.fitting_unit / commandUnit.fitting_unit
833
+ : commandStep.fitting_unit / saleUnit.fitting_unit;
834
+ nbUnitsPerPal =
835
+ commandStep.fitting_unit == 1 && !!!commandStep.is_sale_unit
836
+ ? unitsPerPal.fitting_unit * (0, round_1.default)(nbSaleUnitsPerCmdStep, 2)
837
+ : unitsPerPal.fitting_unit / saleUnit.fitting_unit;
838
+ txt = (0, locale_1.translateILang)({
839
+ fr: 'Pour ce produit, vous devez commander par *cmdStep* (*nbUnitsPerCmdStep*).',
840
+ en: 'For this product, you have to order by *cmdStep* (*nbUnitsPerCmdStep*).'
841
+ }, locale);
842
+ if (unitsPerPal.unit_slug != commandStep.unit_slug) {
843
+ txt += (0, locale_1.translateILang)({
844
+ fr: ' Une palette = *nbUnitsPerPal*.',
845
+ en: ' A pallet = *nbUnitsPerPal*.'
846
+ }, locale);
847
+ }
848
+ txt = txt.replace('*cmdStep*', String("".concat((0, locale_1.translateILang)(inventories_1.unitDict[commandStep.unit_slug], locale).toLowerCase())));
849
+ txt = txt.replace('*nbUnitsPerCmdStep*', String("".concat((0, round_1.default)(nbSaleUnitsPerCmdStep, 2), " ").concat((0, locale_1.translateILang)(inventories_1.unitDict[nbP2PerRgSlug], locale).toLowerCase())));
850
+ 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())));
851
+ }
852
+ else {
853
+ return '';
854
+ }
855
+ }
856
+ return txt;
857
+ };
858
+ exports.getConcreteQteText = getConcreteQteText;
859
+ var getConcreteItemsByAvailability = function (cartData, availabilityType) {
860
+ return cartData.items.filter(function (i) {
861
+ return (i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY] &&
862
+ i.attributes[data_2.AttributesIdEnumGR.AVAILABILITY][0] === availabilityType);
863
+ });
864
+ };
865
+ exports.getConcreteItemsByAvailability = getConcreteItemsByAvailability;
866
+ var getVracType = function (stores, cartData, getInventoryItemCallback) { return __awaiter(void 0, void 0, void 0, function () {
867
+ var items, allStoreIds, itemFormat, onlySteJulieNobel;
868
+ return __generator(this, function (_a) {
869
+ switch (_a.label) {
870
+ case 0:
871
+ items = cartData.items;
872
+ if (!!!items ||
873
+ !!!items.length ||
874
+ (!!!(0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, cartData) &&
875
+ !!!cartData.items.find(function (item) { return !!item.is_other_type && item.is_other_type === 'vrac'; })))
876
+ return [2];
877
+ allStoreIds = stores.map(function (store) { return store.id; });
878
+ itemFormat = '';
879
+ return [4, Promise.all(items.map(function (item) { return __awaiter(void 0, void 0, void 0, function () {
880
+ var productInventory, _a;
881
+ return __generator(this, function (_b) {
882
+ switch (_b.label) {
883
+ case 0:
884
+ if (!!!!item.is_service) return [3, 2];
885
+ return [4, getInventoryItemCallback(item.sku)];
886
+ case 1:
887
+ _a = _b.sent();
888
+ return [3, 3];
889
+ case 2:
890
+ _a = undefined;
891
+ _b.label = 3;
892
+ case 3:
893
+ productInventory = _a;
894
+ if (!!!productInventory)
895
+ return [2];
896
+ allStoreIds = allStoreIds.filter(function (id) {
897
+ var sameStoreInProdInventory = productInventory.inventories.find(function (i) { return i.store_id === id; });
898
+ if (!!!sameStoreInProdInventory)
899
+ return true;
900
+ return !!!sameStoreInProdInventory.unavailable_in_store;
901
+ });
902
+ if (!!!itemFormat && !!item.attributes && !!item.attributes[data_2.AttributesIdEnumGR.FORMATS]) {
903
+ itemFormat = item.attributes[data_2.AttributesIdEnumGR.FORMATS][0];
904
+ }
905
+ return [2];
906
+ }
907
+ });
908
+ }); }))];
909
+ case 1:
910
+ _a.sent();
911
+ onlySteJulieNobel = allStoreIds.length === 1 && allStoreIds[0] === 'sainte-julie-nobel';
912
+ if (!!itemFormat.includes('sac')) {
913
+ return [2, {
914
+ vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_SAC : products_3.VracTypeEnum.AUTRE_SAC,
915
+ vrac_store_ids: allStoreIds
916
+ }];
917
+ }
918
+ else {
919
+ return [2, {
920
+ vrac_type: !!onlySteJulieNobel ? products_3.VracTypeEnum.NOBEL_TONNE : products_3.VracTypeEnum.AUTRE_TONNE,
921
+ vrac_store_ids: allStoreIds
922
+ }];
923
+ }
924
+ return [2];
925
+ }
926
+ });
927
+ }); };
928
+ exports.getVracType = getVracType;
929
+ 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 () {
930
+ var cartContainsVrac, cartContainsInstallation, cartContainsSample, cartContainsAccessoriesOnly;
931
+ return __generator(this, function (_a) {
932
+ switch (_a.label) {
933
+ case 0:
934
+ cartContainsVrac = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.VRAC, newCart);
935
+ cartContainsInstallation = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.INSTALLATION, newCart);
936
+ cartContainsSample = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.SAMPLE, newCart);
937
+ cartContainsAccessoriesOnly = (0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.ONLY_ACCESSORIES, newCart);
938
+ 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
939
+ ? undefined
940
+ : !!settings.useDefaultAddress
941
+ ? data_1.defaultVracStoreAddress
942
+ : !!settings.useDeliveryAddress && !!newCart.shipping_address
943
+ ? newCart.shipping_address.address
944
+ : undefined, locale, undefined, false, cartContainsAccessoriesOnly, undefined, allStores, customPriceList, !!useFees)];
945
+ case 1: return [2, _a.sent()];
946
+ }
947
+ });
948
+ }); };
949
+ exports.fetchFeesBeforeCart = fetchFeesBeforeCart;
950
+ var shouldShowProCustomPromo = function (userData, isPro, product, customMinPrice) {
951
+ if (!!!product || !!!isPro || !!!userData)
952
+ return false;
953
+ if (!!customMinPrice) {
954
+ if (customMinPrice.type === G2_1.CustomPriceItemTypeEnum.REG && customMinPrice.code2 !== 'NET')
955
+ return false;
956
+ return true;
957
+ }
958
+ var customerGroup = (0, object_1.recursiveCheckObject)(userData, 'userData.basic_info.customer_professionnal_info.external_customer_group');
959
+ var customerType = !!customerGroup ? (0, g2_1.getG2CustomerTypeFromCode)(customerGroup) : undefined;
960
+ var prodPriceClass = !!product.price_classes_range
961
+ ? product.price_classes_range.find(function (range) {
962
+ return !!customerType && range.external_slug ? range.external_slug === customerType : range.class === 'aspirant';
963
+ })
964
+ : !!product.prices_list
965
+ ? product.prices_list.find(function (range) {
966
+ return !!customerType && range.external_slug ? range.external_slug === customerType : range.group_id === 'aspirant';
967
+ })
968
+ : undefined;
969
+ return !!prodPriceClass && !!prodPriceClass.custom_promo_applies;
970
+ };
971
+ exports.shouldShowProCustomPromo = shouldShowProCustomPromo;
972
+ var applyProCustomPromo = function (decli, userData) {
973
+ var customerCode = userData.basic_info.customer_professionnal_info &&
974
+ userData.basic_info.customer_professionnal_info.external_customer_group;
975
+ if (!!!customerCode)
976
+ return {};
977
+ var customerCustomPromo = (0, g2_1.getG2DiscountFromCode)(customerCode);
978
+ if (!!!customerCustomPromo)
979
+ return {};
980
+ var regPrice = decli.regular_price.amount;
981
+ var newDiscountAmount = (0, toNumber_1.default)(regPrice) * ((100 - customerCustomPromo) / 100);
982
+ var newPromoObj = (0, IDiscountRule_1.getDefaultDiscountRule)('product');
983
+ newPromoObj = __assign(__assign({}, newPromoObj), { appliesTo: __assign(__assign({}, newPromoObj.appliesTo), { label: IDiscountRule_1.AppliesToEnum.PRODUCT, value: decli.sku }), rules: [
984
+ {
985
+ field: IDiscountRule_1.RuleFieldEnum.CUSTOMER,
986
+ condition: IDiscountRule_1.RuleConditionEnum.AND,
987
+ ruleDetails: [
988
+ {
989
+ operator: '==',
990
+ value: [userData.id],
991
+ condition: IDiscountRule_1.RuleConditionEnum.AND
992
+ }
993
+ ]
994
+ }
995
+ ], result: {
996
+ action: IDiscountRule_1.ResultActionEnum.PERCENT,
997
+ action_value: customerCustomPromo
998
+ } });
999
+ return {
1000
+ discount_rules: [newPromoObj],
1001
+ promo_price: {
1002
+ currency: 'CAD',
1003
+ amount: (0, round_1.default)(newDiscountAmount, 3)
1004
+ }
1005
+ };
1006
+ };
1007
+ exports.applyProCustomPromo = applyProCustomPromo;
1008
+ var getFormattedProdGR = function (decli, productSlug, isPro) {
1009
+ 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"]);
1010
+ return !!isPro ? __assign(__assign({}, rest), (productSlug !== 'kentucky' ? { tier_pricing: tier_pricing } : {})) : decli;
1011
+ };
1012
+ exports.getFormattedProdGR = getFormattedProdGR;
1013
+ var shouldHideItemIfRegPriceIs0 = function (item, productSlug, isUpsellOfInstallProd) {
1014
+ var regPriceIs0 = item.regular_price.amount == 0;
1015
+ if (!regPriceIs0)
1016
+ return false;
1017
+ if (!item.is_service)
1018
+ return false;
1019
+ if (!!isUpsellOfInstallProd)
1020
+ return false;
1021
+ if (expedition_1.slugsToCheckFromExpeditionFees.shipping.includes(productSlug))
1022
+ return false;
1023
+ return true;
1024
+ };
1025
+ exports.shouldHideItemIfRegPriceIs0 = shouldHideItemIfRegPriceIs0;
1026
1026
  //# sourceMappingURL=products.js.map