addio-admin-sdk 1.7.86 → 1.7.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/.babelrc +17 -17
  2. package/.env +14 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/publish_coverage.yam_ +69 -69
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +537 -537
  7. package/dist/Interfaces/Address/index.d.ts +21 -21
  8. package/dist/Interfaces/Address/index.js +16 -16
  9. package/dist/Interfaces/Algolia/index.d.ts +164 -164
  10. package/dist/Interfaces/Algolia/index.js +2 -2
  11. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  12. package/dist/Interfaces/Attachement/index.js +2 -2
  13. package/dist/Interfaces/Attribute/index.d.ts +52 -52
  14. package/dist/Interfaces/Attribute/index.js +10 -10
  15. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  16. package/dist/Interfaces/BGJob/index.js +25 -25
  17. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  18. package/dist/Interfaces/BaseClass/index.js +2 -2
  19. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  20. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  21. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  22. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  23. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  24. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  25. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  26. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  27. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  28. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  29. package/dist/Interfaces/Booking/index.d.ts +74 -74
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +15 -15
  32. package/dist/Interfaces/Brand/index.js +2 -2
  33. package/dist/Interfaces/CMS/index.d.ts +25 -25
  34. package/dist/Interfaces/CMS/index.js +2 -2
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  38. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  39. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  40. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  41. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  42. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  43. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  44. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  45. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  46. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  47. package/dist/Interfaces/Cart/index.d.ts +424 -424
  48. package/dist/Interfaces/Cart/index.js +192 -192
  49. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  50. package/dist/Interfaces/Catalogue/index.js +37 -37
  51. package/dist/Interfaces/Category/index.d.ts +33 -33
  52. package/dist/Interfaces/Category/index.js +2 -2
  53. package/dist/Interfaces/Chart/index.d.ts +11 -11
  54. package/dist/Interfaces/Chart/index.js +2 -2
  55. package/dist/Interfaces/Class/index.d.ts +8 -8
  56. package/dist/Interfaces/Class/index.js +2 -2
  57. package/dist/Interfaces/Consent/index.d.ts +6 -6
  58. package/dist/Interfaces/Consent/index.js +2 -2
  59. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  60. package/dist/Interfaces/Context/IContextProps.js +2 -2
  61. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  62. package/dist/Interfaces/Context/IContextState.js +2 -2
  63. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  64. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  65. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  66. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  67. package/dist/Interfaces/Customer/IStoreCredit.d.ts +12 -12
  68. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  69. package/dist/Interfaces/Customer/index.d.ts +97 -97
  70. package/dist/Interfaces/Customer/index.js +141 -141
  71. package/dist/Interfaces/Declination/index.d.ts +114 -114
  72. package/dist/Interfaces/Declination/index.js +60 -60
  73. package/dist/Interfaces/Document/index.d.ts +8 -8
  74. package/dist/Interfaces/Document/index.js +2 -2
  75. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  76. package/dist/Interfaces/Elastic/index.js +2 -2
  77. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  78. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  79. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  80. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  81. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  82. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  84. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  86. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  88. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  90. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  92. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  94. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  95. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  96. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  97. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  98. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  99. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  100. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  101. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  102. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  103. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  104. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  105. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  106. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  107. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  108. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  109. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  110. package/dist/Interfaces/Email/IEmail.js +56 -56
  111. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  112. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  113. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  114. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  115. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  116. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  117. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  118. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  119. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  120. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  121. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  122. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  123. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  124. package/dist/Interfaces/ExportSchema/index.js +2 -2
  125. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  126. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  127. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  128. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  129. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  130. package/dist/Interfaces/ExternalService/index.js +2 -2
  131. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  132. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  133. package/dist/Interfaces/G2/index.d.ts +556 -556
  134. package/dist/Interfaces/G2/index.js +36 -36
  135. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  136. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  137. package/dist/Interfaces/Indexed/Product/index.d.ts +97 -97
  138. package/dist/Interfaces/Indexed/Product/index.js +212 -212
  139. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  140. package/dist/Interfaces/Inventory/index.js +8 -8
  141. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  142. package/dist/Interfaces/Invoice/index.js +2 -2
  143. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  144. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  145. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  146. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  147. package/dist/Interfaces/Menu/index.d.ts +23 -23
  148. package/dist/Interfaces/Menu/index.js +10 -10
  149. package/dist/Interfaces/Note/index.d.ts +10 -0
  150. package/dist/Interfaces/Note/index.js +8 -0
  151. package/dist/Interfaces/Note/index.js.map +1 -0
  152. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  153. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  154. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  155. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  156. package/dist/Interfaces/Order/index.d.ts +4 -4
  157. package/dist/Interfaces/Order/index.js +2 -2
  158. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  159. package/dist/Interfaces/Org/IRelUser.js +2 -2
  160. package/dist/Interfaces/Org/index.d.ts +29 -29
  161. package/dist/Interfaces/Org/index.js +12 -12
  162. package/dist/Interfaces/Payment/index.d.ts +13 -13
  163. package/dist/Interfaces/Payment/index.js +2 -2
  164. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  165. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  166. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  167. package/dist/Interfaces/Product/IImportProduct.js +791 -791
  168. package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
  169. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  170. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  171. package/dist/Interfaces/Product/IPricing.js +174 -174
  172. package/dist/Interfaces/Product/index.d.ts +127 -127
  173. package/dist/Interfaces/Product/index.js +56 -56
  174. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  175. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  176. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  177. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  178. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  179. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  180. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  181. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  182. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  183. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  184. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  185. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  186. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  187. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  188. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  189. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  190. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  191. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  192. package/dist/Interfaces/Quote/index.d.ts +5 -5
  193. package/dist/Interfaces/Quote/index.js +2 -2
  194. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  195. package/dist/Interfaces/Refunds/index.js +2 -2
  196. package/dist/Interfaces/Rules/IDiscountRule.d.ts +137 -137
  197. package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
  198. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  199. package/dist/Interfaces/Schedule/index.js +2 -2
  200. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  201. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  202. package/dist/Interfaces/Services/IService.d.ts +12 -12
  203. package/dist/Interfaces/Services/IService.js +2 -2
  204. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  205. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  206. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  207. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  208. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  209. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  210. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  211. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  212. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  213. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  214. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  215. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  216. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  217. package/dist/Interfaces/Slider/GR.js +271 -271
  218. package/dist/Interfaces/Slider/index.d.ts +30 -30
  219. package/dist/Interfaces/Slider/index.js +2 -2
  220. package/dist/Interfaces/Space/IExternalService.d.ts +52 -52
  221. package/dist/Interfaces/Space/IExternalService.js +43 -43
  222. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  223. package/dist/Interfaces/Space/IMember.js +9 -9
  224. package/dist/Interfaces/Space/index.d.ts +385 -385
  225. package/dist/Interfaces/Space/index.js +159 -159
  226. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  227. package/dist/Interfaces/Specials/gr.js +2 -2
  228. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  229. package/dist/Interfaces/StockNotification/index.js +2 -2
  230. package/dist/Interfaces/Store/index.d.ts +62 -62
  231. package/dist/Interfaces/Store/index.js +27 -27
  232. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  233. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  234. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  235. package/dist/Interfaces/Supplier/index.js +24 -24
  236. package/dist/Interfaces/TCG/index.d.ts +110 -110
  237. package/dist/Interfaces/TCG/index.js +27 -27
  238. package/dist/Interfaces/Tag/index.d.ts +18 -18
  239. package/dist/Interfaces/Tag/index.js +2 -2
  240. package/dist/Interfaces/Tax/index.d.ts +13 -13
  241. package/dist/Interfaces/Tax/index.js +2 -2
  242. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  243. package/dist/Interfaces/TransferRequest/index.js +43 -43
  244. package/dist/Interfaces/Translation/index.d.ts +8 -8
  245. package/dist/Interfaces/Translation/index.js +5 -5
  246. package/dist/Interfaces/Update/index.d.ts +10 -10
  247. package/dist/Interfaces/Update/index.js +2 -2
  248. package/dist/Interfaces/User/IUser.d.ts +65 -65
  249. package/dist/Interfaces/User/IUser.js +8 -8
  250. package/dist/Interfaces/Version/index.d.ts +11 -11
  251. package/dist/Interfaces/Version/index.js +2 -2
  252. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  253. package/dist/Interfaces/Wishlist/index.js +2 -2
  254. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  255. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  256. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  257. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  258. package/dist/constants/enums.d.ts +6 -6
  259. package/dist/constants/enums.js +10 -10
  260. package/dist/constants/services.d.ts +2 -2
  261. package/dist/constants/services.js +111 -111
  262. package/dist/constants/version.d.ts +2 -2
  263. package/dist/constants/version.js +5 -5
  264. package/dist/index.d.ts +32 -32
  265. package/dist/index.js +242 -242
  266. package/dist/lib/Attribute/index.d.ts +14 -14
  267. package/dist/lib/Attribute/index.js +143 -143
  268. package/dist/lib/BGJob/index.d.ts +9 -9
  269. package/dist/lib/BGJob/index.js +212 -212
  270. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  271. package/dist/lib/BackgroundWorker/index.js +59 -59
  272. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  273. package/dist/lib/Blog/BlogArticle.js +10 -10
  274. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  275. package/dist/lib/Blog/BlogAuthor.js +10 -10
  276. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  277. package/dist/lib/Blog/BlogCategory.js +10 -10
  278. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  279. package/dist/lib/Blog/BlogKeyword.js +10 -10
  280. package/dist/lib/Booking/index.d.ts +70 -70
  281. package/dist/lib/Booking/index.js +576 -576
  282. package/dist/lib/Brand/index.d.ts +17 -17
  283. package/dist/lib/Brand/index.js +113 -113
  284. package/dist/lib/Cart/index.d.ts +206 -206
  285. package/dist/lib/Cart/index.js +3164 -3164
  286. package/dist/lib/Catalogue/index.d.ts +9 -9
  287. package/dist/lib/Catalogue/index.js +69 -69
  288. package/dist/lib/Category/index.d.ts +27 -27
  289. package/dist/lib/Category/index.js +190 -190
  290. package/dist/lib/Class/index.d.ts +12 -12
  291. package/dist/lib/Class/index.js +58 -58
  292. package/dist/lib/Consent/index.d.ts +4 -4
  293. package/dist/lib/Consent/index.js +29 -29
  294. package/dist/lib/Customer/index.d.ts +11 -11
  295. package/dist/lib/Customer/index.js +68 -68
  296. package/dist/lib/Declination/index.d.ts +9 -9
  297. package/dist/lib/Declination/index.js +24 -24
  298. package/dist/lib/Discount/index.d.ts +18 -18
  299. package/dist/lib/Discount/index.js +470 -470
  300. package/dist/lib/ElasticSearch/index.d.ts +8 -8
  301. package/dist/lib/ElasticSearch/index.js +45 -45
  302. package/dist/lib/Elavon/index.d.ts +18 -18
  303. package/dist/lib/Elavon/index.js +130 -130
  304. package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
  305. package/dist/lib/Email/AbandonedCartEmail.js +16 -16
  306. package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
  307. package/dist/lib/Email/AccountConfirmationEmail.js +22 -22
  308. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
  309. package/dist/lib/Email/AdminOrderConfirmationEmail.js +16 -16
  310. package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
  311. package/dist/lib/Email/ApplicationEmail.js +16 -16
  312. package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
  313. package/dist/lib/Email/BackInStockEmail.js +16 -16
  314. package/dist/lib/Email/ContactEmail.d.ts +8 -8
  315. package/dist/lib/Email/ContactEmail.js +16 -16
  316. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
  317. package/dist/lib/Email/CustomerBookingAdminEmail.js +16 -16
  318. package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
  319. package/dist/lib/Email/CustomerBookingEmail.js +16 -16
  320. package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
  321. package/dist/lib/Email/OrderConfirmationEmail.js +16 -16
  322. package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
  323. package/dist/lib/Email/OrderDenounciationEmail.js +16 -16
  324. package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
  325. package/dist/lib/Email/OrderSampleEmail.js +16 -16
  326. package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
  327. package/dist/lib/Email/OtherTypeEmails.js +19 -19
  328. package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
  329. package/dist/lib/Email/PasswordResetEmail.js +16 -16
  330. package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
  331. package/dist/lib/Email/PhotoShootEmail.js +16 -16
  332. package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
  333. package/dist/lib/Email/PickUpConfirmation.js +16 -16
  334. package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
  335. package/dist/lib/Email/ShippingConfirmation.js +16 -16
  336. package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
  337. package/dist/lib/Email/WelcomeEmail.js +16 -16
  338. package/dist/lib/Email/index.d.ts +8 -8
  339. package/dist/lib/Email/index.js +23 -23
  340. package/dist/lib/ExternalService/Ebay.d.ts +62 -62
  341. package/dist/lib/ExternalService/Ebay.js +102 -102
  342. package/dist/lib/ExternalService/index.d.ts +5 -5
  343. package/dist/lib/ExternalService/index.js +10 -10
  344. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  345. package/dist/lib/FirstOrderTracking/index.js +10 -10
  346. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  347. package/dist/lib/Indexed/IndexedCart.js +86 -86
  348. package/dist/lib/Indexed/Product.d.ts +17 -17
  349. package/dist/lib/Indexed/Product.js +48 -48
  350. package/dist/lib/Inventory/index.d.ts +49 -49
  351. package/dist/lib/Inventory/index.js +314 -314
  352. package/dist/lib/Invoice/index.d.ts +5 -5
  353. package/dist/lib/Invoice/index.js +10 -10
  354. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  355. package/dist/lib/MarketplacePublication/index.js +118 -118
  356. package/dist/lib/Menu/index.d.ts +11 -11
  357. package/dist/lib/Menu/index.js +103 -103
  358. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  359. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  360. package/dist/lib/Note/index.d.ts +4 -0
  361. package/dist/lib/Note/index.js +7 -0
  362. package/dist/lib/Note/index.js.map +1 -0
  363. package/dist/lib/Order/index.d.ts +7 -7
  364. package/dist/lib/Order/index.js +33 -33
  365. package/dist/lib/Org/index.d.ts +27 -27
  366. package/dist/lib/Org/index.js +175 -175
  367. package/dist/lib/PandaPay/index.d.ts +16 -16
  368. package/dist/lib/PandaPay/index.js +170 -170
  369. package/dist/lib/Paysafe/index.d.ts +11 -11
  370. package/dist/lib/Paysafe/index.js +40 -40
  371. package/dist/lib/Product/index.d.ts +154 -154
  372. package/dist/lib/Product/index.js +793 -793
  373. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  374. package/dist/lib/ProductAttribute/index.js +45 -45
  375. package/dist/lib/PromiseToPurchase/index.d.ts +37 -37
  376. package/dist/lib/PromiseToPurchase/index.js +264 -264
  377. package/dist/lib/PurchaseOrder/index.d.ts +9 -9
  378. package/dist/lib/PurchaseOrder/index.js +16 -16
  379. package/dist/lib/Schedule/index.d.ts +5 -5
  380. package/dist/lib/Schedule/index.js +12 -12
  381. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  382. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  383. package/dist/lib/Service/index.d.ts +5 -5
  384. package/dist/lib/Service/index.js +13 -13
  385. package/dist/lib/Shipment/index.d.ts +28 -28
  386. package/dist/lib/Shipment/index.js +357 -357
  387. package/dist/lib/Slider/index.d.ts +16 -16
  388. package/dist/lib/Slider/index.js +113 -113
  389. package/dist/lib/Space/index.d.ts +873 -873
  390. package/dist/lib/Space/index.js +5094 -5094
  391. package/dist/lib/StockNotification/index.d.ts +4 -4
  392. package/dist/lib/StockNotification/index.js +6 -6
  393. package/dist/lib/Store/index.d.ts +5 -5
  394. package/dist/lib/Store/index.js +12 -12
  395. package/dist/lib/Supplier/Command.d.ts +5 -5
  396. package/dist/lib/Supplier/Command.js +10 -10
  397. package/dist/lib/Supplier/index.d.ts +25 -25
  398. package/dist/lib/Supplier/index.js +22 -22
  399. package/dist/lib/Tags/index.d.ts +6 -6
  400. package/dist/lib/Tags/index.js +21 -21
  401. package/dist/lib/Tax/index.d.ts +8 -8
  402. package/dist/lib/Tax/index.js +54 -54
  403. package/dist/lib/TransferRequest/index.d.ts +112 -112
  404. package/dist/lib/TransferRequest/index.js +794 -794
  405. package/dist/lib/Update/index.d.ts +10 -10
  406. package/dist/lib/Update/index.js +22 -22
  407. package/dist/lib/User/index.d.ts +35 -35
  408. package/dist/lib/User/index.js +248 -248
  409. package/dist/lib/Wishlist/index.d.ts +5 -5
  410. package/dist/lib/Wishlist/index.js +10 -10
  411. package/dist/lib/base.d.ts +14 -14
  412. package/dist/lib/base.js +62 -62
  413. package/dist/lib/baseService.d.ts +17 -17
  414. package/dist/lib/baseService.js +43 -43
  415. package/dist/rules/GR/constants/data.d.ts +26 -26
  416. package/dist/rules/GR/constants/data.js +55 -55
  417. package/dist/rules/GR/constants/products.d.ts +8 -8
  418. package/dist/rules/GR/constants/products.js +234 -234
  419. package/dist/rules/GR/interfaces/cart.d.ts +84 -83
  420. package/dist/rules/GR/interfaces/cart.js +41 -40
  421. package/dist/rules/GR/interfaces/cart.js.map +1 -1
  422. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  423. package/dist/rules/GR/interfaces/data.js +104 -104
  424. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  425. package/dist/rules/GR/interfaces/products.js +10 -10
  426. package/dist/rules/GR/utils/cart.d.ts +53 -53
  427. package/dist/rules/GR/utils/cart.js +637 -631
  428. package/dist/rules/GR/utils/cart.js.map +1 -1
  429. package/dist/rules/GR/utils/data.d.ts +3 -3
  430. package/dist/rules/GR/utils/data.js +25 -25
  431. package/dist/rules/GR/utils/expedition.d.ts +71 -71
  432. package/dist/rules/GR/utils/expedition.js +1542 -1542
  433. package/dist/rules/GR/utils/g2.d.ts +176 -176
  434. package/dist/rules/GR/utils/g2.js +845 -845
  435. package/dist/rules/GR/utils/invoices.d.ts +24 -24
  436. package/dist/rules/GR/utils/invoices.js +174 -171
  437. package/dist/rules/GR/utils/invoices.js.map +1 -1
  438. package/dist/rules/GR/utils/products.d.ts +104 -104
  439. package/dist/rules/GR/utils/products.js +984 -984
  440. package/dist/rules/GR/utils/upsells.d.ts +79 -79
  441. package/dist/rules/GR/utils/upsells.js +183 -183
  442. package/dist/services/database/BaseProvider.d.ts +29 -29
  443. package/dist/services/database/BaseProvider.js +28 -28
  444. package/dist/services/database/BatchUtils.d.ts +14 -14
  445. package/dist/services/database/BatchUtils.js +43 -43
  446. package/dist/services/database/Config.d.ts +2 -2
  447. package/dist/services/database/Config.js +5 -5
  448. package/dist/services/database/DatabaseService.d.ts +41 -41
  449. package/dist/services/database/DatabaseService.js +152 -152
  450. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  451. package/dist/services/database/FirebaseProvider.js +218 -218
  452. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  453. package/dist/services/database/NotFirebaseProvider.js +243 -243
  454. package/dist/services/g2/G2OrderSlip.d.ts +42 -42
  455. package/dist/services/g2/G2OrderSlip.js +210 -210
  456. package/dist/services/g2/utils.d.ts +9 -9
  457. package/dist/services/g2/utils.js +703 -695
  458. package/dist/services/g2/utils.js.map +1 -1
  459. package/dist/services/logs/index.d.ts +20 -20
  460. package/dist/services/logs/index.js +61 -61
  461. package/dist/services/products/BaseClass.d.ts +50 -50
  462. package/dist/services/products/BaseClass.js +64 -64
  463. package/dist/services/products/TCGService.d.ts +29 -29
  464. package/dist/services/products/TCGService.js +499 -499
  465. package/dist/services/products/utils.d.ts +9 -9
  466. package/dist/services/products/utils.js +94 -94
  467. package/dist/utils/algolia.d.ts +6 -6
  468. package/dist/utils/algolia.js +21 -21
  469. package/dist/utils/anonymisation.d.ts +30 -30
  470. package/dist/utils/anonymisation.js +250 -250
  471. package/dist/utils/array.d.ts +5 -5
  472. package/dist/utils/array.js +14 -14
  473. package/dist/utils/aws.d.ts +14 -14
  474. package/dist/utils/aws.js +126 -126
  475. package/dist/utils/booking.d.ts +22 -22
  476. package/dist/utils/booking.js +118 -118
  477. package/dist/utils/cart.d.ts +103 -102
  478. package/dist/utils/cart.js +690 -652
  479. package/dist/utils/cart.js.map +1 -1
  480. package/dist/utils/categories.d.ts +2 -2
  481. package/dist/utils/categories.js +54 -54
  482. package/dist/utils/cmv.d.ts +10 -10
  483. package/dist/utils/cmv.js +107 -107
  484. package/dist/utils/console.d.ts +6 -6
  485. package/dist/utils/console.js +59 -59
  486. package/dist/utils/context.d.ts +20 -20
  487. package/dist/utils/context.js +61 -61
  488. package/dist/utils/currency.d.ts +6 -6
  489. package/dist/utils/currency.js +61 -61
  490. package/dist/utils/data.d.ts +31 -31
  491. package/dist/utils/data.js +293 -293
  492. package/dist/utils/date.d.ts +1 -1
  493. package/dist/utils/date.js +16 -16
  494. package/dist/utils/dimensions.d.ts +3 -3
  495. package/dist/utils/dimensions.js +16 -16
  496. package/dist/utils/discount.d.ts +46 -46
  497. package/dist/utils/discount.js +934 -934
  498. package/dist/utils/errors.d.ts +113 -113
  499. package/dist/utils/errors.js +113 -113
  500. package/dist/utils/file-admin.d.ts +8 -8
  501. package/dist/utils/file-admin.js +38 -38
  502. package/dist/utils/file.d.ts +38 -38
  503. package/dist/utils/file.js +200 -200
  504. package/dist/utils/firebase-admin.d.ts +2 -2
  505. package/dist/utils/firebase-admin.js +61 -61
  506. package/dist/utils/firebase.d.ts +41 -41
  507. package/dist/utils/firebase.js +131 -131
  508. package/dist/utils/import.d.ts +1 -1
  509. package/dist/utils/import.js +21 -21
  510. package/dist/utils/inventories.d.ts +49 -49
  511. package/dist/utils/inventories.js +392 -392
  512. package/dist/utils/locale.d.ts +15 -15
  513. package/dist/utils/locale.js +78 -78
  514. package/dist/utils/mailchimp.d.ts +58 -58
  515. package/dist/utils/mailchimp.js +495 -495
  516. package/dist/utils/mathUtils.d.ts +17 -17
  517. package/dist/utils/mathUtils.js +315 -315
  518. package/dist/utils/mongodb.d.ts +1 -1
  519. package/dist/utils/mongodb.js +22 -22
  520. package/dist/utils/object.d.ts +13 -13
  521. package/dist/utils/object.js +115 -115
  522. package/dist/utils/payment.d.ts +10 -10
  523. package/dist/utils/payment.js +23 -23
  524. package/dist/utils/products.d.ts +32 -32
  525. package/dist/utils/products.js +186 -186
  526. package/dist/utils/promiseToPurchase.d.ts +56 -56
  527. package/dist/utils/promiseToPurchase.js +195 -195
  528. package/dist/utils/prosprsearch.d.ts +26 -26
  529. package/dist/utils/prosprsearch.js +182 -182
  530. package/dist/utils/refunds.d.ts +2 -2
  531. package/dist/utils/refunds.js +21 -21
  532. package/dist/utils/sdc.d.ts +10 -10
  533. package/dist/utils/sdc.js +1302 -1302
  534. package/dist/utils/searchIndexes.d.ts +21 -21
  535. package/dist/utils/searchIndexes.js +210 -210
  536. package/dist/utils/services.d.ts +42 -42
  537. package/dist/utils/services.js +409 -409
  538. package/dist/utils/shipment.d.ts +110 -110
  539. package/dist/utils/shipment.js +345 -345
  540. package/dist/utils/simpletexting.d.ts +2 -2
  541. package/dist/utils/simpletexting.js +45 -45
  542. package/dist/utils/sliders.d.ts +4 -4
  543. package/dist/utils/sliders.js +24 -24
  544. package/dist/utils/string.d.ts +16 -16
  545. package/dist/utils/string.js +191 -191
  546. package/dist/utils/tcgService.d.ts +2 -2
  547. package/dist/utils/tcgService.js +8 -8
  548. package/dist/utils/tools.d.ts +1 -1
  549. package/dist/utils/tools.js +9 -9
  550. package/dist/utils/transferRequests.d.ts +19 -19
  551. package/dist/utils/transferRequests.js +43 -43
  552. package/dist/utils/update.d.ts +7 -7
  553. package/dist/utils/update.js +125 -125
  554. package/dist/utils/weight.d.ts +3 -3
  555. package/dist/utils/weight.js +16 -16
  556. package/dist/utils/zones.d.ts +11 -11
  557. package/dist/utils/zones.js +218 -218
  558. package/package.json +110 -110
  559. package/publish.sh +143 -143
  560. package/readme.md +182 -182
@@ -1,846 +1,846 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getCustomIncentiveInfo = exports.getDiscountRulesWithCustomIncentive = exports.getCustomIncentiveAmount = exports.checkForCustomPriceEquivalent = exports.isEscompteSuppItem = exports.buildEscompteSuppCartItem = exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = exports.getItemEscompteSupp = exports.getCustomPriceList = exports.fetchCustomPriceList = exports.getG2CustomerTypeFromCode = exports.getG2DiscountFromCode = exports.updateCustomerWithG2Info = exports.checkIfCustomerExistsInG2 = exports.transformG2CustomerToCustomer = exports.getAllNewOrUpdatedCustomersFromG2 = exports.getG2Customer = exports.fetchProductFromG2WithSku = exports.getG2ProductExternalValues = void 0;
18
- const uuid_1 = require("uuid");
19
- const crypto_js_1 = __importDefault(require("crypto-js"));
20
- const moment_1 = __importDefault(require("moment"));
21
- const maxBy_1 = __importDefault(require("lodash/maxBy"));
22
- const orderBy_1 = __importDefault(require("lodash/orderBy"));
23
- const toNumber_1 = __importDefault(require("lodash/toNumber"));
24
- const minBy_1 = __importDefault(require("lodash/minBy"));
25
- const uniqBy_1 = __importDefault(require("lodash/uniqBy"));
26
- const chunk_1 = __importDefault(require("lodash/chunk"));
27
- const Customer_1 = require("../../../Interfaces/Customer");
28
- const G2_1 = require("../../../Interfaces/G2");
29
- const Cart_1 = require("../../../Interfaces/Cart");
30
- const data_1 = require("../../../utils/data");
31
- const object_1 = require("../../../utils/object");
32
- const context_1 = require("../../../utils/context");
33
- const locale_1 = require("../../../utils/locale");
34
- const data_2 = require("../interfaces/data");
35
- const flatten_1 = __importDefault(require("lodash/flatten"));
36
- const groupBy_1 = __importDefault(require("lodash/groupBy"));
37
- const string_1 = require("../../../utils/string");
38
- const products_1 = require("../../../utils/products");
39
- const __1 = require("../../..");
40
- const anonymisation_1 = require("../../../utils/anonymisation");
41
- const discount_1 = require("../../../utils/discount");
42
- const cart_1 = require("../../../utils/cart");
43
- const round_1 = __importDefault(require("lodash/round"));
44
- const getG2ProductExternalValues = async (sku, g2Service, space, org) => {
45
- var _a, _b, _c;
46
- const g2Auth = g2Service.external_service_infos.api;
47
- if (!!!g2Auth)
48
- return;
49
- let externalValues = undefined;
50
- try {
51
- const productG2 = await (0, exports.fetchProductFromG2WithSku)(sku, space, org);
52
- if (!!productG2) {
53
- const noArticle = (_a = productG2.article.noArticle) !== null && _a !== void 0 ? _a : undefined;
54
- const catégorie1 = (_b = productG2.article['catégorie1']) !== null && _b !== void 0 ? _b : undefined;
55
- const catégorie2 = (_c = productG2.article['catégorie2']) !== null && _c !== void 0 ? _c : undefined;
56
- if (!!noArticle || !!catégorie1 || catégorie2) {
57
- externalValues = { noArticle, catégorie1, catégorie2 };
58
- }
59
- }
60
- return externalValues;
61
- }
62
- catch (e) {
63
- console.log('error on fetching external_values for sku from G2: ', e.toString());
64
- }
65
- };
66
- exports.getG2ProductExternalValues = getG2ProductExternalValues;
67
- const fetchProductFromG2WithSku = async (sku, space, org, logError) => {
68
- if (!!!space || !!!org)
69
- return;
70
- const api = __1.API_URL;
71
- const token = (0, context_1.getSpaceToken)(space, org);
72
- const callG2 = async (skuToUse) => {
73
- try {
74
- const g2ProductsQuery = await fetch(`${api}/services/g2/products/${skuToUse}`, {
75
- method: 'GET',
76
- headers: {
77
- 'Content-Type': 'application/json',
78
- Authorization: `Bearer ${token}`
79
- }
80
- });
81
- if (!!!g2ProductsQuery || g2ProductsQuery.status > 300)
82
- throw await g2ProductsQuery.json();
83
- const productG2 = await g2ProductsQuery.json();
84
- if (!!productG2 && productG2[0])
85
- return productG2[0];
86
- else
87
- throw 'Response has no value or array of products is empty.';
88
- }
89
- catch (e) {
90
- if (!!logError)
91
- console.log(`error on fetching prod from G2 for sku ${skuToUse}: `, e.toString());
92
- return;
93
- }
94
- };
95
- let g2Prod = await callG2(sku);
96
- if (!!!g2Prod && !sku.includes('-1')) {
97
- g2Prod = await callG2(`${sku}-1`);
98
- }
99
- return g2Prod;
100
- };
101
- exports.fetchProductFromG2WithSku = fetchProductFromG2WithSku;
102
- const getG2Customer = async (spaceToken, customerId) => {
103
- let allG2Customers = [];
104
- try {
105
- const api = __1.API_URL;
106
- const g2CustomersQuery = await fetch(`${api}/services/g2/customers/${customerId}`, {
107
- method: 'GET',
108
- headers: {
109
- 'Content-Type': 'application/json',
110
- Authorization: `Bearer ${spaceToken}`
111
- }
112
- });
113
- const G2RequestRes = await g2CustomersQuery.json();
114
- if (!!g2CustomersQuery.status && g2CustomersQuery.status !== 200)
115
- throw `Error - ${g2CustomersQuery.status}`;
116
- if (!!!G2RequestRes || !!!G2RequestRes.length)
117
- throw 'Error - no data';
118
- allG2Customers = G2RequestRes;
119
- }
120
- catch (e) {
121
- console.log('error on querying G2: ', e);
122
- }
123
- return allG2Customers;
124
- };
125
- exports.getG2Customer = getG2Customer;
126
- const getAllNewOrUpdatedCustomersFromG2 = async (space, allG2Customers) => {
127
- let allCurrentCustomers = [];
128
- try {
129
- const customerQuery = await space.customers.get();
130
- if (!!customerQuery && !!customerQuery.length)
131
- throw 'Error - no data';
132
- allCurrentCustomers = customerQuery.map((customer) => customer.data());
133
- }
134
- catch (e) {
135
- console.log('error on fetching customers: ', e.toString());
136
- return;
137
- }
138
- let allNewCustomers = [];
139
- let allUpdatedCustomers = [];
140
- for (let g2 of allG2Customers) {
141
- const sameCustomerInDb = allCurrentCustomers.find((c) => !!c.id && c.id.toUpperCase() === g2.client.noClient.toUpperCase());
142
- if (!!!sameCustomerInDb) {
143
- allNewCustomers.push((0, exports.transformG2CustomerToCustomer)(g2));
144
- continue;
145
- }
146
- if (!!(0, object_1.difference)(sameCustomerInDb, (0, exports.transformG2CustomerToCustomer)(g2))) {
147
- allUpdatedCustomers.push((0, exports.transformG2CustomerToCustomer)(g2, sameCustomerInDb));
148
- }
149
- }
150
- return { new: allNewCustomers, updated: allUpdatedCustomers };
151
- };
152
- exports.getAllNewOrUpdatedCustomersFromG2 = getAllNewOrUpdatedCustomersFromG2;
153
- const transformG2CustomerToCustomer = (g2Customer, prevCustomer, allGroups) => {
154
- const client = g2Customer.client;
155
- const getCustomerNameInfo = (aName) => {
156
- return {
157
- customer_firstname: aName.replace(/[0-9]/g, '').replace(/\-\-/g, '').split(' ')[0].trim(),
158
- customer_lastname: aName
159
- .replace(/[0-9]/g, '')
160
- .replace(/\-\-/g, '')
161
- .trim()
162
- .split(' ')
163
- .map((aString, key) => (!!!key ? undefined : aString))
164
- .filter((s) => !!s)
165
- .join(' '),
166
- customer_phone: aName.replace(/[^0-9]/g, '').trim()
167
- };
168
- };
169
- const getOtherCustomerInfo = (propsStr) => {
170
- const clientToCheck = client;
171
- if (!!!clientToCheck[propsStr])
172
- return {};
173
- const email = !!clientToCheck[`${propsStr}Email`] ? clientToCheck[`${propsStr}Email`].toLowerCase() : undefined;
174
- const fax = !!clientToCheck[`${propsStr}FAX`] ? (0, data_1.formatPhoneNumberDB)(clientToCheck[`${propsStr}FAX`]) : undefined;
175
- return Object.assign(Object.assign({}, (!!email
176
- ? {
177
- customer_email: email
178
- }
179
- : {
180
- customer_communicationPreference: 'phone'
181
- })), (!!fax
182
- ? {
183
- customer_photocopier: fax
184
- }
185
- : {}));
186
- };
187
- const getPrevCustomerAddress = (expeditionInfo) => {
188
- const defaultBilling = expeditionInfo.findIndex((ei) => ei.is_default && ei.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING));
189
- if (defaultBilling !== -1) {
190
- return [
191
- ...expeditionInfo.slice(0, defaultBilling),
192
- Object.assign(Object.assign({}, expeditionInfo[defaultBilling]), { address: Object.assign(Object.assign({}, expeditionInfo[defaultBilling].address), getClientAddress()) }),
193
- ...expeditionInfo.slice(defaultBilling + 1)
194
- ];
195
- }
196
- return [
197
- ...expeditionInfo,
198
- {
199
- address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
200
- is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
201
- expedition_recipient_name: !!client.nom ? client.nom : '',
202
- expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
203
- }
204
- ];
205
- };
206
- const getClientAddress = () => {
207
- return {
208
- city: client.ville,
209
- country: !!client.pays ? client.pays : 'CA',
210
- line1: client.adresse || '',
211
- postal_code: !!client.codePostal ? client.codePostal.toUpperCase() : '',
212
- state: client.province || ''
213
- };
214
- };
215
- const shouldCheckForCompany = () => {
216
- return !!client.nom || !!client.téléphone || !!client.personneRessourceComptes;
217
- };
218
- const defaultProGroup = 'aspirant';
219
- const getCustomerGroupFromTypeCode = (type) => {
220
- if (!!!allGroups)
221
- return defaultProGroup;
222
- const sameGroup = allGroups.find((g) => g.external_slug === type);
223
- return !!sameGroup ? sameGroup.slug : defaultProGroup;
224
- };
225
- let customerWithNewInfo = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultCustomer)()), (!!prevCustomer ? prevCustomer : { id: client.noClient.toUpperCase() })), (!!!prevCustomer
226
- ? {
227
- hash: crypto_js_1.default.AES.encrypt(client.noClient.toUpperCase(), client.noClient.toUpperCase()).toString(),
228
- type: Customer_1.CustomerTypeEnum.COMPANY
229
- }
230
- : {})), (!!client.limiteDeCrédit && Math.round((0, toNumber_1.default)(client.limiteDeCrédit))
231
- ? {
232
- has_credit_line: true,
233
- credit_line_max: client.limiteDeCrédit
234
- }
235
- : {})), (!!client.noReprésentant ? { represented_by: client.noReprésentant } : {})), { basic_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), (!!prevCustomer ? prevCustomer.basic_info : { customer_type: Customer_1.BasicCustomerTypeEnum.PRO })), (!!client.email ? { customer_email: client.email.split(';')[0].toLowerCase() } : {})), (!!client.fax ? { customer_photocopier: client.fax } : {})), (!!client.personneRessourceVentes ? getCustomerNameInfo(client.personneRessourceVentes) : {})), { customer_professionnal_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (!!prevCustomer ? prevCustomer.basic_info.customer_professionnal_info : {})), { professionnal_title: !!client.groupeDeClient && !!(0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient)
236
- ? getCustomerGroupFromTypeCode((0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient))
237
- : defaultProGroup, proof_doc_value: client.noClient.toUpperCase() }), (!!client.noCondition ? { terms_code: client.noCondition } : {})), (!!client.groupeDeClient ? { external_customer_group: client.groupeDeClient } : {})), (!!client.codeFA ? { external_customer_code: client.codeFA } : {})), (!!client.classePrix ? { external_price_class: client.classePrix.toString() } : {})), (!!client.classement5 ? { external_customer_class: client.classement5 } : {})) }) }), ((!!prevCustomer && !!prevCustomer.company_info) || shouldCheckForCompany()
238
- ? {
239
- company_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info ? prevCustomer.company_info : {})), { invoice_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info && !!prevCustomer.company_info.invoice_info
240
- ? prevCustomer.company_info.invoice_info
241
- : {})), { legal_name: !!client.nom ? client.nom : '' }), (!!client.téléphone ? { phone: (0, data_1.formatPhoneNumberDB)(client.téléphone) } : {})) }), (!!client.personneRessourceComptes || !!client.personneRessourceAutres
242
- ? {
243
- other_users: [
244
- ...(!!client.personneRessourceComptes
245
- ? [
246
- Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceComptes)), getOtherCustomerInfo('personneRessourceComptes'))
247
- ]
248
- : []),
249
- ...(!!client.personneRessourceAutres
250
- ? [
251
- Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceAutres)), getOtherCustomerInfo('personneRessourceAutres'))
252
- ]
253
- : [])
254
- ]
255
- }
256
- : {}))
257
- }
258
- : {})), { expedition_info: !!prevCustomer && prevCustomer.expedition_info && prevCustomer.expedition_info.length
259
- ? prevCustomer.expedition_info.length > 1
260
- ? getPrevCustomerAddress(prevCustomer.expedition_info)
261
- : [
262
- Object.assign(Object.assign({}, prevCustomer.expedition_info[0]), { address: Object.assign(Object.assign({}, (prevCustomer.expedition_info[0].address ? prevCustomer.expedition_info[0].address : {})), getClientAddress()), is_default: [
263
- ...(prevCustomer.expedition_info[0].is_default || []),
264
- ...(!!!prevCustomer.expedition_info[0].is_default ||
265
- !!!prevCustomer.expedition_info[0].is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)
266
- ? [Customer_1.defaultExpeditionOptionsEnum.BILLING]
267
- : [])
268
- ] })
269
- ]
270
- : [
271
- {
272
- address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
273
- is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
274
- expedition_recipient_name: !!client.nom ? client.nom : '',
275
- expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
276
- }
277
- ] });
278
- if (!!__1.isTestEnv &&
279
- !!prevCustomer &&
280
- !!prevCustomer.basic_info.customer_email &&
281
- prevCustomer.basic_info.customer_email.includes('@dummy.com')) {
282
- const allPropsToReset = anonymisation_1.g2Properties.map((p) => p.path);
283
- for (let prop of allPropsToReset) {
284
- const prevValue = (0, object_1.recursiveCheckObject)(prevCustomer, prop);
285
- const currentValue = (0, object_1.recursiveCheckObject)(customerWithNewInfo, prop);
286
- if (prevValue == currentValue)
287
- continue;
288
- customerWithNewInfo = (0, object_1.recursiveSetObject)(customerWithNewInfo, prevValue, prop);
289
- }
290
- }
291
- return customerWithNewInfo;
292
- };
293
- exports.transformG2CustomerToCustomer = transformG2CustomerToCustomer;
294
- const checkIfCustomerExistsInG2 = async (customerID, space, org) => {
295
- try {
296
- const token = (0, context_1.getSpaceToken)(space, org);
297
- if (!!!token)
298
- throw new Error('no token found for space');
299
- const api = __1.API_URL;
300
- let response = await fetch(`${api}/services/g2/customers/${customerID}/exists`, {
301
- method: 'GET',
302
- headers: {
303
- 'Content-Type': 'application/json',
304
- Authorization: `Bearer ${token}`
305
- }
306
- });
307
- if (!!response.status && response.status !== 200)
308
- throw `Error - ${response.status}`;
309
- const { exists } = await response.json();
310
- return exists;
311
- }
312
- catch (e) {
313
- console.log('error on checking customer in G2: ', e.toString());
314
- return false;
315
- }
316
- };
317
- exports.checkIfCustomerExistsInG2 = checkIfCustomerExistsInG2;
318
- const updateCustomerWithG2Info = async (customerID, space, org, addToDB = true, skipEmailCheck = false) => {
319
- console.log('===============');
320
- console.log('in v2 sdk updateCustomerWithG2Info');
321
- try {
322
- const token = (0, context_1.getSpaceToken)(space, org);
323
- if (!!!token)
324
- return;
325
- const api = __1.API_URL;
326
- console.log('----------------------');
327
- let delay1 = (0, moment_1.default)();
328
- let updatedCustomerQuery = await fetch(`${api}/services/g2/customers/${customerID}/convert`, {
329
- method: 'GET',
330
- headers: {
331
- 'Content-Type': 'application/json',
332
- Authorization: `Bearer ${token}`
333
- }
334
- });
335
- console.log('called api to update customer delay: ', (0, moment_1.default)().diff(delay1, 'seconds'));
336
- if (!!updatedCustomerQuery.status && updatedCustomerQuery.status !== 200)
337
- throw `Error - ${updatedCustomerQuery.status}`;
338
- const G2RequestRes = await updatedCustomerQuery.json();
339
- if (!!!G2RequestRes)
340
- throw 'Error - no data';
341
- let updatedCustomer = (0, anonymisation_1.hideG2CustomerInfoIfNeeded)(G2RequestRes.customer);
342
- if (!!addToDB) {
343
- console.log('----------------------');
344
- let delay4 = (0, moment_1.default)();
345
- await space.addCustomer(updatedCustomer, undefined, skipEmailCheck);
346
- console.log('saving to database delay: ', (0, moment_1.default)().diff(delay4, 'seconds'));
347
- }
348
- console.log('=====================');
349
- return updatedCustomer;
350
- }
351
- catch (e) {
352
- console.log('error on updating customer info with G2: ', e.toString());
353
- return;
354
- }
355
- };
356
- exports.updateCustomerWithG2Info = updateCustomerWithG2Info;
357
- const getG2DiscountFromCode = (code) => {
358
- const onlyNb = code.replace(/[^0-9]/gi, '');
359
- return !!!onlyNb || !!isNaN(Number(onlyNb)) ? undefined : (0, toNumber_1.default)(onlyNb);
360
- };
361
- exports.getG2DiscountFromCode = getG2DiscountFromCode;
362
- const getG2CustomerTypeFromCode = (code) => {
363
- let parsedCode = code;
364
- const possiblePrefixes = ['BASE', 'PAYS', 'RENC'];
365
- for (let prefix of possiblePrefixes) {
366
- parsedCode = parsedCode.replace(prefix, '');
367
- }
368
- parsedCode = parsedCode.replace(/[0-9]/gi, '');
369
- const possibleTypes = ['AM', 'AL', 'AS', 'AMN'];
370
- const checkWithPossibleTypes = (codeToCheck, removeFrom) => {
371
- if (!!!possibleTypes.includes(codeToCheck)) {
372
- if (codeToCheck.length === 1)
373
- return '';
374
- if (removeFrom == 'start') {
375
- return checkWithPossibleTypes(codeToCheck.substring(1), removeFrom);
376
- }
377
- else {
378
- return checkWithPossibleTypes(codeToCheck.replace(/.$/, ''), removeFrom);
379
- }
380
- }
381
- return codeToCheck;
382
- };
383
- if (!!parsedCode) {
384
- let removedValues = checkWithPossibleTypes(parsedCode, 'end');
385
- if (!!!removedValues)
386
- removedValues = checkWithPossibleTypes(parsedCode, 'start');
387
- parsedCode = removedValues;
388
- }
389
- return parsedCode;
390
- };
391
- exports.getG2CustomerTypeFromCode = getG2CustomerTypeFromCode;
392
- const fetchCustomPriceList = async (spaceToken, customerId, ignoreDashPriceList, onlyForProductSlugs) => {
393
- let prices = [];
394
- try {
395
- const api = __1.API_URL;
396
- const g2PriceListQuery = await fetch(`${api}/services/g2/customers/${customerId}/customPrices`, {
397
- method: 'POST',
398
- headers: {
399
- 'Content-Type': 'application/json',
400
- Authorization: `Bearer ${spaceToken}`
401
- },
402
- body: JSON.stringify(Object.assign({ ignoreDashPriceList: !!ignoreDashPriceList }, (!!onlyForProductSlugs ? { onlyForProductSlugs } : {})))
403
- });
404
- prices = await g2PriceListQuery.json();
405
- if (!!g2PriceListQuery.status && g2PriceListQuery.status !== 200)
406
- throw `Error - ${g2PriceListQuery.status}`;
407
- if (!!!prices || !!!prices.length)
408
- throw 'Error - no data';
409
- }
410
- catch (e) {
411
- console.log('error on fetching custom prices:', e.toString());
412
- }
413
- return prices;
414
- };
415
- exports.fetchCustomPriceList = fetchCustomPriceList;
416
- const getCustomPriceList = async (space, idClient, ignoreDashPriceList, onlyForProductSlugs) => {
417
- let priceList = [];
418
- let escomptesClient = [];
419
- let ententesClient = [];
420
- let G2Auth = '';
421
- let G2Url = '';
422
- const G2Service = space.services({ field: 'external_service_name', value: 'G2' });
423
- if (!!G2Service && !!G2Service.length) {
424
- G2Auth = G2Service[0].external_service_infos.api;
425
- G2Url = G2Service[0].external_service_infos.api_url;
426
- }
427
- if (!!!G2Auth || !!!G2Url)
428
- throw `Error on fetching G2 API info from space`;
429
- try {
430
- const customerReq = await fetch(`${G2Url}/clients?noClient=${idClient}`, {
431
- method: 'GET',
432
- headers: {
433
- Authorization: G2Auth
434
- }
435
- });
436
- const customers = await customerReq.json();
437
- if (customerReq.status !== 200) {
438
- throw `Error on fetching customers from G2 API: ${customerReq.status}`;
439
- }
440
- const allG2Customers = customers;
441
- const g2Customer = allG2Customers[0];
442
- if (!!!g2Customer)
443
- return priceList;
444
- const today = (0, moment_1.default)();
445
- const allCurrentEntentes = g2Customer.soumissions.filter((s) => !!s.soumission.actif &&
446
- !!s.soumission.dateDébut &&
447
- !!s.soumission.dateFin &&
448
- today.isBetween((0, moment_1.default)(s.soumission.dateDébut), (0, moment_1.default)(s.soumission.dateFin)));
449
- const mostRecent = (0, orderBy_1.default)(allCurrentEntentes, (e) => (0, moment_1.default)(e.soumission.dateDébut).unix(), 'desc');
450
- if (!!mostRecent) {
451
- ententesClient = mostRecent;
452
- }
453
- const { noClient, groupeDeClient, classePrix } = g2Customer.client;
454
- const customerType = !!!groupeDeClient ? undefined : (0, exports.getG2CustomerTypeFromCode)(groupeDeClient);
455
- try {
456
- const escomptesNumClient = await fetch(`${G2Url}/escompteclient?code=${noClient}`, {
457
- method: 'GET',
458
- headers: {
459
- Authorization: G2Auth
460
- }
461
- });
462
- const numClientResults = await escomptesNumClient.json();
463
- if (!!numClientResults.status && numClientResults.status !== 200) {
464
- console.log(`Error on fetching escompteClients from G2 API with noClient ${noClient}: ${numClientResults.status}`);
465
- }
466
- else {
467
- escomptesClient = [...escomptesClient, ...numClientResults.map((r) => r.escompteClient)];
468
- }
469
- }
470
- catch (e) {
471
- console.log('error on fetching escomptesClient from G2: ', e.toString());
472
- }
473
- try {
474
- if (!!groupeDeClient && groupeDeClient !== noClient) {
475
- const escomptesGroupeClient = await fetch(`${G2Url}/escompteclient?code=${groupeDeClient}`, {
476
- method: 'GET',
477
- headers: {
478
- Authorization: G2Auth
479
- }
480
- });
481
- const groupeClientResults = await escomptesGroupeClient.json();
482
- if (!!groupeClientResults.statuts && groupeClientResults.status !== 200) {
483
- console.log(`Error on fetching escompteClients from G2 API with groupeClient ${groupeDeClient}: ${groupeClientResults.status}`);
484
- }
485
- else {
486
- const groupeClientEscomptes = groupeClientResults.map((r) => r.escompteClient);
487
- const noDuplicates = groupeClientEscomptes.filter((es) => !!!es.code2 || !!!escomptesClient.some((e) => !!e.code2 && e.code2 === es.code2));
488
- escomptesClient = [...escomptesClient, ...noDuplicates];
489
- }
490
- }
491
- else {
492
- console.log('ignoring groupeClient escomptes because id and groupeClient are same');
493
- }
494
- }
495
- catch (e) {
496
- console.log('error on fetching escomptesClient from G2: ', e.toString());
497
- }
498
- let allProducts = [];
499
- try {
500
- if (!!onlyForProductSlugs && !!onlyForProductSlugs.length) {
501
- if (onlyForProductSlugs.length <= 10) {
502
- allProducts = await space.indexedProducts.get({
503
- query: [{ field: 'slug', operator: 'in', value: onlyForProductSlugs }]
504
- });
505
- }
506
- else {
507
- const batchResults = [];
508
- for (let group of (0, chunk_1.default)(onlyForProductSlugs, 10)) {
509
- let query = await space.indexedProducts.get({
510
- query: [{ field: 'slug', operator: 'in', value: group }]
511
- });
512
- batchResults.push(query);
513
- }
514
- allProducts = (0, flatten_1.default)(batchResults);
515
- }
516
- }
517
- else {
518
- allProducts = await space.indexedProducts.get({
519
- query: [{ field: 'draft', operator: '!=', value: true }]
520
- });
521
- }
522
- }
523
- catch (e) {
524
- console.log('error on fetching all products : ', e.toString());
525
- }
526
- if (!!!allProducts.length)
527
- return priceList;
528
- const allCustomerGroups = space.preferences.customers.groups() || [];
529
- const customerGroupByPriceClass = !!classePrix
530
- ? allCustomerGroups.find((g) => g.external_price_list_slug == classePrix.toString())
531
- : undefined;
532
- for (let prod of allProducts) {
533
- const data = prod.data();
534
- if (!!!data || !!data.draft)
535
- continue;
536
- const type = !!data.attributes && data.attributes[data_2.AttributesIdEnumGR.TYPE];
537
- for (let decli of data.declinations.filter((d) => !!!d.is_sample)) {
538
- let isNetPrice = !!decli.external_values && decli.external_values['catégorie2'] === 'NET';
539
- const sku = decli.sku;
540
- let basePrice = (0, toNumber_1.default)(decli.regular_price.amount);
541
- if (!!decli.prices_list && !!decli.prices_list.length && !!!ignoreDashPriceList) {
542
- let priceListItemToUse = undefined;
543
- const samePriceClassInPriceList = !!customerGroupByPriceClass
544
- ? decli.prices_list.find((pl) => pl.group_id == customerGroupByPriceClass.slug)
545
- : undefined;
546
- if (!!samePriceClassInPriceList && !isNaN((0, toNumber_1.default)(samePriceClassInPriceList.amount))) {
547
- priceListItemToUse = samePriceClassInPriceList;
548
- }
549
- else if (!!groupeDeClient) {
550
- const samePriceInPriceList = !!customerType
551
- ? decli.prices_list.find((p) => !!p.external_slug && p.external_slug === customerType)
552
- : undefined;
553
- const proPriceInPriceList = decli.prices_list.find((p) => p.group_id === 'aspirant');
554
- if (!!samePriceInPriceList && !isNaN((0, toNumber_1.default)(samePriceInPriceList.amount))) {
555
- priceListItemToUse = samePriceClassInPriceList;
556
- }
557
- else if (!!proPriceInPriceList && !isNaN((0, toNumber_1.default)(proPriceInPriceList.amount))) {
558
- priceListItemToUse = proPriceInPriceList;
559
- }
560
- }
561
- if (!!priceListItemToUse) {
562
- basePrice = (0, toNumber_1.default)(priceListItemToUse.amount);
563
- if (!!!isNetPrice) {
564
- isNetPrice = !!priceListItemToUse.is_net_price;
565
- }
566
- }
567
- }
568
- let comparePrices = [
569
- Object.assign(Object.assign({ price: basePrice, type: G2_1.CustomPriceItemTypeEnum.REG }, (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1')
570
- ? { code1: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1') }
571
- : {})), (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2')
572
- ? { code2: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2') }
573
- : {}))
574
- ];
575
- let foundEntenteForProduct = false;
576
- if (!!ententesClient.length) {
577
- for (let entente of ententesClient) {
578
- if (!!foundEntenteForProduct)
579
- break;
580
- let sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle === sku);
581
- if (!!!sameProd) {
582
- sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle.includes(sku));
583
- }
584
- if (!!sameProd) {
585
- const priceToSet = typeof sameProd.article.prixUnitaireNet === 'number'
586
- ? sameProd.article.prixUnitaireNet
587
- : typeof sameProd.article.prixUnitaire === 'number'
588
- ? sameProd.article.prixUnitaire
589
- : undefined;
590
- if (typeof priceToSet === 'number') {
591
- foundEntenteForProduct = true;
592
- comparePrices.push(Object.assign(Object.assign({ price: (0, toNumber_1.default)(priceToSet), type: G2_1.CustomPriceItemTypeEnum.ENTENTE }, (!!decli.external_values ? { code2: decli.external_values['catégorie2'] } : {})), (!!sameProd.article.pourcEscompte
593
- ? Object.assign(Object.assign({}, (typeof sameProd.article.prixUnitaire === 'number'
594
- ? { reg: sameProd.article.prixUnitaire }
595
- : {})), { percent: sameProd.article.pourcEscompte }) : {})));
596
- }
597
- }
598
- }
599
- }
600
- if (!!escomptesClient.length) {
601
- const findBestDeal = (escomptesToCheck) => {
602
- const bestDeal = (0, maxBy_1.default)(escomptesToCheck, (escompte) => (0, toNumber_1.default)(escompte.pourcEscompte));
603
- if (!!bestDeal) {
604
- comparePrices.push(Object.assign({ price: basePrice * ((100 - (0, toNumber_1.default)(bestDeal.pourcEscompte)) / 100), type: G2_1.CustomPriceItemTypeEnum.ESCOMPTE, percent: (0, toNumber_1.default)(bestDeal.pourcEscompte), code1: bestDeal.code1 }, (!!bestDeal.code2 ? { code2: bestDeal.code2 } : {})));
605
- }
606
- };
607
- if (!!!foundEntenteForProduct) {
608
- if (!!isNetPrice) {
609
- const sameCat1Escompte = escomptesClient.filter((e) => {
610
- if (!!!e.code2)
611
- return false;
612
- return decli.external_values && e.code2 === decli.external_values['catégorie1'] && e.code2 == 'DALLE';
613
- });
614
- if (!!sameCat1Escompte && !!sameCat1Escompte.length) {
615
- findBestDeal(sameCat1Escompte);
616
- }
617
- }
618
- else {
619
- const no2ndCode = escomptesClient.filter((e) => !!!e.code2);
620
- if (!!no2ndCode.length) {
621
- findBestDeal(no2ndCode);
622
- }
623
- let sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2 === sku);
624
- if (!!!sameSkuEscompte.length) {
625
- sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2.includes(sku));
626
- }
627
- if (!!sameSkuEscompte.length) {
628
- findBestDeal(sameSkuEscompte);
629
- }
630
- if (!!!sameSkuEscompte.length) {
631
- const sameBrandEscompte = escomptesClient.filter((e) => {
632
- if (!!!e.code2)
633
- return;
634
- return (decli.external_values &&
635
- (e.code2 === decli.external_values['catégorie2'] || e.code2 === decli.external_values['catégorie1']));
636
- });
637
- if (!!sameBrandEscompte) {
638
- findBestDeal(sameBrandEscompte);
639
- }
640
- }
641
- }
642
- }
643
- }
644
- comparePrices = (0, uniqBy_1.default)(comparePrices, (p) => p.price);
645
- const lowestPrice = (0, minBy_1.default)(comparePrices, (p) => p.price);
646
- let appliedPrice = lowestPrice;
647
- if (!!lowestPrice && lowestPrice.type == G2_1.CustomPriceItemTypeEnum.REG) {
648
- const ententeFound = comparePrices.find((p) => p.type == G2_1.CustomPriceItemTypeEnum.ENTENTE);
649
- if (!!ententeFound)
650
- appliedPrice = Object.assign(Object.assign({}, ententeFound), { reg: ententeFound.price });
651
- }
652
- let customPriceItemToPush = undefined;
653
- if (!!appliedPrice) {
654
- customPriceItemToPush = Object.assign(Object.assign({ sku: sku, parent_slug: data.slug, name: `${!!decli.parent_name &&
655
- !!!(0, locale_1.getPrincipalWord)(decli.name, space).trim().includes((0, locale_1.getPrincipalWord)(decli.parent_name).trim())
656
- ? (0, locale_1.getPrincipalWord)(decli.name, space) + ' - '
657
- : ''}${(0, locale_1.getPrincipalWord)(decli.name, space)}`, reg: basePrice }, (!!type
658
- ? {
659
- prod_type: type[0]
660
- }
661
- : {})), appliedPrice);
662
- }
663
- if (!!customPriceItemToPush) {
664
- priceList.push(customPriceItemToPush);
665
- }
666
- }
667
- }
668
- return priceList;
669
- }
670
- catch (e) {
671
- console.log('error on fetching customer from G2: ', e.toString());
672
- return e.toString();
673
- }
674
- };
675
- exports.getCustomPriceList = getCustomPriceList;
676
- const getItemEscompteSupp = (customPriceList, item) => {
677
- const code2InItem = (0, object_1.recursiveCheckObject)(item, `external_values.catégorie2`);
678
- let code2InPriceList = undefined;
679
- const customPriceItem = customPriceList.find((priceItem) => priceItem.sku === item.sku);
680
- if (!!customPriceItem && !!customPriceItem.code2) {
681
- code2InPriceList = customPriceItem.code2;
682
- }
683
- const code2ToCheck = code2InPriceList !== null && code2InPriceList !== void 0 ? code2InPriceList : code2InItem;
684
- if (!!!code2ToCheck)
685
- return;
686
- let foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2ToCheck);
687
- if (!!!foundEsc && !!code2InItem) {
688
- foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2InItem);
689
- }
690
- return foundEsc;
691
- };
692
- exports.getItemEscompteSupp = getItemEscompteSupp;
693
- const groupArrayOfItemsByItemAndCorrespondingEscompteItem = (items) => {
694
- return (0, flatten_1.default)(Object.values((0, groupBy_1.default)(items, (item) => ((0, exports.isEscompteSuppItem)(item.sku) ? (0, string_1.splitFromFirstChar)('-', item.sku)[1] : item.sku))));
695
- };
696
- exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = groupArrayOfItemsByItemAndCorrespondingEscompteItem;
697
- const buildEscompteSuppCartItem = (escompteItems, customPriceList, escompteSuppItem, item) => {
698
- if (!!!escompteItems[0])
699
- return;
700
- const priceToUse = (0, products_1.getLowestPrice)(item);
701
- const escompteDecli = escompteItems[0].data().declinations.find((decli) => decli.sku === escompteSuppItem.sku);
702
- if (!!!escompteDecli)
703
- return;
704
- const sameInCustomPriceList = customPriceList.find((c) => c.sku === escompteDecli.sku);
705
- if (!!sameInCustomPriceList &&
706
- sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG &&
707
- sameInCustomPriceList.price === 0)
708
- return;
709
- const escompteEquivalent = (0, exports.checkForCustomPriceEquivalent)(escompteDecli, customPriceList);
710
- return Object.assign(Object.assign({}, escompteEquivalent), { is_upsell_of_sku: item.sku, is_temp_prod: true, price_override: true, qte_override: true, qte: item.qte * priceToUse.price.amount, sku: `${escompteEquivalent.sku}-${item.sku}`, regular_price: (0, products_1.getLowestPrice)(escompteEquivalent).price });
711
- };
712
- exports.buildEscompteSuppCartItem = buildEscompteSuppCartItem;
713
- const isEscompteSuppItem = (itemSku) => {
714
- return Object.values(G2_1.EscomptesDeclinationSkusEnum).some((subString) => itemSku.includes(subString));
715
- };
716
- exports.isEscompteSuppItem = isEscompteSuppItem;
717
- const checkForCustomPriceEquivalent = (item, customPriceList, options = {}) => {
718
- var _a;
719
- const sameInCustomPriceList = customPriceList.find((i) => i.sku === item.sku);
720
- if (!!!sameInCustomPriceList)
721
- return item;
722
- const hasOverriddenPrice = item.price_override;
723
- if (!!hasOverriddenPrice && sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG)
724
- return item;
725
- const { regular_price, promo_price, discount_price, tier_pricing } = item, rest = __rest(item, ["regular_price", "promo_price", "discount_price", "tier_pricing"]);
726
- const isReg = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG;
727
- const isEntente = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.ENTENTE;
728
- const isPA = !!sameInCustomPriceList.PA_percent;
729
- const shouldUseCustomPriceForRegPrice = (!!isReg && !!!sameInCustomPriceList.percent) || (!!options.setNetPriceAsRegular && !!isEntente);
730
- const currentDiscountPrice = item.discount_price || { currency: 'CAD' };
731
- const currentPromoPrice = item.promo_price || { currency: 'CAD' };
732
- const calculatedRegPrice = !!item.price_override
733
- ? regular_price.amount
734
- : (!!isReg || !!isEntente) && sameInCustomPriceList.price == 0
735
- ? 0
736
- : !!shouldUseCustomPriceForRegPrice
737
- ? sameInCustomPriceList.price
738
- : sameInCustomPriceList.reg;
739
- let updatedCartItem = Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { regular_price: Object.assign(Object.assign(Object.assign({}, regular_price), { amount: calculatedRegPrice }), (sameInCustomPriceList.type !== G2_1.CustomPriceItemTypeEnum.REG && !!!regular_price.price_type
740
- ? { price_type: sameInCustomPriceList.type }
741
- : {})) }), (!!!hasOverriddenPrice
742
- ? Object.assign(Object.assign({}, (sameInCustomPriceList.percent || !!!isReg
743
- ? Object.assign({}, (!!sameInCustomPriceList.percent &&
744
- [G2_1.CustomPriceItemTypeEnum.ESCOMPTE, G2_1.CustomPriceItemTypeEnum.NORMAL_ESCOMPTE].includes(sameInCustomPriceList.type)
745
- ? {
746
- promo_price: Object.assign(Object.assign({}, currentPromoPrice), (!currentPromoPrice.overridden
747
- ? {
748
- amount: sameInCustomPriceList.price,
749
- price_type: sameInCustomPriceList.type
750
- }
751
- : {}))
752
- }
753
- :
754
- !!!options.setNetPriceAsRegular
755
- ? Object.assign({ discount_price: Object.assign(Object.assign({}, currentDiscountPrice), (!currentDiscountPrice.overridden
756
- ? {
757
- amount: sameInCustomPriceList.price,
758
- price_type: sameInCustomPriceList.type
759
- }
760
- : {})) }, (!!currentPromoPrice.overridden ? { promo_price: currentPromoPrice } : {})) : {})) :
761
- currentDiscountPrice.price_type === 'tierpricing' && !!!options.removeTierPricing
762
- ? {
763
- discount_price: Object.assign(Object.assign({}, item.discount_price), { original_amount: !!isReg || !!!options.setNetPriceAsRegular ? null : sameInCustomPriceList.price })
764
- }
765
- : {})), (!!isPA
766
- ? {
767
- promo_price: Object.assign(Object.assign({}, currentPromoPrice), { amount: (_a = sameInCustomPriceList.PA_price) !== null && _a !== void 0 ? _a : sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.PA_percent }),
768
- discount_price: Object.assign(Object.assign({}, currentDiscountPrice), { amount: sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.percent })
769
- }
770
- : {})) : {})), (!!!options.removeTierPricing && !!tier_pricing
771
- ? {
772
- tier_pricing
773
- }
774
- : {}));
775
- const priceUsedForPromoCalculations = !!updatedCartItem.discount_price
776
- ? updatedCartItem.discount_price.amount
777
- : updatedCartItem.regular_price.amount;
778
- const initialPriceToCompare = !!currentDiscountPrice ? currentDiscountPrice.amount : item.regular_price.amount;
779
- if (typeof currentPromoPrice.percent_applied == 'number' &&
780
- !!currentPromoPrice.overridden &&
781
- priceUsedForPromoCalculations != initialPriceToCompare) {
782
- updatedCartItem = Object.assign(Object.assign({}, updatedCartItem), { promo_price: Object.assign(Object.assign({}, (updatedCartItem.promo_price || { currency: 'CAD' })), { amount: (0, round_1.default)((0, cart_1.calculateAmountForCustomPromo)(updatedCartItem, Cart_1.CustomPromoType.EXTRA_PROMO, currentPromoPrice.percent_applied), priceUsedForPromoCalculations.toString().split('.').length) }) });
783
- }
784
- return updatedCartItem;
785
- };
786
- exports.checkForCustomPriceEquivalent = checkForCustomPriceEquivalent;
787
- const getCustomIncentiveAmount = (customPriceList) => {
788
- if (!!!customPriceList)
789
- return;
790
- const ententeSku = 'INCITATIF';
791
- let amount = 0;
792
- const entente = customPriceList.find((priceItem) => priceItem.sku === ententeSku);
793
- if (!!!entente || !!!entente.price || entente.type == G2_1.CustomPriceItemTypeEnum.REG)
794
- return;
795
- amount = entente.price * -100;
796
- return amount;
797
- };
798
- exports.getCustomIncentiveAmount = getCustomIncentiveAmount;
799
- const getDiscountRulesWithCustomIncentive = (incentiveAmount, discountRules) => {
800
- let hasBeenUpdated = false;
801
- const updatedDiscountRules = discountRules.map((rule) => {
802
- const promoType = (0, discount_1.getCartPromoType)(rule);
803
- if (promoType === Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES) {
804
- hasBeenUpdated = true;
805
- const updatedRule = rule;
806
- updatedRule.result.action_value = incentiveAmount;
807
- updatedRule.overridden = true;
808
- return updatedRule;
809
- }
810
- else {
811
- return rule;
812
- }
813
- });
814
- if (!hasBeenUpdated)
815
- return;
816
- return updatedDiscountRules;
817
- };
818
- exports.getDiscountRulesWithCustomIncentive = getDiscountRulesWithCustomIncentive;
819
- const getCustomIncentiveInfo = (customPriceList, discountRules, defaultIncentiveAmount) => {
820
- let discountRulesWithCustomIncentive;
821
- let customIncentiveAmount = (0, exports.getCustomIncentiveAmount)(customPriceList);
822
- const incentiveDiscountRule = (0, discount_1.getPaymentIncentiveDiscount)(discountRules);
823
- if (!!!customIncentiveAmount) {
824
- if (!!incentiveDiscountRule && !!incentiveDiscountRule.overridden) {
825
- return {
826
- amount: defaultIncentiveAmount || 0,
827
- updatedDiscountRules: discountRules.map((dr) => {
828
- if (dr.id !== incentiveDiscountRule.id)
829
- return dr;
830
- return Object.assign(Object.assign(Object.assign({}, dr), (defaultIncentiveAmount ? { result: Object.assign(Object.assign({}, dr.result), { action_value: defaultIncentiveAmount }) } : {})), { overridden: false });
831
- }),
832
- reset: true
833
- };
834
- }
835
- return;
836
- }
837
- discountRulesWithCustomIncentive = (0, exports.getDiscountRulesWithCustomIncentive)(customIncentiveAmount, discountRules);
838
- if (!!!discountRulesWithCustomIncentive)
839
- return;
840
- return {
841
- amount: customIncentiveAmount,
842
- updatedDiscountRules: discountRulesWithCustomIncentive
843
- };
844
- };
845
- exports.getCustomIncentiveInfo = getCustomIncentiveInfo;
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getCustomIncentiveInfo = exports.getDiscountRulesWithCustomIncentive = exports.getCustomIncentiveAmount = exports.checkForCustomPriceEquivalent = exports.isEscompteSuppItem = exports.buildEscompteSuppCartItem = exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = exports.getItemEscompteSupp = exports.getCustomPriceList = exports.fetchCustomPriceList = exports.getG2CustomerTypeFromCode = exports.getG2DiscountFromCode = exports.updateCustomerWithG2Info = exports.checkIfCustomerExistsInG2 = exports.transformG2CustomerToCustomer = exports.getAllNewOrUpdatedCustomersFromG2 = exports.getG2Customer = exports.fetchProductFromG2WithSku = exports.getG2ProductExternalValues = void 0;
18
+ const uuid_1 = require("uuid");
19
+ const crypto_js_1 = __importDefault(require("crypto-js"));
20
+ const moment_1 = __importDefault(require("moment"));
21
+ const maxBy_1 = __importDefault(require("lodash/maxBy"));
22
+ const orderBy_1 = __importDefault(require("lodash/orderBy"));
23
+ const toNumber_1 = __importDefault(require("lodash/toNumber"));
24
+ const minBy_1 = __importDefault(require("lodash/minBy"));
25
+ const uniqBy_1 = __importDefault(require("lodash/uniqBy"));
26
+ const chunk_1 = __importDefault(require("lodash/chunk"));
27
+ const Customer_1 = require("../../../Interfaces/Customer");
28
+ const G2_1 = require("../../../Interfaces/G2");
29
+ const Cart_1 = require("../../../Interfaces/Cart");
30
+ const data_1 = require("../../../utils/data");
31
+ const object_1 = require("../../../utils/object");
32
+ const context_1 = require("../../../utils/context");
33
+ const locale_1 = require("../../../utils/locale");
34
+ const data_2 = require("../interfaces/data");
35
+ const flatten_1 = __importDefault(require("lodash/flatten"));
36
+ const groupBy_1 = __importDefault(require("lodash/groupBy"));
37
+ const string_1 = require("../../../utils/string");
38
+ const products_1 = require("../../../utils/products");
39
+ const __1 = require("../../..");
40
+ const anonymisation_1 = require("../../../utils/anonymisation");
41
+ const discount_1 = require("../../../utils/discount");
42
+ const cart_1 = require("../../../utils/cart");
43
+ const round_1 = __importDefault(require("lodash/round"));
44
+ const getG2ProductExternalValues = async (sku, g2Service, space, org) => {
45
+ var _a, _b, _c;
46
+ const g2Auth = g2Service.external_service_infos.api;
47
+ if (!!!g2Auth)
48
+ return;
49
+ let externalValues = undefined;
50
+ try {
51
+ const productG2 = await (0, exports.fetchProductFromG2WithSku)(sku, space, org);
52
+ if (!!productG2) {
53
+ const noArticle = (_a = productG2.article.noArticle) !== null && _a !== void 0 ? _a : undefined;
54
+ const catégorie1 = (_b = productG2.article['catégorie1']) !== null && _b !== void 0 ? _b : undefined;
55
+ const catégorie2 = (_c = productG2.article['catégorie2']) !== null && _c !== void 0 ? _c : undefined;
56
+ if (!!noArticle || !!catégorie1 || catégorie2) {
57
+ externalValues = { noArticle, catégorie1, catégorie2 };
58
+ }
59
+ }
60
+ return externalValues;
61
+ }
62
+ catch (e) {
63
+ console.log('error on fetching external_values for sku from G2: ', e.toString());
64
+ }
65
+ };
66
+ exports.getG2ProductExternalValues = getG2ProductExternalValues;
67
+ const fetchProductFromG2WithSku = async (sku, space, org, logError) => {
68
+ if (!!!space || !!!org)
69
+ return;
70
+ const api = __1.API_URL;
71
+ const token = (0, context_1.getSpaceToken)(space, org);
72
+ const callG2 = async (skuToUse) => {
73
+ try {
74
+ const g2ProductsQuery = await fetch(`${api}/services/g2/products/${skuToUse}`, {
75
+ method: 'GET',
76
+ headers: {
77
+ 'Content-Type': 'application/json',
78
+ Authorization: `Bearer ${token}`
79
+ }
80
+ });
81
+ if (!!!g2ProductsQuery || g2ProductsQuery.status > 300)
82
+ throw await g2ProductsQuery.json();
83
+ const productG2 = await g2ProductsQuery.json();
84
+ if (!!productG2 && productG2[0])
85
+ return productG2[0];
86
+ else
87
+ throw 'Response has no value or array of products is empty.';
88
+ }
89
+ catch (e) {
90
+ if (!!logError)
91
+ console.log(`error on fetching prod from G2 for sku ${skuToUse}: `, e.toString());
92
+ return;
93
+ }
94
+ };
95
+ let g2Prod = await callG2(sku);
96
+ if (!!!g2Prod && !sku.includes('-1')) {
97
+ g2Prod = await callG2(`${sku}-1`);
98
+ }
99
+ return g2Prod;
100
+ };
101
+ exports.fetchProductFromG2WithSku = fetchProductFromG2WithSku;
102
+ const getG2Customer = async (spaceToken, customerId) => {
103
+ let allG2Customers = [];
104
+ try {
105
+ const api = __1.API_URL;
106
+ const g2CustomersQuery = await fetch(`${api}/services/g2/customers/${customerId}`, {
107
+ method: 'GET',
108
+ headers: {
109
+ 'Content-Type': 'application/json',
110
+ Authorization: `Bearer ${spaceToken}`
111
+ }
112
+ });
113
+ const G2RequestRes = await g2CustomersQuery.json();
114
+ if (!!g2CustomersQuery.status && g2CustomersQuery.status !== 200)
115
+ throw `Error - ${g2CustomersQuery.status}`;
116
+ if (!!!G2RequestRes || !!!G2RequestRes.length)
117
+ throw 'Error - no data';
118
+ allG2Customers = G2RequestRes;
119
+ }
120
+ catch (e) {
121
+ console.log('error on querying G2: ', e);
122
+ }
123
+ return allG2Customers;
124
+ };
125
+ exports.getG2Customer = getG2Customer;
126
+ const getAllNewOrUpdatedCustomersFromG2 = async (space, allG2Customers) => {
127
+ let allCurrentCustomers = [];
128
+ try {
129
+ const customerQuery = await space.customers.get();
130
+ if (!!customerQuery && !!customerQuery.length)
131
+ throw 'Error - no data';
132
+ allCurrentCustomers = customerQuery.map((customer) => customer.data());
133
+ }
134
+ catch (e) {
135
+ console.log('error on fetching customers: ', e.toString());
136
+ return;
137
+ }
138
+ let allNewCustomers = [];
139
+ let allUpdatedCustomers = [];
140
+ for (let g2 of allG2Customers) {
141
+ const sameCustomerInDb = allCurrentCustomers.find((c) => !!c.id && c.id.toUpperCase() === g2.client.noClient.toUpperCase());
142
+ if (!!!sameCustomerInDb) {
143
+ allNewCustomers.push((0, exports.transformG2CustomerToCustomer)(g2));
144
+ continue;
145
+ }
146
+ if (!!(0, object_1.difference)(sameCustomerInDb, (0, exports.transformG2CustomerToCustomer)(g2))) {
147
+ allUpdatedCustomers.push((0, exports.transformG2CustomerToCustomer)(g2, sameCustomerInDb));
148
+ }
149
+ }
150
+ return { new: allNewCustomers, updated: allUpdatedCustomers };
151
+ };
152
+ exports.getAllNewOrUpdatedCustomersFromG2 = getAllNewOrUpdatedCustomersFromG2;
153
+ const transformG2CustomerToCustomer = (g2Customer, prevCustomer, allGroups) => {
154
+ const client = g2Customer.client;
155
+ const getCustomerNameInfo = (aName) => {
156
+ return {
157
+ customer_firstname: aName.replace(/[0-9]/g, '').replace(/\-\-/g, '').split(' ')[0].trim(),
158
+ customer_lastname: aName
159
+ .replace(/[0-9]/g, '')
160
+ .replace(/\-\-/g, '')
161
+ .trim()
162
+ .split(' ')
163
+ .map((aString, key) => (!!!key ? undefined : aString))
164
+ .filter((s) => !!s)
165
+ .join(' '),
166
+ customer_phone: aName.replace(/[^0-9]/g, '').trim()
167
+ };
168
+ };
169
+ const getOtherCustomerInfo = (propsStr) => {
170
+ const clientToCheck = client;
171
+ if (!!!clientToCheck[propsStr])
172
+ return {};
173
+ const email = !!clientToCheck[`${propsStr}Email`] ? clientToCheck[`${propsStr}Email`].toLowerCase() : undefined;
174
+ const fax = !!clientToCheck[`${propsStr}FAX`] ? (0, data_1.formatPhoneNumberDB)(clientToCheck[`${propsStr}FAX`]) : undefined;
175
+ return Object.assign(Object.assign({}, (!!email
176
+ ? {
177
+ customer_email: email
178
+ }
179
+ : {
180
+ customer_communicationPreference: 'phone'
181
+ })), (!!fax
182
+ ? {
183
+ customer_photocopier: fax
184
+ }
185
+ : {}));
186
+ };
187
+ const getPrevCustomerAddress = (expeditionInfo) => {
188
+ const defaultBilling = expeditionInfo.findIndex((ei) => ei.is_default && ei.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING));
189
+ if (defaultBilling !== -1) {
190
+ return [
191
+ ...expeditionInfo.slice(0, defaultBilling),
192
+ Object.assign(Object.assign({}, expeditionInfo[defaultBilling]), { address: Object.assign(Object.assign({}, expeditionInfo[defaultBilling].address), getClientAddress()) }),
193
+ ...expeditionInfo.slice(defaultBilling + 1)
194
+ ];
195
+ }
196
+ return [
197
+ ...expeditionInfo,
198
+ {
199
+ address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
200
+ is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
201
+ expedition_recipient_name: !!client.nom ? client.nom : '',
202
+ expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
203
+ }
204
+ ];
205
+ };
206
+ const getClientAddress = () => {
207
+ return {
208
+ city: client.ville,
209
+ country: !!client.pays ? client.pays : 'CA',
210
+ line1: client.adresse || '',
211
+ postal_code: !!client.codePostal ? client.codePostal.toUpperCase() : '',
212
+ state: client.province || ''
213
+ };
214
+ };
215
+ const shouldCheckForCompany = () => {
216
+ return !!client.nom || !!client.téléphone || !!client.personneRessourceComptes;
217
+ };
218
+ const defaultProGroup = 'aspirant';
219
+ const getCustomerGroupFromTypeCode = (type) => {
220
+ if (!!!allGroups)
221
+ return defaultProGroup;
222
+ const sameGroup = allGroups.find((g) => g.external_slug === type);
223
+ return !!sameGroup ? sameGroup.slug : defaultProGroup;
224
+ };
225
+ let customerWithNewInfo = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultCustomer)()), (!!prevCustomer ? prevCustomer : { id: client.noClient.toUpperCase() })), (!!!prevCustomer
226
+ ? {
227
+ hash: crypto_js_1.default.AES.encrypt(client.noClient.toUpperCase(), client.noClient.toUpperCase()).toString(),
228
+ type: Customer_1.CustomerTypeEnum.COMPANY
229
+ }
230
+ : {})), (!!client.limiteDeCrédit && Math.round((0, toNumber_1.default)(client.limiteDeCrédit))
231
+ ? {
232
+ has_credit_line: true,
233
+ credit_line_max: client.limiteDeCrédit
234
+ }
235
+ : {})), (!!client.noReprésentant ? { represented_by: client.noReprésentant } : {})), { basic_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), (!!prevCustomer ? prevCustomer.basic_info : { customer_type: Customer_1.BasicCustomerTypeEnum.PRO })), (!!client.email ? { customer_email: client.email.split(';')[0].toLowerCase() } : {})), (!!client.fax ? { customer_photocopier: client.fax } : {})), (!!client.personneRessourceVentes ? getCustomerNameInfo(client.personneRessourceVentes) : {})), { customer_professionnal_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (!!prevCustomer ? prevCustomer.basic_info.customer_professionnal_info : {})), { professionnal_title: !!client.groupeDeClient && !!(0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient)
236
+ ? getCustomerGroupFromTypeCode((0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient))
237
+ : defaultProGroup, proof_doc_value: client.noClient.toUpperCase() }), (!!client.noCondition ? { terms_code: client.noCondition } : {})), (!!client.groupeDeClient ? { external_customer_group: client.groupeDeClient } : {})), (!!client.codeFA ? { external_customer_code: client.codeFA } : {})), (!!client.classePrix ? { external_price_class: client.classePrix.toString() } : {})), (!!client.classement5 ? { external_customer_class: client.classement5 } : {})) }) }), ((!!prevCustomer && !!prevCustomer.company_info) || shouldCheckForCompany()
238
+ ? {
239
+ company_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info ? prevCustomer.company_info : {})), { invoice_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info && !!prevCustomer.company_info.invoice_info
240
+ ? prevCustomer.company_info.invoice_info
241
+ : {})), { legal_name: !!client.nom ? client.nom : '' }), (!!client.téléphone ? { phone: (0, data_1.formatPhoneNumberDB)(client.téléphone) } : {})) }), (!!client.personneRessourceComptes || !!client.personneRessourceAutres
242
+ ? {
243
+ other_users: [
244
+ ...(!!client.personneRessourceComptes
245
+ ? [
246
+ Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceComptes)), getOtherCustomerInfo('personneRessourceComptes'))
247
+ ]
248
+ : []),
249
+ ...(!!client.personneRessourceAutres
250
+ ? [
251
+ Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceAutres)), getOtherCustomerInfo('personneRessourceAutres'))
252
+ ]
253
+ : [])
254
+ ]
255
+ }
256
+ : {}))
257
+ }
258
+ : {})), { expedition_info: !!prevCustomer && prevCustomer.expedition_info && prevCustomer.expedition_info.length
259
+ ? prevCustomer.expedition_info.length > 1
260
+ ? getPrevCustomerAddress(prevCustomer.expedition_info)
261
+ : [
262
+ Object.assign(Object.assign({}, prevCustomer.expedition_info[0]), { address: Object.assign(Object.assign({}, (prevCustomer.expedition_info[0].address ? prevCustomer.expedition_info[0].address : {})), getClientAddress()), is_default: [
263
+ ...(prevCustomer.expedition_info[0].is_default || []),
264
+ ...(!!!prevCustomer.expedition_info[0].is_default ||
265
+ !!!prevCustomer.expedition_info[0].is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)
266
+ ? [Customer_1.defaultExpeditionOptionsEnum.BILLING]
267
+ : [])
268
+ ] })
269
+ ]
270
+ : [
271
+ {
272
+ address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
273
+ is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
274
+ expedition_recipient_name: !!client.nom ? client.nom : '',
275
+ expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
276
+ }
277
+ ] });
278
+ if (!!__1.isTestEnv &&
279
+ !!prevCustomer &&
280
+ !!prevCustomer.basic_info.customer_email &&
281
+ prevCustomer.basic_info.customer_email.includes('@dummy.com')) {
282
+ const allPropsToReset = anonymisation_1.g2Properties.map((p) => p.path);
283
+ for (let prop of allPropsToReset) {
284
+ const prevValue = (0, object_1.recursiveCheckObject)(prevCustomer, prop);
285
+ const currentValue = (0, object_1.recursiveCheckObject)(customerWithNewInfo, prop);
286
+ if (prevValue == currentValue)
287
+ continue;
288
+ customerWithNewInfo = (0, object_1.recursiveSetObject)(customerWithNewInfo, prevValue, prop);
289
+ }
290
+ }
291
+ return customerWithNewInfo;
292
+ };
293
+ exports.transformG2CustomerToCustomer = transformG2CustomerToCustomer;
294
+ const checkIfCustomerExistsInG2 = async (customerID, space, org) => {
295
+ try {
296
+ const token = (0, context_1.getSpaceToken)(space, org);
297
+ if (!!!token)
298
+ throw new Error('no token found for space');
299
+ const api = __1.API_URL;
300
+ let response = await fetch(`${api}/services/g2/customers/${customerID}/exists`, {
301
+ method: 'GET',
302
+ headers: {
303
+ 'Content-Type': 'application/json',
304
+ Authorization: `Bearer ${token}`
305
+ }
306
+ });
307
+ if (!!response.status && response.status !== 200)
308
+ throw `Error - ${response.status}`;
309
+ const { exists } = await response.json();
310
+ return exists;
311
+ }
312
+ catch (e) {
313
+ console.log('error on checking customer in G2: ', e.toString());
314
+ return false;
315
+ }
316
+ };
317
+ exports.checkIfCustomerExistsInG2 = checkIfCustomerExistsInG2;
318
+ const updateCustomerWithG2Info = async (customerID, space, org, addToDB = true, skipEmailCheck = false) => {
319
+ console.log('===============');
320
+ console.log('in v2 sdk updateCustomerWithG2Info');
321
+ try {
322
+ const token = (0, context_1.getSpaceToken)(space, org);
323
+ if (!!!token)
324
+ return;
325
+ const api = __1.API_URL;
326
+ console.log('----------------------');
327
+ let delay1 = (0, moment_1.default)();
328
+ let updatedCustomerQuery = await fetch(`${api}/services/g2/customers/${customerID}/convert`, {
329
+ method: 'GET',
330
+ headers: {
331
+ 'Content-Type': 'application/json',
332
+ Authorization: `Bearer ${token}`
333
+ }
334
+ });
335
+ console.log('called api to update customer delay: ', (0, moment_1.default)().diff(delay1, 'seconds'));
336
+ if (!!updatedCustomerQuery.status && updatedCustomerQuery.status !== 200)
337
+ throw `Error - ${updatedCustomerQuery.status}`;
338
+ const G2RequestRes = await updatedCustomerQuery.json();
339
+ if (!!!G2RequestRes)
340
+ throw 'Error - no data';
341
+ let updatedCustomer = (0, anonymisation_1.hideG2CustomerInfoIfNeeded)(G2RequestRes.customer);
342
+ if (!!addToDB) {
343
+ console.log('----------------------');
344
+ let delay4 = (0, moment_1.default)();
345
+ await space.addCustomer(updatedCustomer, undefined, skipEmailCheck);
346
+ console.log('saving to database delay: ', (0, moment_1.default)().diff(delay4, 'seconds'));
347
+ }
348
+ console.log('=====================');
349
+ return updatedCustomer;
350
+ }
351
+ catch (e) {
352
+ console.log('error on updating customer info with G2: ', e.toString());
353
+ return;
354
+ }
355
+ };
356
+ exports.updateCustomerWithG2Info = updateCustomerWithG2Info;
357
+ const getG2DiscountFromCode = (code) => {
358
+ const onlyNb = code.replace(/[^0-9]/gi, '');
359
+ return !!!onlyNb || !!isNaN(Number(onlyNb)) ? undefined : (0, toNumber_1.default)(onlyNb);
360
+ };
361
+ exports.getG2DiscountFromCode = getG2DiscountFromCode;
362
+ const getG2CustomerTypeFromCode = (code) => {
363
+ let parsedCode = code;
364
+ const possiblePrefixes = ['BASE', 'PAYS', 'RENC'];
365
+ for (let prefix of possiblePrefixes) {
366
+ parsedCode = parsedCode.replace(prefix, '');
367
+ }
368
+ parsedCode = parsedCode.replace(/[0-9]/gi, '');
369
+ const possibleTypes = ['AM', 'AL', 'AS', 'AMN'];
370
+ const checkWithPossibleTypes = (codeToCheck, removeFrom) => {
371
+ if (!!!possibleTypes.includes(codeToCheck)) {
372
+ if (codeToCheck.length === 1)
373
+ return '';
374
+ if (removeFrom == 'start') {
375
+ return checkWithPossibleTypes(codeToCheck.substring(1), removeFrom);
376
+ }
377
+ else {
378
+ return checkWithPossibleTypes(codeToCheck.replace(/.$/, ''), removeFrom);
379
+ }
380
+ }
381
+ return codeToCheck;
382
+ };
383
+ if (!!parsedCode) {
384
+ let removedValues = checkWithPossibleTypes(parsedCode, 'end');
385
+ if (!!!removedValues)
386
+ removedValues = checkWithPossibleTypes(parsedCode, 'start');
387
+ parsedCode = removedValues;
388
+ }
389
+ return parsedCode;
390
+ };
391
+ exports.getG2CustomerTypeFromCode = getG2CustomerTypeFromCode;
392
+ const fetchCustomPriceList = async (spaceToken, customerId, ignoreDashPriceList, onlyForProductSlugs) => {
393
+ let prices = [];
394
+ try {
395
+ const api = __1.API_URL;
396
+ const g2PriceListQuery = await fetch(`${api}/services/g2/customers/${customerId}/customPrices`, {
397
+ method: 'POST',
398
+ headers: {
399
+ 'Content-Type': 'application/json',
400
+ Authorization: `Bearer ${spaceToken}`
401
+ },
402
+ body: JSON.stringify(Object.assign({ ignoreDashPriceList: !!ignoreDashPriceList }, (!!onlyForProductSlugs ? { onlyForProductSlugs } : {})))
403
+ });
404
+ prices = await g2PriceListQuery.json();
405
+ if (!!g2PriceListQuery.status && g2PriceListQuery.status !== 200)
406
+ throw `Error - ${g2PriceListQuery.status}`;
407
+ if (!!!prices || !!!prices.length)
408
+ throw 'Error - no data';
409
+ }
410
+ catch (e) {
411
+ console.log('error on fetching custom prices:', e.toString());
412
+ }
413
+ return prices;
414
+ };
415
+ exports.fetchCustomPriceList = fetchCustomPriceList;
416
+ const getCustomPriceList = async (space, idClient, ignoreDashPriceList, onlyForProductSlugs) => {
417
+ let priceList = [];
418
+ let escomptesClient = [];
419
+ let ententesClient = [];
420
+ let G2Auth = '';
421
+ let G2Url = '';
422
+ const G2Service = space.services({ field: 'external_service_name', value: 'G2' });
423
+ if (!!G2Service && !!G2Service.length) {
424
+ G2Auth = G2Service[0].external_service_infos.api;
425
+ G2Url = G2Service[0].external_service_infos.api_url;
426
+ }
427
+ if (!!!G2Auth || !!!G2Url)
428
+ throw `Error on fetching G2 API info from space`;
429
+ try {
430
+ const customerReq = await fetch(`${G2Url}/clients?noClient=${idClient}`, {
431
+ method: 'GET',
432
+ headers: {
433
+ Authorization: G2Auth
434
+ }
435
+ });
436
+ const customers = await customerReq.json();
437
+ if (customerReq.status !== 200) {
438
+ throw `Error on fetching customers from G2 API: ${customerReq.status}`;
439
+ }
440
+ const allG2Customers = customers;
441
+ const g2Customer = allG2Customers[0];
442
+ if (!!!g2Customer)
443
+ return priceList;
444
+ const today = (0, moment_1.default)();
445
+ const allCurrentEntentes = g2Customer.soumissions.filter((s) => !!s.soumission.actif &&
446
+ !!s.soumission.dateDébut &&
447
+ !!s.soumission.dateFin &&
448
+ today.isBetween((0, moment_1.default)(s.soumission.dateDébut), (0, moment_1.default)(s.soumission.dateFin)));
449
+ const mostRecent = (0, orderBy_1.default)(allCurrentEntentes, (e) => (0, moment_1.default)(e.soumission.dateDébut).unix(), 'desc');
450
+ if (!!mostRecent) {
451
+ ententesClient = mostRecent;
452
+ }
453
+ const { noClient, groupeDeClient, classePrix } = g2Customer.client;
454
+ const customerType = !!!groupeDeClient ? undefined : (0, exports.getG2CustomerTypeFromCode)(groupeDeClient);
455
+ try {
456
+ const escomptesNumClient = await fetch(`${G2Url}/escompteclient?code=${noClient}`, {
457
+ method: 'GET',
458
+ headers: {
459
+ Authorization: G2Auth
460
+ }
461
+ });
462
+ const numClientResults = await escomptesNumClient.json();
463
+ if (!!numClientResults.status && numClientResults.status !== 200) {
464
+ console.log(`Error on fetching escompteClients from G2 API with noClient ${noClient}: ${numClientResults.status}`);
465
+ }
466
+ else {
467
+ escomptesClient = [...escomptesClient, ...numClientResults.map((r) => r.escompteClient)];
468
+ }
469
+ }
470
+ catch (e) {
471
+ console.log('error on fetching escomptesClient from G2: ', e.toString());
472
+ }
473
+ try {
474
+ if (!!groupeDeClient && groupeDeClient !== noClient) {
475
+ const escomptesGroupeClient = await fetch(`${G2Url}/escompteclient?code=${groupeDeClient}`, {
476
+ method: 'GET',
477
+ headers: {
478
+ Authorization: G2Auth
479
+ }
480
+ });
481
+ const groupeClientResults = await escomptesGroupeClient.json();
482
+ if (!!groupeClientResults.statuts && groupeClientResults.status !== 200) {
483
+ console.log(`Error on fetching escompteClients from G2 API with groupeClient ${groupeDeClient}: ${groupeClientResults.status}`);
484
+ }
485
+ else {
486
+ const groupeClientEscomptes = groupeClientResults.map((r) => r.escompteClient);
487
+ const noDuplicates = groupeClientEscomptes.filter((es) => !!!es.code2 || !!!escomptesClient.some((e) => !!e.code2 && e.code2 === es.code2));
488
+ escomptesClient = [...escomptesClient, ...noDuplicates];
489
+ }
490
+ }
491
+ else {
492
+ console.log('ignoring groupeClient escomptes because id and groupeClient are same');
493
+ }
494
+ }
495
+ catch (e) {
496
+ console.log('error on fetching escomptesClient from G2: ', e.toString());
497
+ }
498
+ let allProducts = [];
499
+ try {
500
+ if (!!onlyForProductSlugs && !!onlyForProductSlugs.length) {
501
+ if (onlyForProductSlugs.length <= 10) {
502
+ allProducts = await space.indexedProducts.get({
503
+ query: [{ field: 'slug', operator: 'in', value: onlyForProductSlugs }]
504
+ });
505
+ }
506
+ else {
507
+ const batchResults = [];
508
+ for (let group of (0, chunk_1.default)(onlyForProductSlugs, 10)) {
509
+ let query = await space.indexedProducts.get({
510
+ query: [{ field: 'slug', operator: 'in', value: group }]
511
+ });
512
+ batchResults.push(query);
513
+ }
514
+ allProducts = (0, flatten_1.default)(batchResults);
515
+ }
516
+ }
517
+ else {
518
+ allProducts = await space.indexedProducts.get({
519
+ query: [{ field: 'draft', operator: '!=', value: true }]
520
+ });
521
+ }
522
+ }
523
+ catch (e) {
524
+ console.log('error on fetching all products : ', e.toString());
525
+ }
526
+ if (!!!allProducts.length)
527
+ return priceList;
528
+ const allCustomerGroups = space.preferences.customers.groups() || [];
529
+ const customerGroupByPriceClass = !!classePrix
530
+ ? allCustomerGroups.find((g) => g.external_price_list_slug == classePrix.toString())
531
+ : undefined;
532
+ for (let prod of allProducts) {
533
+ const data = prod.data();
534
+ if (!!!data || !!data.draft)
535
+ continue;
536
+ const type = !!data.attributes && data.attributes[data_2.AttributesIdEnumGR.TYPE];
537
+ for (let decli of data.declinations.filter((d) => !!!d.is_sample)) {
538
+ let isNetPrice = !!decli.external_values && decli.external_values['catégorie2'] === 'NET';
539
+ const sku = decli.sku;
540
+ let basePrice = (0, toNumber_1.default)(decli.regular_price.amount);
541
+ if (!!decli.prices_list && !!decli.prices_list.length && !!!ignoreDashPriceList) {
542
+ let priceListItemToUse = undefined;
543
+ const samePriceClassInPriceList = !!customerGroupByPriceClass
544
+ ? decli.prices_list.find((pl) => pl.group_id == customerGroupByPriceClass.slug)
545
+ : undefined;
546
+ if (!!samePriceClassInPriceList && !isNaN((0, toNumber_1.default)(samePriceClassInPriceList.amount))) {
547
+ priceListItemToUse = samePriceClassInPriceList;
548
+ }
549
+ else if (!!groupeDeClient) {
550
+ const samePriceInPriceList = !!customerType
551
+ ? decli.prices_list.find((p) => !!p.external_slug && p.external_slug === customerType)
552
+ : undefined;
553
+ const proPriceInPriceList = decli.prices_list.find((p) => p.group_id === 'aspirant');
554
+ if (!!samePriceInPriceList && !isNaN((0, toNumber_1.default)(samePriceInPriceList.amount))) {
555
+ priceListItemToUse = samePriceClassInPriceList;
556
+ }
557
+ else if (!!proPriceInPriceList && !isNaN((0, toNumber_1.default)(proPriceInPriceList.amount))) {
558
+ priceListItemToUse = proPriceInPriceList;
559
+ }
560
+ }
561
+ if (!!priceListItemToUse) {
562
+ basePrice = (0, toNumber_1.default)(priceListItemToUse.amount);
563
+ if (!!!isNetPrice) {
564
+ isNetPrice = !!priceListItemToUse.is_net_price;
565
+ }
566
+ }
567
+ }
568
+ let comparePrices = [
569
+ Object.assign(Object.assign({ price: basePrice, type: G2_1.CustomPriceItemTypeEnum.REG }, (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1')
570
+ ? { code1: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1') }
571
+ : {})), (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2')
572
+ ? { code2: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2') }
573
+ : {}))
574
+ ];
575
+ let foundEntenteForProduct = false;
576
+ if (!!ententesClient.length) {
577
+ for (let entente of ententesClient) {
578
+ if (!!foundEntenteForProduct)
579
+ break;
580
+ let sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle === sku);
581
+ if (!!!sameProd) {
582
+ sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle.includes(sku));
583
+ }
584
+ if (!!sameProd) {
585
+ const priceToSet = typeof sameProd.article.prixUnitaireNet === 'number'
586
+ ? sameProd.article.prixUnitaireNet
587
+ : typeof sameProd.article.prixUnitaire === 'number'
588
+ ? sameProd.article.prixUnitaire
589
+ : undefined;
590
+ if (typeof priceToSet === 'number') {
591
+ foundEntenteForProduct = true;
592
+ comparePrices.push(Object.assign(Object.assign({ price: (0, toNumber_1.default)(priceToSet), type: G2_1.CustomPriceItemTypeEnum.ENTENTE }, (!!decli.external_values ? { code2: decli.external_values['catégorie2'] } : {})), (!!sameProd.article.pourcEscompte
593
+ ? Object.assign(Object.assign({}, (typeof sameProd.article.prixUnitaire === 'number'
594
+ ? { reg: sameProd.article.prixUnitaire }
595
+ : {})), { percent: sameProd.article.pourcEscompte }) : {})));
596
+ }
597
+ }
598
+ }
599
+ }
600
+ if (!!escomptesClient.length) {
601
+ const findBestDeal = (escomptesToCheck) => {
602
+ const bestDeal = (0, maxBy_1.default)(escomptesToCheck, (escompte) => (0, toNumber_1.default)(escompte.pourcEscompte));
603
+ if (!!bestDeal) {
604
+ comparePrices.push(Object.assign({ price: basePrice * ((100 - (0, toNumber_1.default)(bestDeal.pourcEscompte)) / 100), type: G2_1.CustomPriceItemTypeEnum.ESCOMPTE, percent: (0, toNumber_1.default)(bestDeal.pourcEscompte), code1: bestDeal.code1 }, (!!bestDeal.code2 ? { code2: bestDeal.code2 } : {})));
605
+ }
606
+ };
607
+ if (!!!foundEntenteForProduct) {
608
+ if (!!isNetPrice) {
609
+ const sameCat1Escompte = escomptesClient.filter((e) => {
610
+ if (!!!e.code2)
611
+ return false;
612
+ return decli.external_values && e.code2 === decli.external_values['catégorie1'] && e.code2 == 'DALLE';
613
+ });
614
+ if (!!sameCat1Escompte && !!sameCat1Escompte.length) {
615
+ findBestDeal(sameCat1Escompte);
616
+ }
617
+ }
618
+ else {
619
+ const no2ndCode = escomptesClient.filter((e) => !!!e.code2);
620
+ if (!!no2ndCode.length) {
621
+ findBestDeal(no2ndCode);
622
+ }
623
+ let sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2 === sku);
624
+ if (!!!sameSkuEscompte.length) {
625
+ sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2.includes(sku));
626
+ }
627
+ if (!!sameSkuEscompte.length) {
628
+ findBestDeal(sameSkuEscompte);
629
+ }
630
+ if (!!!sameSkuEscompte.length) {
631
+ const sameBrandEscompte = escomptesClient.filter((e) => {
632
+ if (!!!e.code2)
633
+ return;
634
+ return (decli.external_values &&
635
+ (e.code2 === decli.external_values['catégorie2'] || e.code2 === decli.external_values['catégorie1']));
636
+ });
637
+ if (!!sameBrandEscompte) {
638
+ findBestDeal(sameBrandEscompte);
639
+ }
640
+ }
641
+ }
642
+ }
643
+ }
644
+ comparePrices = (0, uniqBy_1.default)(comparePrices, (p) => p.price);
645
+ const lowestPrice = (0, minBy_1.default)(comparePrices, (p) => p.price);
646
+ let appliedPrice = lowestPrice;
647
+ if (!!lowestPrice && lowestPrice.type == G2_1.CustomPriceItemTypeEnum.REG) {
648
+ const ententeFound = comparePrices.find((p) => p.type == G2_1.CustomPriceItemTypeEnum.ENTENTE);
649
+ if (!!ententeFound)
650
+ appliedPrice = Object.assign(Object.assign({}, ententeFound), { reg: ententeFound.price });
651
+ }
652
+ let customPriceItemToPush = undefined;
653
+ if (!!appliedPrice) {
654
+ customPriceItemToPush = Object.assign(Object.assign({ sku: sku, parent_slug: data.slug, name: `${!!decli.parent_name &&
655
+ !!!(0, locale_1.getPrincipalWord)(decli.name, space).trim().includes((0, locale_1.getPrincipalWord)(decli.parent_name).trim())
656
+ ? (0, locale_1.getPrincipalWord)(decli.name, space) + ' - '
657
+ : ''}${(0, locale_1.getPrincipalWord)(decli.name, space)}`, reg: basePrice }, (!!type
658
+ ? {
659
+ prod_type: type[0]
660
+ }
661
+ : {})), appliedPrice);
662
+ }
663
+ if (!!customPriceItemToPush) {
664
+ priceList.push(customPriceItemToPush);
665
+ }
666
+ }
667
+ }
668
+ return priceList;
669
+ }
670
+ catch (e) {
671
+ console.log('error on fetching customer from G2: ', e.toString());
672
+ return e.toString();
673
+ }
674
+ };
675
+ exports.getCustomPriceList = getCustomPriceList;
676
+ const getItemEscompteSupp = (customPriceList, item) => {
677
+ const code2InItem = (0, object_1.recursiveCheckObject)(item, `external_values.catégorie2`);
678
+ let code2InPriceList = undefined;
679
+ const customPriceItem = customPriceList.find((priceItem) => priceItem.sku === item.sku);
680
+ if (!!customPriceItem && !!customPriceItem.code2) {
681
+ code2InPriceList = customPriceItem.code2;
682
+ }
683
+ const code2ToCheck = code2InPriceList !== null && code2InPriceList !== void 0 ? code2InPriceList : code2InItem;
684
+ if (!!!code2ToCheck)
685
+ return;
686
+ let foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2ToCheck);
687
+ if (!!!foundEsc && !!code2InItem) {
688
+ foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2InItem);
689
+ }
690
+ return foundEsc;
691
+ };
692
+ exports.getItemEscompteSupp = getItemEscompteSupp;
693
+ const groupArrayOfItemsByItemAndCorrespondingEscompteItem = (items) => {
694
+ return (0, flatten_1.default)(Object.values((0, groupBy_1.default)(items, (item) => ((0, exports.isEscompteSuppItem)(item.sku) ? (0, string_1.splitFromFirstChar)('-', item.sku)[1] : item.sku))));
695
+ };
696
+ exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = groupArrayOfItemsByItemAndCorrespondingEscompteItem;
697
+ const buildEscompteSuppCartItem = (escompteItems, customPriceList, escompteSuppItem, item) => {
698
+ if (!!!escompteItems[0])
699
+ return;
700
+ const priceToUse = (0, products_1.getLowestPrice)(item);
701
+ const escompteDecli = escompteItems[0].data().declinations.find((decli) => decli.sku === escompteSuppItem.sku);
702
+ if (!!!escompteDecli)
703
+ return;
704
+ const sameInCustomPriceList = customPriceList.find((c) => c.sku === escompteDecli.sku);
705
+ if (!!sameInCustomPriceList &&
706
+ sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG &&
707
+ sameInCustomPriceList.price === 0)
708
+ return;
709
+ const escompteEquivalent = (0, exports.checkForCustomPriceEquivalent)(escompteDecli, customPriceList);
710
+ return Object.assign(Object.assign({}, escompteEquivalent), { is_upsell_of_sku: item.sku, is_temp_prod: true, price_override: true, qte_override: true, qte: item.qte * priceToUse.price.amount, sku: `${escompteEquivalent.sku}-${item.sku}`, regular_price: (0, products_1.getLowestPrice)(escompteEquivalent).price });
711
+ };
712
+ exports.buildEscompteSuppCartItem = buildEscompteSuppCartItem;
713
+ const isEscompteSuppItem = (itemSku) => {
714
+ return Object.values(G2_1.EscomptesDeclinationSkusEnum).some((subString) => itemSku.includes(subString));
715
+ };
716
+ exports.isEscompteSuppItem = isEscompteSuppItem;
717
+ const checkForCustomPriceEquivalent = (item, customPriceList, options = {}) => {
718
+ var _a;
719
+ const sameInCustomPriceList = customPriceList.find((i) => i.sku === item.sku);
720
+ if (!!!sameInCustomPriceList)
721
+ return item;
722
+ const hasOverriddenPrice = item.price_override;
723
+ if (!!hasOverriddenPrice && sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG)
724
+ return item;
725
+ const { regular_price, promo_price, discount_price, tier_pricing } = item, rest = __rest(item, ["regular_price", "promo_price", "discount_price", "tier_pricing"]);
726
+ const isReg = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG;
727
+ const isEntente = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.ENTENTE;
728
+ const isPA = !!sameInCustomPriceList.PA_percent;
729
+ const shouldUseCustomPriceForRegPrice = (!!isReg && !!!sameInCustomPriceList.percent) || (!!options.setNetPriceAsRegular && !!isEntente);
730
+ const currentDiscountPrice = item.discount_price || { currency: 'CAD' };
731
+ const currentPromoPrice = item.promo_price || { currency: 'CAD' };
732
+ const calculatedRegPrice = !!item.price_override
733
+ ? regular_price.amount
734
+ : (!!isReg || !!isEntente) && sameInCustomPriceList.price == 0
735
+ ? 0
736
+ : !!shouldUseCustomPriceForRegPrice
737
+ ? sameInCustomPriceList.price
738
+ : sameInCustomPriceList.reg;
739
+ let updatedCartItem = Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { regular_price: Object.assign(Object.assign(Object.assign({}, regular_price), { amount: calculatedRegPrice }), (sameInCustomPriceList.type !== G2_1.CustomPriceItemTypeEnum.REG && !!!regular_price.price_type
740
+ ? { price_type: sameInCustomPriceList.type }
741
+ : {})) }), (!!!hasOverriddenPrice
742
+ ? Object.assign(Object.assign({}, (sameInCustomPriceList.percent || !!!isReg
743
+ ? Object.assign({}, (!!sameInCustomPriceList.percent &&
744
+ [G2_1.CustomPriceItemTypeEnum.ESCOMPTE, G2_1.CustomPriceItemTypeEnum.NORMAL_ESCOMPTE].includes(sameInCustomPriceList.type)
745
+ ? {
746
+ promo_price: Object.assign(Object.assign({}, currentPromoPrice), (!currentPromoPrice.overridden
747
+ ? {
748
+ amount: sameInCustomPriceList.price,
749
+ price_type: sameInCustomPriceList.type
750
+ }
751
+ : {}))
752
+ }
753
+ :
754
+ !!!options.setNetPriceAsRegular
755
+ ? Object.assign({ discount_price: Object.assign(Object.assign({}, currentDiscountPrice), (!currentDiscountPrice.overridden
756
+ ? {
757
+ amount: sameInCustomPriceList.price,
758
+ price_type: sameInCustomPriceList.type
759
+ }
760
+ : {})) }, (!!currentPromoPrice.overridden ? { promo_price: currentPromoPrice } : {})) : {})) :
761
+ currentDiscountPrice.price_type === 'tierpricing' && !!!options.removeTierPricing
762
+ ? {
763
+ discount_price: Object.assign(Object.assign({}, item.discount_price), { original_amount: !!isReg || !!!options.setNetPriceAsRegular ? null : sameInCustomPriceList.price })
764
+ }
765
+ : {})), (!!isPA
766
+ ? {
767
+ promo_price: Object.assign(Object.assign({}, currentPromoPrice), { amount: (_a = sameInCustomPriceList.PA_price) !== null && _a !== void 0 ? _a : sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.PA_percent }),
768
+ discount_price: Object.assign(Object.assign({}, currentDiscountPrice), { amount: sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.percent })
769
+ }
770
+ : {})) : {})), (!!!options.removeTierPricing && !!tier_pricing
771
+ ? {
772
+ tier_pricing
773
+ }
774
+ : {}));
775
+ const priceUsedForPromoCalculations = !!updatedCartItem.discount_price
776
+ ? updatedCartItem.discount_price.amount
777
+ : updatedCartItem.regular_price.amount;
778
+ const initialPriceToCompare = !!currentDiscountPrice ? currentDiscountPrice.amount : item.regular_price.amount;
779
+ if (typeof currentPromoPrice.percent_applied == 'number' &&
780
+ !!currentPromoPrice.overridden &&
781
+ priceUsedForPromoCalculations != initialPriceToCompare) {
782
+ updatedCartItem = Object.assign(Object.assign({}, updatedCartItem), { promo_price: Object.assign(Object.assign({}, (updatedCartItem.promo_price || { currency: 'CAD' })), { amount: (0, round_1.default)((0, cart_1.calculateAmountForCustomPromo)(updatedCartItem, Cart_1.CustomPromoType.EXTRA_PROMO, currentPromoPrice.percent_applied), priceUsedForPromoCalculations.toString().split('.').length) }) });
783
+ }
784
+ return updatedCartItem;
785
+ };
786
+ exports.checkForCustomPriceEquivalent = checkForCustomPriceEquivalent;
787
+ const getCustomIncentiveAmount = (customPriceList) => {
788
+ if (!!!customPriceList)
789
+ return;
790
+ const ententeSku = 'INCITATIF';
791
+ let amount = 0;
792
+ const entente = customPriceList.find((priceItem) => priceItem.sku === ententeSku);
793
+ if (!!!entente || !!!entente.price || entente.type == G2_1.CustomPriceItemTypeEnum.REG)
794
+ return;
795
+ amount = entente.price * -100;
796
+ return amount;
797
+ };
798
+ exports.getCustomIncentiveAmount = getCustomIncentiveAmount;
799
+ const getDiscountRulesWithCustomIncentive = (incentiveAmount, discountRules) => {
800
+ let hasBeenUpdated = false;
801
+ const updatedDiscountRules = discountRules.map((rule) => {
802
+ const promoType = (0, discount_1.getCartPromoType)(rule);
803
+ if (promoType === Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES) {
804
+ hasBeenUpdated = true;
805
+ const updatedRule = rule;
806
+ updatedRule.result.action_value = incentiveAmount;
807
+ updatedRule.overridden = true;
808
+ return updatedRule;
809
+ }
810
+ else {
811
+ return rule;
812
+ }
813
+ });
814
+ if (!hasBeenUpdated)
815
+ return;
816
+ return updatedDiscountRules;
817
+ };
818
+ exports.getDiscountRulesWithCustomIncentive = getDiscountRulesWithCustomIncentive;
819
+ const getCustomIncentiveInfo = (customPriceList, discountRules, defaultIncentiveAmount) => {
820
+ let discountRulesWithCustomIncentive;
821
+ let customIncentiveAmount = (0, exports.getCustomIncentiveAmount)(customPriceList);
822
+ const incentiveDiscountRule = (0, discount_1.getPaymentIncentiveDiscount)(discountRules);
823
+ if (!!!customIncentiveAmount) {
824
+ if (!!incentiveDiscountRule && !!incentiveDiscountRule.overridden) {
825
+ return {
826
+ amount: defaultIncentiveAmount || 0,
827
+ updatedDiscountRules: discountRules.map((dr) => {
828
+ if (dr.id !== incentiveDiscountRule.id)
829
+ return dr;
830
+ return Object.assign(Object.assign(Object.assign({}, dr), (defaultIncentiveAmount ? { result: Object.assign(Object.assign({}, dr.result), { action_value: defaultIncentiveAmount }) } : {})), { overridden: false });
831
+ }),
832
+ reset: true
833
+ };
834
+ }
835
+ return;
836
+ }
837
+ discountRulesWithCustomIncentive = (0, exports.getDiscountRulesWithCustomIncentive)(customIncentiveAmount, discountRules);
838
+ if (!!!discountRulesWithCustomIncentive)
839
+ return;
840
+ return {
841
+ amount: customIncentiveAmount,
842
+ updatedDiscountRules: discountRulesWithCustomIncentive
843
+ };
844
+ };
845
+ exports.getCustomIncentiveInfo = getCustomIncentiveInfo;
846
846
  //# sourceMappingURL=g2.js.map