addio-admin-sdk 1.7.21 → 1.7.22

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