addio-admin-sdk 1.7.162 → 1.7.164

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 (579) hide show
  1. package/.babelrc +17 -17
  2. package/.env +15 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/run_unit_test.yaml +48 -48
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +573 -564
  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 +180 -180
  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 +53 -53
  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 +28 -28
  34. package/dist/Interfaces/CMS/index.js +5 -5
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IMarketPayload.d.ts +12 -12
  38. package/dist/Interfaces/Cart/IMarketPayload.js +2 -2
  39. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  40. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  41. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  42. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  43. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  44. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  45. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  46. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  47. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  48. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  49. package/dist/Interfaces/Cart/index.d.ts +451 -451
  50. package/dist/Interfaces/Cart/index.js +216 -216
  51. package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
  52. package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
  53. package/dist/Interfaces/CashDrawers/index.d.ts +38 -38
  54. package/dist/Interfaces/CashDrawers/index.js +19 -19
  55. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  56. package/dist/Interfaces/Catalogue/index.js +37 -37
  57. package/dist/Interfaces/Category/index.d.ts +33 -33
  58. package/dist/Interfaces/Category/index.js +2 -2
  59. package/dist/Interfaces/Chart/index.d.ts +11 -11
  60. package/dist/Interfaces/Chart/index.js +2 -2
  61. package/dist/Interfaces/Class/index.d.ts +8 -8
  62. package/dist/Interfaces/Class/index.js +2 -2
  63. package/dist/Interfaces/Consent/index.d.ts +6 -6
  64. package/dist/Interfaces/Consent/index.js +2 -2
  65. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  66. package/dist/Interfaces/Context/IContextProps.js +2 -2
  67. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  68. package/dist/Interfaces/Context/IContextState.js +2 -2
  69. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  70. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  71. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  72. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  73. package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
  74. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  75. package/dist/Interfaces/Customer/index.d.ts +104 -104
  76. package/dist/Interfaces/Customer/index.js +148 -148
  77. package/dist/Interfaces/Declination/index.d.ts +117 -117
  78. package/dist/Interfaces/Declination/index.js +66 -66
  79. package/dist/Interfaces/Document/index.d.ts +8 -8
  80. package/dist/Interfaces/Document/index.js +2 -2
  81. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  82. package/dist/Interfaces/Elastic/index.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  84. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  86. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  88. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  90. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  92. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  94. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  95. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  96. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  97. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  98. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  99. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  100. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  101. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  102. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  103. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  104. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  105. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  106. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  107. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  108. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  109. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  110. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  111. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  112. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  113. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  114. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  115. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  116. package/dist/Interfaces/Email/IEmail.js +60 -60
  117. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  118. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  119. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  120. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  121. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  122. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  123. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  124. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  125. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  126. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  127. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  128. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  129. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  130. package/dist/Interfaces/ExportSchema/index.js +2 -2
  131. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  132. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  133. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  134. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  135. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  136. package/dist/Interfaces/ExternalService/index.js +2 -2
  137. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  138. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  139. package/dist/Interfaces/G2/index.d.ts +556 -556
  140. package/dist/Interfaces/G2/index.js +38 -38
  141. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  142. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  143. package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
  144. package/dist/Interfaces/Indexed/Product/index.js +253 -253
  145. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  146. package/dist/Interfaces/Inventory/index.js +8 -8
  147. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  148. package/dist/Interfaces/Invoice/index.js +2 -2
  149. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  150. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  151. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  152. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  153. package/dist/Interfaces/Menu/index.d.ts +40 -40
  154. package/dist/Interfaces/Menu/index.js +16 -16
  155. package/dist/Interfaces/Note/index.d.ts +10 -10
  156. package/dist/Interfaces/Note/index.js +7 -7
  157. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  158. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  159. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  160. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  161. package/dist/Interfaces/Order/index.d.ts +4 -4
  162. package/dist/Interfaces/Order/index.js +2 -2
  163. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  164. package/dist/Interfaces/Org/IRelUser.js +2 -2
  165. package/dist/Interfaces/Org/index.d.ts +29 -29
  166. package/dist/Interfaces/Org/index.js +12 -12
  167. package/dist/Interfaces/Payment/index.d.ts +26 -26
  168. package/dist/Interfaces/Payment/index.js +14 -14
  169. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  170. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  171. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  172. package/dist/Interfaces/Product/IImportProduct.js +882 -882
  173. package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
  174. package/dist/Interfaces/Product/IInventoryItem.js +38 -38
  175. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  176. package/dist/Interfaces/Product/IPricing.js +180 -180
  177. package/dist/Interfaces/Product/index.d.ts +137 -137
  178. package/dist/Interfaces/Product/index.js +64 -64
  179. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  180. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  181. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  182. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  183. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  184. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  185. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  186. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  187. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  188. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  189. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  190. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  191. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  192. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  193. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  194. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  195. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  196. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  197. package/dist/Interfaces/Quote/index.d.ts +5 -5
  198. package/dist/Interfaces/Quote/index.js +2 -2
  199. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  200. package/dist/Interfaces/Refunds/index.js +2 -2
  201. package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
  202. package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
  203. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  204. package/dist/Interfaces/Schedule/index.js +2 -2
  205. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  206. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  207. package/dist/Interfaces/Services/IService.d.ts +16 -16
  208. package/dist/Interfaces/Services/IService.js +2 -2
  209. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  210. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  211. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  212. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  213. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  214. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  215. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  216. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  217. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  218. package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
  219. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  220. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  221. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  222. package/dist/Interfaces/Slider/GR.js +271 -271
  223. package/dist/Interfaces/Slider/index.d.ts +30 -30
  224. package/dist/Interfaces/Slider/index.js +2 -2
  225. package/dist/Interfaces/Space/IExternalService.d.ts +53 -53
  226. package/dist/Interfaces/Space/IExternalService.js +44 -44
  227. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  228. package/dist/Interfaces/Space/IMember.js +9 -9
  229. package/dist/Interfaces/Space/index.d.ts +411 -411
  230. package/dist/Interfaces/Space/index.js +174 -174
  231. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  232. package/dist/Interfaces/Specials/gr.js +2 -2
  233. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  234. package/dist/Interfaces/StockNotification/index.js +2 -2
  235. package/dist/Interfaces/Store/index.d.ts +63 -63
  236. package/dist/Interfaces/Store/index.js +27 -27
  237. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  238. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  239. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  240. package/dist/Interfaces/Supplier/index.js +24 -24
  241. package/dist/Interfaces/TCG/index.d.ts +194 -169
  242. package/dist/Interfaces/TCG/index.js +60 -60
  243. package/dist/Interfaces/TCG/index.js.map +1 -1
  244. package/dist/Interfaces/Tag/index.d.ts +18 -18
  245. package/dist/Interfaces/Tag/index.js +2 -2
  246. package/dist/Interfaces/Tax/index.d.ts +13 -13
  247. package/dist/Interfaces/Tax/index.js +2 -2
  248. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  249. package/dist/Interfaces/TransferRequest/index.js +46 -46
  250. package/dist/Interfaces/Translation/index.d.ts +8 -8
  251. package/dist/Interfaces/Translation/index.js +5 -5
  252. package/dist/Interfaces/Update/index.d.ts +10 -10
  253. package/dist/Interfaces/Update/index.js +2 -2
  254. package/dist/Interfaces/User/IUser.d.ts +65 -65
  255. package/dist/Interfaces/User/IUser.js +8 -8
  256. package/dist/Interfaces/Version/index.d.ts +11 -11
  257. package/dist/Interfaces/Version/index.js +2 -2
  258. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  259. package/dist/Interfaces/Wishlist/index.js +2 -2
  260. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  261. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  262. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  263. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  264. package/dist/constants/enums.d.ts +6 -6
  265. package/dist/constants/enums.js +10 -10
  266. package/dist/constants/services.d.ts +2 -2
  267. package/dist/constants/services.js +117 -117
  268. package/dist/constants/version.d.ts +2 -2
  269. package/dist/constants/version.js +5 -5
  270. package/dist/index.d.ts +50 -50
  271. package/dist/index.js +266 -266
  272. package/dist/lib/Attribute/index.d.ts +14 -14
  273. package/dist/lib/Attribute/index.js +186 -186
  274. package/dist/lib/BGJob/index.d.ts +9 -9
  275. package/dist/lib/BGJob/index.js +216 -216
  276. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  277. package/dist/lib/BackgroundWorker/index.js +59 -59
  278. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  279. package/dist/lib/Blog/BlogArticle.js +10 -10
  280. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  281. package/dist/lib/Blog/BlogAuthor.js +10 -10
  282. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  283. package/dist/lib/Blog/BlogCategory.js +10 -10
  284. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  285. package/dist/lib/Blog/BlogKeyword.js +10 -10
  286. package/dist/lib/Booking/index.d.ts +85 -85
  287. package/dist/lib/Booking/index.js +596 -596
  288. package/dist/lib/Brand/index.d.ts +26 -26
  289. package/dist/lib/Brand/index.js +131 -131
  290. package/dist/lib/Cart/index.d.ts +335 -335
  291. package/dist/lib/Cart/index.js +3981 -3981
  292. package/dist/lib/CartReservedQuantities/index.d.ts +49 -49
  293. package/dist/lib/CartReservedQuantities/index.js +159 -159
  294. package/dist/lib/CashDrawerShift/index.d.ts +84 -84
  295. package/dist/lib/CashDrawerShift/index.js +206 -206
  296. package/dist/lib/Catalogue/index.d.ts +15 -15
  297. package/dist/lib/Catalogue/index.js +78 -78
  298. package/dist/lib/Category/index.d.ts +34 -34
  299. package/dist/lib/Category/index.js +230 -230
  300. package/dist/lib/Class/index.d.ts +16 -16
  301. package/dist/lib/Class/index.js +66 -66
  302. package/dist/lib/Consent/index.d.ts +4 -4
  303. package/dist/lib/Consent/index.js +29 -29
  304. package/dist/lib/Customer/index.d.ts +30 -30
  305. package/dist/lib/Customer/index.js +92 -92
  306. package/dist/lib/Declination/index.d.ts +9 -9
  307. package/dist/lib/Declination/index.js +26 -26
  308. package/dist/lib/Discount/index.d.ts +27 -27
  309. package/dist/lib/Discount/index.js +493 -493
  310. package/dist/lib/ElasticSearch/index.d.ts +13 -13
  311. package/dist/lib/ElasticSearch/index.js +50 -50
  312. package/dist/lib/Elavon/index.d.ts +18 -18
  313. package/dist/lib/Elavon/index.js +135 -135
  314. package/dist/lib/Email/AbandonedCartEmail.d.ts +16 -16
  315. package/dist/lib/Email/AbandonedCartEmail.js +24 -24
  316. package/dist/lib/Email/AccountConfirmationEmail.d.ts +19 -19
  317. package/dist/lib/Email/AccountConfirmationEmail.js +30 -30
  318. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +16 -16
  319. package/dist/lib/Email/AdminOrderConfirmationEmail.js +24 -24
  320. package/dist/lib/Email/ApplicationEmail.d.ts +16 -16
  321. package/dist/lib/Email/ApplicationEmail.js +24 -24
  322. package/dist/lib/Email/BackInStockEmail.d.ts +16 -16
  323. package/dist/lib/Email/BackInStockEmail.js +24 -24
  324. package/dist/lib/Email/ContactEmail.d.ts +16 -16
  325. package/dist/lib/Email/ContactEmail.js +24 -24
  326. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +16 -16
  327. package/dist/lib/Email/CustomerBookingAdminEmail.js +24 -24
  328. package/dist/lib/Email/CustomerBookingEmail.d.ts +16 -16
  329. package/dist/lib/Email/CustomerBookingEmail.js +24 -24
  330. package/dist/lib/Email/OrderConfirmationEmail.d.ts +16 -16
  331. package/dist/lib/Email/OrderConfirmationEmail.js +24 -24
  332. package/dist/lib/Email/OrderDenounciationEmail.d.ts +16 -16
  333. package/dist/lib/Email/OrderDenounciationEmail.js +24 -24
  334. package/dist/lib/Email/OrderSampleEmail.d.ts +16 -16
  335. package/dist/lib/Email/OrderSampleEmail.js +24 -24
  336. package/dist/lib/Email/OtherTypeEmails.d.ts +16 -16
  337. package/dist/lib/Email/OtherTypeEmails.js +27 -27
  338. package/dist/lib/Email/PasswordResetEmail.d.ts +16 -16
  339. package/dist/lib/Email/PasswordResetEmail.js +24 -24
  340. package/dist/lib/Email/PhotoShootEmail.d.ts +16 -16
  341. package/dist/lib/Email/PhotoShootEmail.js +24 -24
  342. package/dist/lib/Email/PickUpConfirmation.d.ts +16 -16
  343. package/dist/lib/Email/PickUpConfirmation.js +24 -24
  344. package/dist/lib/Email/ShippingConfirmation.d.ts +16 -16
  345. package/dist/lib/Email/ShippingConfirmation.js +24 -24
  346. package/dist/lib/Email/WelcomeEmail.d.ts +16 -16
  347. package/dist/lib/Email/WelcomeEmail.js +24 -24
  348. package/dist/lib/Email/index.d.ts +16 -16
  349. package/dist/lib/Email/index.js +31 -31
  350. package/dist/lib/ExternalService/Ebay.d.ts +74 -74
  351. package/dist/lib/ExternalService/Ebay.js +124 -124
  352. package/dist/lib/ExternalService/index.d.ts +5 -5
  353. package/dist/lib/ExternalService/index.js +10 -10
  354. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  355. package/dist/lib/FirstOrderTracking/index.js +10 -10
  356. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  357. package/dist/lib/Indexed/IndexedCart.js +91 -91
  358. package/dist/lib/Indexed/Product.d.ts +17 -17
  359. package/dist/lib/Indexed/Product.js +98 -98
  360. package/dist/lib/Inventory/index.d.ts +112 -112
  361. package/dist/lib/Inventory/index.js +492 -492
  362. package/dist/lib/Invoice/index.d.ts +16 -16
  363. package/dist/lib/Invoice/index.js +21 -21
  364. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  365. package/dist/lib/MarketplacePublication/index.js +426 -426
  366. package/dist/lib/Menu/index.d.ts +11 -11
  367. package/dist/lib/Menu/index.js +107 -107
  368. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  369. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  370. package/dist/lib/Note/index.d.ts +4 -4
  371. package/dist/lib/Note/index.js +6 -6
  372. package/dist/lib/Order/index.d.ts +27 -27
  373. package/dist/lib/Order/index.js +56 -56
  374. package/dist/lib/Org/index.d.ts +68 -68
  375. package/dist/lib/Org/index.js +216 -216
  376. package/dist/lib/PandaPay/index.d.ts +16 -16
  377. package/dist/lib/PandaPay/index.js +176 -176
  378. package/dist/lib/Paysafe/index.d.ts +11 -11
  379. package/dist/lib/Paysafe/index.js +41 -41
  380. package/dist/lib/Product/index.d.ts +182 -182
  381. package/dist/lib/Product/index.js +847 -847
  382. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  383. package/dist/lib/ProductAttribute/index.js +45 -45
  384. package/dist/lib/PromiseToPurchase/index.d.ts +109 -109
  385. package/dist/lib/PromiseToPurchase/index.js +343 -343
  386. package/dist/lib/PurchaseOrder/index.d.ts +20 -20
  387. package/dist/lib/PurchaseOrder/index.js +28 -28
  388. package/dist/lib/Queue/index.d.ts +40 -40
  389. package/dist/lib/Queue/index.js +254 -254
  390. package/dist/lib/Schedule/index.d.ts +5 -5
  391. package/dist/lib/Schedule/index.js +12 -12
  392. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  393. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  394. package/dist/lib/Service/index.d.ts +13 -13
  395. package/dist/lib/Service/index.js +21 -21
  396. package/dist/lib/Shipment/index.d.ts +28 -28
  397. package/dist/lib/Shipment/index.js +370 -370
  398. package/dist/lib/Slider/index.d.ts +22 -22
  399. package/dist/lib/Slider/index.js +119 -119
  400. package/dist/lib/Space/index.d.ts +1181 -1181
  401. package/dist/lib/Space/index.js +5841 -5841
  402. package/dist/lib/StockNotification/index.d.ts +4 -4
  403. package/dist/lib/StockNotification/index.js +6 -6
  404. package/dist/lib/Store/index.d.ts +5 -5
  405. package/dist/lib/Store/index.js +12 -12
  406. package/dist/lib/Supplier/Command.d.ts +5 -5
  407. package/dist/lib/Supplier/Command.js +10 -10
  408. package/dist/lib/Supplier/index.d.ts +25 -25
  409. package/dist/lib/Supplier/index.js +27 -27
  410. package/dist/lib/Tags/index.d.ts +6 -6
  411. package/dist/lib/Tags/index.js +26 -26
  412. package/dist/lib/Tax/index.d.ts +8 -8
  413. package/dist/lib/Tax/index.js +54 -54
  414. package/dist/lib/TransferRequest/index.d.ts +290 -290
  415. package/dist/lib/TransferRequest/index.js +1026 -1026
  416. package/dist/lib/Update/index.d.ts +10 -10
  417. package/dist/lib/Update/index.js +22 -22
  418. package/dist/lib/User/index.d.ts +89 -89
  419. package/dist/lib/User/index.js +328 -328
  420. package/dist/lib/Wishlist/index.d.ts +5 -5
  421. package/dist/lib/Wishlist/index.js +10 -10
  422. package/dist/lib/base.d.ts +14 -14
  423. package/dist/lib/base.js +62 -62
  424. package/dist/lib/baseService.d.ts +17 -17
  425. package/dist/lib/baseService.js +69 -69
  426. package/dist/rules/ADD/utils/buyback.d.ts +4 -0
  427. package/dist/rules/ADD/utils/buyback.js +136 -0
  428. package/dist/rules/ADD/utils/buyback.js.map +1 -0
  429. package/dist/rules/GR/constants/data.d.ts +26 -26
  430. package/dist/rules/GR/constants/data.js +81 -81
  431. package/dist/rules/GR/constants/expedition.d.ts +4 -4
  432. package/dist/rules/GR/constants/expedition.js +9 -9
  433. package/dist/rules/GR/constants/products.d.ts +22 -22
  434. package/dist/rules/GR/constants/products.js +263 -263
  435. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  436. package/dist/rules/GR/interfaces/cart.js +41 -41
  437. package/dist/rules/GR/interfaces/data.d.ts +101 -101
  438. package/dist/rules/GR/interfaces/data.js +114 -114
  439. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  440. package/dist/rules/GR/interfaces/products.js +10 -10
  441. package/dist/rules/GR/utils/cart.d.ts +95 -95
  442. package/dist/rules/GR/utils/cart.js +839 -839
  443. package/dist/rules/GR/utils/data.d.ts +3 -3
  444. package/dist/rules/GR/utils/data.js +28 -28
  445. package/dist/rules/GR/utils/expedition.d.ts +140 -140
  446. package/dist/rules/GR/utils/expedition.js +2016 -2016
  447. package/dist/rules/GR/utils/g2.d.ts +209 -209
  448. package/dist/rules/GR/utils/g2.js +1002 -1002
  449. package/dist/rules/GR/utils/invoices.d.ts +51 -51
  450. package/dist/rules/GR/utils/invoices.js +215 -215
  451. package/dist/rules/GR/utils/products.d.ts +277 -277
  452. package/dist/rules/GR/utils/products.js +1350 -1350
  453. package/dist/rules/GR/utils/upsells.d.ts +111 -111
  454. package/dist/rules/GR/utils/upsells.js +215 -215
  455. package/dist/services/database/BaseProvider.d.ts +29 -29
  456. package/dist/services/database/BaseProvider.js +28 -28
  457. package/dist/services/database/BatchUtils.d.ts +14 -14
  458. package/dist/services/database/BatchUtils.js +43 -43
  459. package/dist/services/database/Config.d.ts +2 -2
  460. package/dist/services/database/Config.js +5 -5
  461. package/dist/services/database/DatabaseService.d.ts +125 -125
  462. package/dist/services/database/DatabaseService.js +237 -237
  463. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  464. package/dist/services/database/FirebaseProvider.js +235 -235
  465. package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
  466. package/dist/services/database/NotFirebaseProvider.js +262 -262
  467. package/dist/services/g2/G2OrderSlip.d.ts +49 -49
  468. package/dist/services/g2/G2OrderSlip.js +228 -228
  469. package/dist/services/g2/utils.d.ts +19 -19
  470. package/dist/services/g2/utils.js +969 -954
  471. package/dist/services/g2/utils.js.map +1 -1
  472. package/dist/services/logs/index.d.ts +23 -23
  473. package/dist/services/logs/index.js +66 -66
  474. package/dist/services/marketplace/BaseMarketServiceClass.d.ts +69 -69
  475. package/dist/services/marketplace/BaseMarketServiceClass.js +133 -133
  476. package/dist/services/marketplace/CardtraderServiceClass.d.ts +33 -33
  477. package/dist/services/marketplace/CardtraderServiceClass.js +215 -215
  478. package/dist/services/marketplace/utils.d.ts +17 -17
  479. package/dist/services/marketplace/utils.js +32 -32
  480. package/dist/services/products/BaseClass.d.ts +50 -50
  481. package/dist/services/products/BaseClass.js +66 -66
  482. package/dist/services/products/TCGService.d.ts +32 -32
  483. package/dist/services/products/TCGService.js +555 -555
  484. package/dist/services/products/utils.d.ts +31 -31
  485. package/dist/services/products/utils.js +144 -144
  486. package/dist/utils/algolia.d.ts +46 -46
  487. package/dist/utils/algolia.js +21 -21
  488. package/dist/utils/anonymisation.d.ts +54 -54
  489. package/dist/utils/anonymisation.js +280 -280
  490. package/dist/utils/array.d.ts +5 -5
  491. package/dist/utils/array.js +14 -14
  492. package/dist/utils/aws.d.ts +36 -36
  493. package/dist/utils/aws.js +154 -154
  494. package/dist/utils/booking.d.ts +30 -30
  495. package/dist/utils/booking.js +127 -127
  496. package/dist/utils/cart.d.ts +272 -272
  497. package/dist/utils/cart.js +1169 -1169
  498. package/dist/utils/categories.d.ts +2 -2
  499. package/dist/utils/categories.js +54 -54
  500. package/dist/utils/cmv.d.ts +10 -10
  501. package/dist/utils/cmv.js +107 -107
  502. package/dist/utils/console.d.ts +6 -6
  503. package/dist/utils/console.js +59 -59
  504. package/dist/utils/context.d.ts +20 -20
  505. package/dist/utils/context.js +61 -61
  506. package/dist/utils/currency.d.ts +6 -6
  507. package/dist/utils/currency.js +91 -91
  508. package/dist/utils/data.d.ts +31 -31
  509. package/dist/utils/data.js +296 -296
  510. package/dist/utils/date.d.ts +1 -1
  511. package/dist/utils/date.js +16 -16
  512. package/dist/utils/dimensions.d.ts +3 -3
  513. package/dist/utils/dimensions.js +16 -16
  514. package/dist/utils/discount.d.ts +174 -174
  515. package/dist/utils/discount.js +1118 -1118
  516. package/dist/utils/errors.d.ts +118 -118
  517. package/dist/utils/errors.js +123 -123
  518. package/dist/utils/file-admin.d.ts +8 -8
  519. package/dist/utils/file-admin.js +39 -39
  520. package/dist/utils/file.d.ts +39 -39
  521. package/dist/utils/file.js +208 -208
  522. package/dist/utils/firebase-admin.d.ts +11 -11
  523. package/dist/utils/firebase-admin.js +73 -73
  524. package/dist/utils/firebase.d.ts +58 -58
  525. package/dist/utils/firebase.js +148 -148
  526. package/dist/utils/import.d.ts +1 -1
  527. package/dist/utils/import.js +21 -21
  528. package/dist/utils/inventories.d.ts +101 -101
  529. package/dist/utils/inventories.js +467 -467
  530. package/dist/utils/locale.d.ts +24 -24
  531. package/dist/utils/locale.js +91 -91
  532. package/dist/utils/mailchimp.d.ts +58 -58
  533. package/dist/utils/mailchimp.js +531 -531
  534. package/dist/utils/mathUtils.d.ts +17 -17
  535. package/dist/utils/mathUtils.js +324 -324
  536. package/dist/utils/mongodb.d.ts +1 -1
  537. package/dist/utils/mongodb.js +22 -22
  538. package/dist/utils/object.d.ts +32 -32
  539. package/dist/utils/object.js +133 -133
  540. package/dist/utils/payment.d.ts +10 -10
  541. package/dist/utils/payment.js +23 -23
  542. package/dist/utils/products.d.ts +39 -39
  543. package/dist/utils/products.js +195 -195
  544. package/dist/utils/promiseToPurchase.d.ts +88 -88
  545. package/dist/utils/promiseToPurchase.js +229 -229
  546. package/dist/utils/prosprsearch.d.ts +42 -42
  547. package/dist/utils/prosprsearch.js +216 -216
  548. package/dist/utils/refunds.d.ts +2 -2
  549. package/dist/utils/refunds.js +21 -21
  550. package/dist/utils/sdc.d.ts +10 -10
  551. package/dist/utils/sdc.js +1309 -1309
  552. package/dist/utils/searchIndexes.d.ts +58 -58
  553. package/dist/utils/searchIndexes.js +247 -247
  554. package/dist/utils/services.d.ts +42 -42
  555. package/dist/utils/services.js +409 -409
  556. package/dist/utils/shipment.d.ts +110 -110
  557. package/dist/utils/shipment.js +345 -345
  558. package/dist/utils/simpletexting.d.ts +2 -2
  559. package/dist/utils/simpletexting.js +45 -45
  560. package/dist/utils/sliders.d.ts +4 -4
  561. package/dist/utils/sliders.js +24 -24
  562. package/dist/utils/string.d.ts +16 -16
  563. package/dist/utils/string.js +192 -192
  564. package/dist/utils/tcgService.d.ts +88 -81
  565. package/dist/utils/tcgService.js +408 -353
  566. package/dist/utils/tcgService.js.map +1 -1
  567. package/dist/utils/tools.d.ts +5 -5
  568. package/dist/utils/tools.js +13 -13
  569. package/dist/utils/transferRequests.d.ts +43 -43
  570. package/dist/utils/transferRequests.js +67 -67
  571. package/dist/utils/update.d.ts +7 -7
  572. package/dist/utils/update.js +137 -137
  573. package/dist/utils/weight.d.ts +3 -3
  574. package/dist/utils/weight.js +16 -16
  575. package/dist/utils/zones.d.ts +11 -11
  576. package/dist/utils/zones.js +218 -218
  577. package/package.json +107 -107
  578. package/publish.sh +143 -143
  579. package/readme.md +182 -182
@@ -1,532 +1,532 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mailchimpActions = exports.getInventories = exports.createProdVariants = exports.getInventoryForDecli = exports.getTypeAttribute = exports.getCustomerAddress = exports.fetchMailchimpService = exports.onCartPaymentAddToMailchimp = exports.callMailchimp = void 0;
7
- const isomorphic_unfetch_1 = __importDefault(require("isomorphic-unfetch"));
8
- const Customer_1 = require("../Interfaces/Customer");
9
- const data_1 = require("../utils/data");
10
- const locale_1 = require("../utils/locale");
11
- const lodash_1 = require("lodash");
12
- const moment_1 = __importDefault(require("moment"));
13
- const uuid_1 = require("uuid");
14
- const invoices_1 = require("../rules/GR/utils/invoices");
15
- const data_2 = require("../rules/GR/interfaces/data");
16
- const callMailchimp = async (space, isTest, endpoint, method, body) => {
17
- // Get mailchimp infos from space
18
- const correspondingServices = space.services({
19
- field: 'external_service_name',
20
- value: 'mailchimp'
21
- });
22
- if (!!!correspondingServices || !!!correspondingServices.length)
23
- return;
24
- const mailchimp = correspondingServices[0];
25
- if (!!!mailchimp || !!!mailchimp.external_service_infos.api)
26
- return;
27
- const apiKey = mailchimp.external_service_infos.api;
28
- const serverName = !!isTest ? 'us9' : mailchimp.external_service_infos.api.split('-')[1];
29
- const url = `https://${serverName}.api.mailchimp.com/3.0`;
30
- if (!!endpoint.includes('/customers/') && method === 'GET') {
31
- console.log('-------------');
32
- console.log('going to check if customer exists in mailchimp');
33
- console.log('url called: ', `${url}${endpoint}`);
34
- }
35
- try {
36
- const response = await (0, isomorphic_unfetch_1.default)(`${url}${endpoint}`, Object.assign({ method, headers: {
37
- Authorization: `Basic ${apiKey}`,
38
- 'Content-Type': 'application/json'
39
- } }, (!!body ? { body: JSON.stringify(body) } : {})));
40
- return response;
41
- }
42
- catch (e) {
43
- console.log('error on mailchimp call: ', e);
44
- throw new Error(e.toString());
45
- }
46
- };
47
- exports.callMailchimp = callMailchimp;
48
- const onCartPaymentAddToMailchimp = async (cartData, space) => {
49
- console.log('---------------------');
50
- console.log('in onCartPaymentAddToMailchimp for cart ' + cartData.ref);
51
- const isTest = process.env.GCLOUD_PROJECT !== 'gng-ecr' || process.env.NODE_ENV !== 'production';
52
- // if (!!!isTest) return
53
- const customerEmail = !!cartData.customer_info ? cartData.customer_info.customer_default_email : '';
54
- const userEmail = !!cartData.user_email ? cartData.user_email : '';
55
- const isPro = !!cartData.customer_info && !!cartData.customer_info.pro_title && !!cartData.customer_info.pro_proof_doc;
56
- console.log('customer is pro: ', !!isPro);
57
- const customerBillingName = !!cartData.billing_address && cartData.billing_address.expedition_recipient_name
58
- ? cartData.billing_address.expedition_recipient_name
59
- : '';
60
- const customerBillingPhone = !!cartData.billing_address && cartData.billing_address.expedition_recipient_phone
61
- ? cartData.billing_address.expedition_recipient_phone
62
- : '';
63
- const userMailchimpBody = {
64
- email_address: userEmail,
65
- status_if_new: 'subscribed',
66
- merge_fields: {
67
- FNAME: !!customerBillingName ? customerBillingName.split('%')[0] : '',
68
- LNAME: !!customerBillingName && customerBillingName.split('%').length > 1 ? customerBillingName.split('%')[1] : '',
69
- PHONE: !!customerBillingPhone ? customerBillingPhone : ''
70
- }
71
- };
72
- // ----------------------------------------------------------------------------------------------------
73
- // #region 1. Check if customer if PRO and customer_info.default_customer_email is different thant user_email
74
- if (!!isPro) {
75
- console.log('user isPro');
76
- if (customerEmail !== userEmail) {
77
- // check if customer with customerEmail is already in mailchimp
78
- let currentCustomerInfos = undefined;
79
- try {
80
- const currentCustomerResponse = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'da793a762b' : data_2.MailchimpListIds.CLIENTS_PRO}/members/${customerEmail}`, 'GET');
81
- if (!!currentCustomerResponse && !!currentCustomerResponse.status && currentCustomerResponse.status === 200) {
82
- const json = await currentCustomerResponse.json();
83
- if (!!json) {
84
- currentCustomerInfos = json;
85
- }
86
- }
87
- }
88
- catch (e) {
89
- console.log('error on fetching current customer: ', e);
90
- }
91
- try {
92
- // call mailchimp
93
- const response = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'da793a762b' : data_2.MailchimpListIds.CLIENTS_PRO}/members/${userEmail}`, 'PUT', Object.assign(Object.assign({}, userMailchimpBody), { merge_fields: Object.assign(Object.assign({}, (!!currentCustomerInfos && !!currentCustomerInfos.merge_fields
94
- ? currentCustomerInfos.merge_fields
95
- : {})), userMailchimpBody.merge_fields) }));
96
- if (!!!response) {
97
- throw new Error('Mailchimp response undefined');
98
- }
99
- const reponseJson = await response.json();
100
- if (!!response && !!response.status && response.status !== 200) {
101
- if (!!reponseJson) {
102
- throw new Error(`${reponseJson.title} - ${reponseJson.detail}`);
103
- }
104
- }
105
- return true;
106
- }
107
- catch (e) {
108
- console.log('error on saving to mailchimp: ', e.toString());
109
- return false;
110
- }
111
- }
112
- }
113
- // #endregion
114
- // ----------------------------------------------------------------------------------------------------
115
- // ----------------------------------------------------------------------------------------------------
116
- // #region 2. if customer is not PRO add to detail list with tag depending on cart type
117
- if (!!!isPro) {
118
- console.log('user is not Pro');
119
- const cartType = (0, invoices_1.getOrderTypeString)(cartData, { frOnly: true });
120
- if (!!!userEmail) {
121
- return false;
122
- }
123
- const billingAddress = cartData.billing_address;
124
- try {
125
- // call mailchimp to add customer
126
- console.log('calling mailchimp to add customer');
127
- const responseMember = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'ddda2c2323' : data_2.MailchimpListIds.CLIENTS_PARTICULIER}/members/${userEmail}`, 'PUT', Object.assign(Object.assign({}, userMailchimpBody), { merge_fields: Object.assign(Object.assign({}, userMailchimpBody.merge_fields), (!!billingAddress
128
- ? {
129
- ADDRESS: {
130
- addr1: billingAddress.address.line1,
131
- addr2: billingAddress.address.line2
132
- ? billingAddress.address.line2
133
- : !!billingAddress.address.app
134
- ? billingAddress.address.app
135
- : '',
136
- city: billingAddress.address.city,
137
- state: billingAddress.address.state,
138
- zip: billingAddress.address.postal_code,
139
- country: billingAddress.address.country
140
- }
141
- }
142
- : {})) }));
143
- if (!!!responseMember) {
144
- throw new Error('Mailchimp response undefined');
145
- }
146
- const reponseMemberJson = await responseMember.json();
147
- if (!!responseMember && !!responseMember.status && responseMember.status !== 200) {
148
- if (!!reponseMemberJson) {
149
- throw new Error(`${reponseMemberJson.title} - ${reponseMemberJson.detail}`);
150
- }
151
- }
152
- }
153
- catch (e) {
154
- console.log('error on saving customer to mailchimp after cart paid: ', e.toString());
155
- return false;
156
- }
157
- try {
158
- // call mailchimp to add tags
159
- console.log('calling mailchimp to add tags to cart');
160
- const responseTags = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'ddda2c2323' : data_2.MailchimpListIds.CLIENTS_PARTICULIER}/members/${userEmail}/tags`, 'POST', {
161
- tags: [
162
- { name: cartType, status: 'active' },
163
- ...(!!cartData.customer_id || (!!cartData.customer_info && !!cartData.customer_info.pro_proof_doc)
164
- ? [{ name: 'Compte client', status: 'active' }]
165
- : [])
166
- ]
167
- });
168
- if (!!!responseTags)
169
- throw new Error('Mailchimp response undefined');
170
- const reponseTagsJson = await responseTags.json();
171
- if (!!responseTags && !!responseTags.status && responseTags.status !== 200) {
172
- if (!!reponseTagsJson) {
173
- throw new Error(`${reponseTagsJson.title} - ${reponseTagsJson.detail}`);
174
- }
175
- }
176
- }
177
- catch (e) {
178
- console.log('error on saving tags to list member in mailchimp: ', e.toString());
179
- return false;
180
- }
181
- return true;
182
- }
183
- // #endregion
184
- // ----------------------------------------------------------------------------------------------------
185
- return true;
186
- };
187
- exports.onCartPaymentAddToMailchimp = onCartPaymentAddToMailchimp;
188
- // ----------------------------------------------------------------------------------------------------
189
- // #region CARTS
190
- const _deleteCartFromMailchimp = async (storeID, cartID, space, isTest) => {
191
- try {
192
- const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/carts/${cartID}`, 'DELETE');
193
- if (!!response && !!response.status && response.status === 200) {
194
- console.log('Mailchimp cart with id ' + cartID + ' deleted');
195
- return;
196
- }
197
- }
198
- catch (e) {
199
- throw new Error(e.toString());
200
- }
201
- };
202
- const _addOrUpdateCartToMailchimp = async (cartData, storeID, space, isTest) => {
203
- console.log('** adding or updating cart to mailchimp ** ');
204
- try {
205
- const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/carts`, 'POST', {
206
- id: cartData.id,
207
- currency_code: cartData.currency || 'CAD',
208
- customer: { id: cartData.id },
209
- order_total: cartData.total,
210
- lines: !!!cartData.items || !!!cartData.items.length
211
- ? []
212
- : cartData.items.map((item) => ({
213
- id: `${item.parent_product_id}-${item.sku}`,
214
- product_id: item.parent_product_id,
215
- product_variant_id: item.sku,
216
- quantity: (0, lodash_1.toNumber)(item.qte),
217
- price: (0, lodash_1.toNumber)((0, data_1.getPrice)(item, space, 'CAD').price)
218
- }))
219
- });
220
- if (!!!response)
221
- throw new Error('Mailchimp response is undefined');
222
- console.log('response.status: ', response.status);
223
- const reponseJson = await response.json();
224
- if (!!response && !!response.status && typeof response.status === 'number' && response.status !== 200) {
225
- if (!!reponseJson) {
226
- console.log('respose: ', JSON.stringify(reponseJson));
227
- throw new Error(`${reponseJson.title} - ${reponseJson.detail}`);
228
- }
229
- }
230
- return true;
231
- }
232
- catch (e) {
233
- console.log('error on saving to mailchimp: ', e.toString());
234
- return false;
235
- }
236
- };
237
- // #endregion
238
- // ----------------------------------------------------------------------------------------------------
239
- // ----------------------------------------------------------------------------------------------------
240
- // #region ORDERS
241
- const _addOrderToMailchimp = async (cartData, storeID, space, isTest) => {
242
- try {
243
- const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/orders`, 'POST', Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ id: cartData.ref, currency_code: cartData.currency || 'CAD', customer: { id: cartData.id }, order_total: cartData.total, lines: !!!cartData.items.length
244
- ? []
245
- : cartData.items.map((item) => ({
246
- id: `${item.parent_product_id}-${item.sku}`,
247
- product_id: item.parent_product_id,
248
- product_variant_id: item.sku,
249
- quantity: (0, lodash_1.toNumber)(item.qte),
250
- price: (0, lodash_1.toNumber)((0, data_1.getPrice)(item, space, 'CAD').price)
251
- })) }, (!!cartData.paid_at
252
- ? {
253
- processed_at_foreign: (0, moment_1.default)((0, data_1.formatDate)(cartData.paid_at)).format('YYYY-MM-DD')
254
- }
255
- : {})), (!!cartData.subtotalWithoutPromotions
256
- ? {
257
- discount_total: cartData.subtotal - cartData.subtotalWithoutPromotions
258
- }
259
- : {})), (!!cartData.total_taxes ? { tax_total: cartData.total_taxes } : {})), (!!cartData.shipping ? { shipping_total: cartData.shipping } : {})), (!!cartData.shipping_address ? { shipping_address: (0, exports.getCustomerAddress)(cartData.shipping_address) } : {})), (!!cartData.billing_address ? { billing_address: (0, exports.getCustomerAddress)(cartData.billing_address) } : {})));
260
- if (!!!response)
261
- throw new Error('Mailchimp response is undefined');
262
- const reponseJson = await response.json();
263
- if (!!response && !!response.status && typeof response.status === 'number' && response.status !== 200) {
264
- if (!!reponseJson) {
265
- throw new Error(`${reponseJson.title} - ${reponseJson.detail}`);
266
- }
267
- }
268
- return true;
269
- }
270
- catch (e) {
271
- console.log('error on saving to mailchimp: ', e.toString());
272
- return false;
273
- }
274
- };
275
- // #endregion
276
- // ----------------------------------------------------------------------------------------------------
277
- // ----------------------------------------------------------------------------------------------------
278
- // #region CUSTOMERS
279
- const _deleteCustomerFromMailchimp = async (storeID, customerID, space, isTest) => {
280
- try {
281
- const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/customers/${customerID}`, 'DELETE');
282
- if (!!response && !!response.status && response.status === 200) {
283
- console.log('Mailchimp customer with id ' + customerID + ' deleted');
284
- return;
285
- }
286
- }
287
- catch (e) {
288
- throw new Error(e.toString());
289
- }
290
- };
291
- const _addUpdateCustomerToStoreMailchimp = async (storeID, space, isTest, body) => {
292
- try {
293
- const currentCustomerResponse = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/customers/${body.id}`, 'PUT', body);
294
- if (!!currentCustomerResponse && !!currentCustomerResponse.status && currentCustomerResponse.status === 200) {
295
- console.log('customer successfully added to mailchimp with id: ', body.id);
296
- }
297
- }
298
- catch (e) {
299
- console.log('error on fetching current customer: ', e);
300
- }
301
- };
302
- const _addOrUpdateCustomer = async (cartData, storeID, space, isTest) => {
303
- const customerID = !!cartData.customer_id ? cartData.customer_id : cartData.user_email || '';
304
- console.log(' ** in _addOrUpdateCustomer, customerID: ', customerID);
305
- try {
306
- let customerQuery;
307
- if (!!cartData.customer_id) {
308
- try {
309
- customerQuery = await space.customers.get({
310
- query: [{ field: 'id', operator: '==', value: customerID }]
311
- });
312
- }
313
- catch (e) {
314
- console.log('could not fetch customer: ', e);
315
- }
316
- }
317
- const customer = !!customerQuery && !!customerQuery.length ? customerQuery[0].data() : null;
318
- console.log('customer was found: ', !!customer);
319
- const body = Object.assign({ id: cartData.id, email_address: !!cartData.customer_info && !!cartData.customer_info.customer_default_email
320
- ? cartData.customer_info.customer_default_email
321
- : cartData.user_email || '', opt_in_status: true }, (!!customer
322
- ? Object.assign(Object.assign(Object.assign(Object.assign({}, (!!customer.company_info &&
323
- customer.company_info.invoice_info &&
324
- !!customer.company_info.invoice_info.legal_name
325
- ? { company: customer.company_info.invoice_info.legal_name }
326
- : {})), (!!customer.basic_info.customer_firstname ? { first_name: customer.basic_info.customer_firstname } : {})), (!!customer.basic_info.customer_lastname ? { last_name: customer.basic_info.customer_lastname } : {})), (!!customer.expedition_info &&
327
- !!customer.expedition_info.length &&
328
- customer.expedition_info.find((exp) => !!exp.is_default && exp.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING))
329
- ? {
330
- address: (0, exports.getCustomerAddress)(customer.expedition_info.find((exp) => !!exp.is_default && exp.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)))
331
- }
332
- : {})) : {}));
333
- console.log('body: ', JSON.stringify(body));
334
- await _addUpdateCustomerToStoreMailchimp(storeID, space, isTest, body);
335
- }
336
- catch (e) {
337
- console.log('error on fetching current customer: ', e);
338
- }
339
- };
340
- const _checkIfCustomerExists = async (customerID, storeID, space, isTest) => {
341
- try {
342
- const currentCustomerResponse = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/customers/${customerID}`, 'GET');
343
- if (!!currentCustomerResponse && !!currentCustomerResponse.status && currentCustomerResponse.status === 200) {
344
- return true;
345
- }
346
- return false;
347
- }
348
- catch (e) {
349
- console.log('error on fetching current customer: ', e);
350
- return false;
351
- }
352
- };
353
- const _updateCustomerWithData = async (listID, space, isTest, customerID, tags, fields) => {
354
- // Add custom fields
355
- try {
356
- await (0, exports.callMailchimp)(space, isTest, `/lists/${listID}/members/${customerID}`, 'PUT', {
357
- merge_fields: fields
358
- });
359
- }
360
- catch (e) {
361
- console.log('error on adding merge fields: ', e);
362
- }
363
- // Add tags
364
- try {
365
- await (0, exports.callMailchimp)(space, isTest, `/lists/${listID}/members/${customerID}/tags`, 'POST', {
366
- tags
367
- });
368
- }
369
- catch (e) {
370
- console.log('error on adding merge fields: ', e);
371
- }
372
- };
373
- // #endregion
374
- // ----------------------------------------------------------------------------------------------------
375
- // ----------------------------------------------------------------------------------------------------
376
- // #region PRODUCTS
377
- const _deleteProductFromMailchimp = async (storeID, productID, space, isTest) => {
378
- try {
379
- const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products/${productID}`, 'DELETE');
380
- if (!!response && !!response.status && response.status === 200) {
381
- console.log('Mailchimp product with id ' + productID + ' deleted');
382
- return;
383
- }
384
- }
385
- catch (e) {
386
- throw new Error(e.toString());
387
- }
388
- };
389
- const _addProductToMailchimp = async (productData, storeID, space, isTest) => {
390
- const spaceData = space.data();
391
- const inventories = await (0, exports.getInventories)(productData.declinations, space);
392
- const body = Object.assign(Object.assign(Object.assign({ id: productData.id, title: (0, locale_1.getPrincipalWord)(productData.name, space), variants: (0, exports.createProdVariants)(productData, space, inventories), handle: productData.slug }, (!!spaceData.url ? { url: `https://${spaceData.url}/produits/${productData.slug}` } : {})), (0, exports.getTypeAttribute)(productData)), { image_url: !!productData.image_files && !!productData.image_files.length ? productData.image_files[0].img_path : '', images: !!productData.image_files && !!productData.image_files.length
393
- ? productData.image_files.map((img) => ({
394
- id: (0, uuid_1.v4)(),
395
- url: img.img_path
396
- }))
397
- : [], published_at_foreign: !!productData.created_at
398
- ? (0, moment_1.default)((0, data_1.formatDate)(productData.created_at)).format('YYYY-MM-DD')
399
- : (0, moment_1.default)().format('YYYY-MM-DD') });
400
- try {
401
- const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products`, 'POST', body);
402
- if (!!response && !!response.status && response.status === 200) {
403
- console.log('Mailchimp product added successfully with id ' + productData.id + ' and slug ' + productData.slug);
404
- return;
405
- }
406
- }
407
- catch (e) {
408
- throw new Error(e.toString());
409
- }
410
- };
411
- const _updateProductInMailchimp = async (data, storeID, space, isTest) => {
412
- const inventories = await (0, exports.getInventories)(data.declinations, space);
413
- const updatedProd = Object.assign(Object.assign({ title: (0, locale_1.getPrincipalWord)(data.name, space) }, (0, exports.getTypeAttribute)(data)), { image_url: data.image_files[0] ? data.image_files[0].img_path : '', variants: (0, exports.createProdVariants)(data, space, inventories), images: !!data.image_files && !!data.image_files.length
414
- ? data.image_files.map((img) => ({ id: (0, uuid_1.v4)(), url: img.img_path }))
415
- : [] });
416
- try {
417
- await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products/${data.id}`, 'PATCH', updatedProd);
418
- }
419
- catch (e) {
420
- throw new Error(e.toString());
421
- }
422
- };
423
- const _updateProductVariantInMailchimp = async (body, storeID, productID, variantID, space, isTest) => {
424
- try {
425
- await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products/${productID}/variants/${variantID}`, 'PATCH', body);
426
- }
427
- catch (e) {
428
- console.log('error on updating product variant in mailchimp: ', e.toString());
429
- }
430
- };
431
- // #endregion
432
- // ----------------------------------------------------------------------------------------------------
433
- // ----------------------------------------------------------------------------------------------------
434
- // #region UTILS
435
- const fetchMailchimpService = (space, isEcommInstance) => {
436
- let services = undefined;
437
- try {
438
- services = space.services({
439
- field: 'external_service_name',
440
- value: 'mailchimp'
441
- });
442
- }
443
- catch (e) {
444
- console.log('error on fetching mailchimp service: ', e);
445
- }
446
- if (!!!services || !!!services.length) {
447
- console.log('service not found');
448
- return;
449
- }
450
- const mailchimp = services[0];
451
- if (!!!mailchimp ||
452
- !!!mailchimp.external_service_infos.api ||
453
- (!!isEcommInstance &&
454
- (!!!mailchimp.external_service_infos.ecomm_store_id || !!!mailchimp.external_service_infos.ecomm_list_id))) {
455
- console.log('no mailchimp: ', !!!mailchimp);
456
- console.log('no api: ', !!!mailchimp.external_service_infos.api);
457
- console.log('isEcommInstance: ', !!isEcommInstance);
458
- console.log('no store_id of list_id:', !!!mailchimp.external_service_infos.ecomm_store_id || !!!mailchimp.external_service_infos.ecomm_list_id);
459
- return;
460
- }
461
- return mailchimp;
462
- };
463
- exports.fetchMailchimpService = fetchMailchimpService;
464
- const getCustomerAddress = (expeditionInfo) => (Object.assign(Object.assign({ address1: expeditionInfo.address.line1 }, (!!expeditionInfo.address.line2
465
- ? { address2: expeditionInfo.address.line2 }
466
- : !!expeditionInfo.address.app
467
- ? { address2: expeditionInfo.address.app }
468
- : {})), { city: expeditionInfo.address.city, province: expeditionInfo.address.state, postal_code: expeditionInfo.address.postal_code, country: expeditionInfo.address.country || 'CA' }));
469
- exports.getCustomerAddress = getCustomerAddress;
470
- const getTypeAttribute = (data) => {
471
- if (!!!data.attributes)
472
- return {};
473
- const typeAttr = data.attributes[data_2.AttributesIdEnumGR.TYPE];
474
- if (!!!typeAttr)
475
- return {};
476
- return { type: typeAttr[0] };
477
- };
478
- exports.getTypeAttribute = getTypeAttribute;
479
- const getInventoryForDecli = (decli, inventories) => {
480
- if (!!decli.is_service || !!decli.is_service || decli.disabled)
481
- return 0;
482
- const sameSku = inventories.find((i) => !!i && i.sku === decli.sku);
483
- if (!!!sameSku)
484
- return 0;
485
- if (!!!sameSku.web_inventory)
486
- return 0;
487
- return sameSku.web_inventory.available;
488
- };
489
- exports.getInventoryForDecli = getInventoryForDecli;
490
- const createProdVariants = (prod, space, inventories) => {
491
- return prod.declinations
492
- .filter((d) => !!!d.is_sample)
493
- .map((decli) => (Object.assign(Object.assign(Object.assign({ id: decli.sku, title: `${(0, locale_1.getPrincipalWord)(decli.name, space)}`, sku: decli.sku, price: decli.regular_price.amount }, (!!inventories ? { inventory_quantity: (0, lodash_1.ceil)((0, exports.getInventoryForDecli)(decli, inventories)) } : {})), { image_url: !!decli.images_path && !!decli.images_path.length ? decli.images_path[0].img_path : '' }), (!!decli.disabled ? { visibility: 'hidden' } : {}))));
494
- };
495
- exports.createProdVariants = createProdVariants;
496
- const getInventories = async (declis, space) => {
497
- let inventories = [];
498
- try {
499
- inventories = (await Promise.all(declis.map(async (decli) => {
500
- return await space.inventoryItems.getOne(decli.sku);
501
- }))).filter((i) => !!i);
502
- }
503
- catch (e) {
504
- console.log('error on fetcing inventories: ', e);
505
- }
506
- return inventories;
507
- };
508
- exports.getInventories = getInventories;
509
- // #endregion
510
- // ----------------------------------------------------------------------------------------------------
511
- exports.mailchimpActions = {
512
- products: {
513
- delete: _deleteProductFromMailchimp,
514
- add: _addProductToMailchimp,
515
- update: _updateProductInMailchimp,
516
- updateVariant: _updateProductVariantInMailchimp
517
- },
518
- customers: {
519
- add: _addOrUpdateCustomer,
520
- update: _updateCustomerWithData,
521
- delete: _deleteCustomerFromMailchimp,
522
- exists: _checkIfCustomerExists
523
- },
524
- orders: {
525
- add: _addOrderToMailchimp
526
- },
527
- carts: {
528
- delete: _deleteCartFromMailchimp,
529
- add: _addOrUpdateCartToMailchimp
530
- }
531
- };
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mailchimpActions = exports.getInventories = exports.createProdVariants = exports.getInventoryForDecli = exports.getTypeAttribute = exports.getCustomerAddress = exports.fetchMailchimpService = exports.onCartPaymentAddToMailchimp = exports.callMailchimp = void 0;
7
+ const isomorphic_unfetch_1 = __importDefault(require("isomorphic-unfetch"));
8
+ const Customer_1 = require("../Interfaces/Customer");
9
+ const data_1 = require("../utils/data");
10
+ const locale_1 = require("../utils/locale");
11
+ const lodash_1 = require("lodash");
12
+ const moment_1 = __importDefault(require("moment"));
13
+ const uuid_1 = require("uuid");
14
+ const invoices_1 = require("../rules/GR/utils/invoices");
15
+ const data_2 = require("../rules/GR/interfaces/data");
16
+ const callMailchimp = async (space, isTest, endpoint, method, body) => {
17
+ // Get mailchimp infos from space
18
+ const correspondingServices = space.services({
19
+ field: 'external_service_name',
20
+ value: 'mailchimp'
21
+ });
22
+ if (!!!correspondingServices || !!!correspondingServices.length)
23
+ return;
24
+ const mailchimp = correspondingServices[0];
25
+ if (!!!mailchimp || !!!mailchimp.external_service_infos.api)
26
+ return;
27
+ const apiKey = mailchimp.external_service_infos.api;
28
+ const serverName = !!isTest ? 'us9' : mailchimp.external_service_infos.api.split('-')[1];
29
+ const url = `https://${serverName}.api.mailchimp.com/3.0`;
30
+ if (!!endpoint.includes('/customers/') && method === 'GET') {
31
+ console.log('-------------');
32
+ console.log('going to check if customer exists in mailchimp');
33
+ console.log('url called: ', `${url}${endpoint}`);
34
+ }
35
+ try {
36
+ const response = await (0, isomorphic_unfetch_1.default)(`${url}${endpoint}`, Object.assign({ method, headers: {
37
+ Authorization: `Basic ${apiKey}`,
38
+ 'Content-Type': 'application/json'
39
+ } }, (!!body ? { body: JSON.stringify(body) } : {})));
40
+ return response;
41
+ }
42
+ catch (e) {
43
+ console.log('error on mailchimp call: ', e);
44
+ throw new Error(e.toString());
45
+ }
46
+ };
47
+ exports.callMailchimp = callMailchimp;
48
+ const onCartPaymentAddToMailchimp = async (cartData, space) => {
49
+ console.log('---------------------');
50
+ console.log('in onCartPaymentAddToMailchimp for cart ' + cartData.ref);
51
+ const isTest = process.env.GCLOUD_PROJECT !== 'gng-ecr' || process.env.NODE_ENV !== 'production';
52
+ // if (!!!isTest) return
53
+ const customerEmail = !!cartData.customer_info ? cartData.customer_info.customer_default_email : '';
54
+ const userEmail = !!cartData.user_email ? cartData.user_email : '';
55
+ const isPro = !!cartData.customer_info && !!cartData.customer_info.pro_title && !!cartData.customer_info.pro_proof_doc;
56
+ console.log('customer is pro: ', !!isPro);
57
+ const customerBillingName = !!cartData.billing_address && cartData.billing_address.expedition_recipient_name
58
+ ? cartData.billing_address.expedition_recipient_name
59
+ : '';
60
+ const customerBillingPhone = !!cartData.billing_address && cartData.billing_address.expedition_recipient_phone
61
+ ? cartData.billing_address.expedition_recipient_phone
62
+ : '';
63
+ const userMailchimpBody = {
64
+ email_address: userEmail,
65
+ status_if_new: 'subscribed',
66
+ merge_fields: {
67
+ FNAME: !!customerBillingName ? customerBillingName.split('%')[0] : '',
68
+ LNAME: !!customerBillingName && customerBillingName.split('%').length > 1 ? customerBillingName.split('%')[1] : '',
69
+ PHONE: !!customerBillingPhone ? customerBillingPhone : ''
70
+ }
71
+ };
72
+ // ----------------------------------------------------------------------------------------------------
73
+ // #region 1. Check if customer if PRO and customer_info.default_customer_email is different thant user_email
74
+ if (!!isPro) {
75
+ console.log('user isPro');
76
+ if (customerEmail !== userEmail) {
77
+ // check if customer with customerEmail is already in mailchimp
78
+ let currentCustomerInfos = undefined;
79
+ try {
80
+ const currentCustomerResponse = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'da793a762b' : data_2.MailchimpListIds.CLIENTS_PRO}/members/${customerEmail}`, 'GET');
81
+ if (!!currentCustomerResponse && !!currentCustomerResponse.status && currentCustomerResponse.status === 200) {
82
+ const json = await currentCustomerResponse.json();
83
+ if (!!json) {
84
+ currentCustomerInfos = json;
85
+ }
86
+ }
87
+ }
88
+ catch (e) {
89
+ console.log('error on fetching current customer: ', e);
90
+ }
91
+ try {
92
+ // call mailchimp
93
+ const response = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'da793a762b' : data_2.MailchimpListIds.CLIENTS_PRO}/members/${userEmail}`, 'PUT', Object.assign(Object.assign({}, userMailchimpBody), { merge_fields: Object.assign(Object.assign({}, (!!currentCustomerInfos && !!currentCustomerInfos.merge_fields
94
+ ? currentCustomerInfos.merge_fields
95
+ : {})), userMailchimpBody.merge_fields) }));
96
+ if (!!!response) {
97
+ throw new Error('Mailchimp response undefined');
98
+ }
99
+ const reponseJson = await response.json();
100
+ if (!!response && !!response.status && response.status !== 200) {
101
+ if (!!reponseJson) {
102
+ throw new Error(`${reponseJson.title} - ${reponseJson.detail}`);
103
+ }
104
+ }
105
+ return true;
106
+ }
107
+ catch (e) {
108
+ console.log('error on saving to mailchimp: ', e.toString());
109
+ return false;
110
+ }
111
+ }
112
+ }
113
+ // #endregion
114
+ // ----------------------------------------------------------------------------------------------------
115
+ // ----------------------------------------------------------------------------------------------------
116
+ // #region 2. if customer is not PRO add to detail list with tag depending on cart type
117
+ if (!!!isPro) {
118
+ console.log('user is not Pro');
119
+ const cartType = (0, invoices_1.getOrderTypeString)(cartData, { frOnly: true });
120
+ if (!!!userEmail) {
121
+ return false;
122
+ }
123
+ const billingAddress = cartData.billing_address;
124
+ try {
125
+ // call mailchimp to add customer
126
+ console.log('calling mailchimp to add customer');
127
+ const responseMember = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'ddda2c2323' : data_2.MailchimpListIds.CLIENTS_PARTICULIER}/members/${userEmail}`, 'PUT', Object.assign(Object.assign({}, userMailchimpBody), { merge_fields: Object.assign(Object.assign({}, userMailchimpBody.merge_fields), (!!billingAddress
128
+ ? {
129
+ ADDRESS: {
130
+ addr1: billingAddress.address.line1,
131
+ addr2: billingAddress.address.line2
132
+ ? billingAddress.address.line2
133
+ : !!billingAddress.address.app
134
+ ? billingAddress.address.app
135
+ : '',
136
+ city: billingAddress.address.city,
137
+ state: billingAddress.address.state,
138
+ zip: billingAddress.address.postal_code,
139
+ country: billingAddress.address.country
140
+ }
141
+ }
142
+ : {})) }));
143
+ if (!!!responseMember) {
144
+ throw new Error('Mailchimp response undefined');
145
+ }
146
+ const reponseMemberJson = await responseMember.json();
147
+ if (!!responseMember && !!responseMember.status && responseMember.status !== 200) {
148
+ if (!!reponseMemberJson) {
149
+ throw new Error(`${reponseMemberJson.title} - ${reponseMemberJson.detail}`);
150
+ }
151
+ }
152
+ }
153
+ catch (e) {
154
+ console.log('error on saving customer to mailchimp after cart paid: ', e.toString());
155
+ return false;
156
+ }
157
+ try {
158
+ // call mailchimp to add tags
159
+ console.log('calling mailchimp to add tags to cart');
160
+ const responseTags = await (0, exports.callMailchimp)(space, isTest, `/lists/${!!isTest ? 'ddda2c2323' : data_2.MailchimpListIds.CLIENTS_PARTICULIER}/members/${userEmail}/tags`, 'POST', {
161
+ tags: [
162
+ { name: cartType, status: 'active' },
163
+ ...(!!cartData.customer_id || (!!cartData.customer_info && !!cartData.customer_info.pro_proof_doc)
164
+ ? [{ name: 'Compte client', status: 'active' }]
165
+ : [])
166
+ ]
167
+ });
168
+ if (!!!responseTags)
169
+ throw new Error('Mailchimp response undefined');
170
+ const reponseTagsJson = await responseTags.json();
171
+ if (!!responseTags && !!responseTags.status && responseTags.status !== 200) {
172
+ if (!!reponseTagsJson) {
173
+ throw new Error(`${reponseTagsJson.title} - ${reponseTagsJson.detail}`);
174
+ }
175
+ }
176
+ }
177
+ catch (e) {
178
+ console.log('error on saving tags to list member in mailchimp: ', e.toString());
179
+ return false;
180
+ }
181
+ return true;
182
+ }
183
+ // #endregion
184
+ // ----------------------------------------------------------------------------------------------------
185
+ return true;
186
+ };
187
+ exports.onCartPaymentAddToMailchimp = onCartPaymentAddToMailchimp;
188
+ // ----------------------------------------------------------------------------------------------------
189
+ // #region CARTS
190
+ const _deleteCartFromMailchimp = async (storeID, cartID, space, isTest) => {
191
+ try {
192
+ const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/carts/${cartID}`, 'DELETE');
193
+ if (!!response && !!response.status && response.status === 200) {
194
+ console.log('Mailchimp cart with id ' + cartID + ' deleted');
195
+ return;
196
+ }
197
+ }
198
+ catch (e) {
199
+ throw new Error(e.toString());
200
+ }
201
+ };
202
+ const _addOrUpdateCartToMailchimp = async (cartData, storeID, space, isTest) => {
203
+ console.log('** adding or updating cart to mailchimp ** ');
204
+ try {
205
+ const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/carts`, 'POST', {
206
+ id: cartData.id,
207
+ currency_code: cartData.currency || 'CAD',
208
+ customer: { id: cartData.id },
209
+ order_total: cartData.total,
210
+ lines: !!!cartData.items || !!!cartData.items.length
211
+ ? []
212
+ : cartData.items.map((item) => ({
213
+ id: `${item.parent_product_id}-${item.sku}`,
214
+ product_id: item.parent_product_id,
215
+ product_variant_id: item.sku,
216
+ quantity: (0, lodash_1.toNumber)(item.qte),
217
+ price: (0, lodash_1.toNumber)((0, data_1.getPrice)(item, space, 'CAD').price)
218
+ }))
219
+ });
220
+ if (!!!response)
221
+ throw new Error('Mailchimp response is undefined');
222
+ console.log('response.status: ', response.status);
223
+ const reponseJson = await response.json();
224
+ if (!!response && !!response.status && typeof response.status === 'number' && response.status !== 200) {
225
+ if (!!reponseJson) {
226
+ console.log('respose: ', JSON.stringify(reponseJson));
227
+ throw new Error(`${reponseJson.title} - ${reponseJson.detail}`);
228
+ }
229
+ }
230
+ return true;
231
+ }
232
+ catch (e) {
233
+ console.log('error on saving to mailchimp: ', e.toString());
234
+ return false;
235
+ }
236
+ };
237
+ // #endregion
238
+ // ----------------------------------------------------------------------------------------------------
239
+ // ----------------------------------------------------------------------------------------------------
240
+ // #region ORDERS
241
+ const _addOrderToMailchimp = async (cartData, storeID, space, isTest) => {
242
+ try {
243
+ const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/orders`, 'POST', Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ id: cartData.ref, currency_code: cartData.currency || 'CAD', customer: { id: cartData.id }, order_total: cartData.total, lines: !!!cartData.items.length
244
+ ? []
245
+ : cartData.items.map((item) => ({
246
+ id: `${item.parent_product_id}-${item.sku}`,
247
+ product_id: item.parent_product_id,
248
+ product_variant_id: item.sku,
249
+ quantity: (0, lodash_1.toNumber)(item.qte),
250
+ price: (0, lodash_1.toNumber)((0, data_1.getPrice)(item, space, 'CAD').price)
251
+ })) }, (!!cartData.paid_at
252
+ ? {
253
+ processed_at_foreign: (0, moment_1.default)((0, data_1.formatDate)(cartData.paid_at)).format('YYYY-MM-DD')
254
+ }
255
+ : {})), (!!cartData.subtotalWithoutPromotions
256
+ ? {
257
+ discount_total: cartData.subtotal - cartData.subtotalWithoutPromotions
258
+ }
259
+ : {})), (!!cartData.total_taxes ? { tax_total: cartData.total_taxes } : {})), (!!cartData.shipping ? { shipping_total: cartData.shipping } : {})), (!!cartData.shipping_address ? { shipping_address: (0, exports.getCustomerAddress)(cartData.shipping_address) } : {})), (!!cartData.billing_address ? { billing_address: (0, exports.getCustomerAddress)(cartData.billing_address) } : {})));
260
+ if (!!!response)
261
+ throw new Error('Mailchimp response is undefined');
262
+ const reponseJson = await response.json();
263
+ if (!!response && !!response.status && typeof response.status === 'number' && response.status !== 200) {
264
+ if (!!reponseJson) {
265
+ throw new Error(`${reponseJson.title} - ${reponseJson.detail}`);
266
+ }
267
+ }
268
+ return true;
269
+ }
270
+ catch (e) {
271
+ console.log('error on saving to mailchimp: ', e.toString());
272
+ return false;
273
+ }
274
+ };
275
+ // #endregion
276
+ // ----------------------------------------------------------------------------------------------------
277
+ // ----------------------------------------------------------------------------------------------------
278
+ // #region CUSTOMERS
279
+ const _deleteCustomerFromMailchimp = async (storeID, customerID, space, isTest) => {
280
+ try {
281
+ const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/customers/${customerID}`, 'DELETE');
282
+ if (!!response && !!response.status && response.status === 200) {
283
+ console.log('Mailchimp customer with id ' + customerID + ' deleted');
284
+ return;
285
+ }
286
+ }
287
+ catch (e) {
288
+ throw new Error(e.toString());
289
+ }
290
+ };
291
+ const _addUpdateCustomerToStoreMailchimp = async (storeID, space, isTest, body) => {
292
+ try {
293
+ const currentCustomerResponse = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/customers/${body.id}`, 'PUT', body);
294
+ if (!!currentCustomerResponse && !!currentCustomerResponse.status && currentCustomerResponse.status === 200) {
295
+ console.log('customer successfully added to mailchimp with id: ', body.id);
296
+ }
297
+ }
298
+ catch (e) {
299
+ console.log('error on fetching current customer: ', e);
300
+ }
301
+ };
302
+ const _addOrUpdateCustomer = async (cartData, storeID, space, isTest) => {
303
+ const customerID = !!cartData.customer_id ? cartData.customer_id : cartData.user_email || '';
304
+ console.log(' ** in _addOrUpdateCustomer, customerID: ', customerID);
305
+ try {
306
+ let customerQuery;
307
+ if (!!cartData.customer_id) {
308
+ try {
309
+ customerQuery = await space.customers.get({
310
+ query: [{ field: 'id', operator: '==', value: customerID }]
311
+ });
312
+ }
313
+ catch (e) {
314
+ console.log('could not fetch customer: ', e);
315
+ }
316
+ }
317
+ const customer = !!customerQuery && !!customerQuery.length ? customerQuery[0].data() : null;
318
+ console.log('customer was found: ', !!customer);
319
+ const body = Object.assign({ id: cartData.id, email_address: !!cartData.customer_info && !!cartData.customer_info.customer_default_email
320
+ ? cartData.customer_info.customer_default_email
321
+ : cartData.user_email || '', opt_in_status: true }, (!!customer
322
+ ? Object.assign(Object.assign(Object.assign(Object.assign({}, (!!customer.company_info &&
323
+ customer.company_info.invoice_info &&
324
+ !!customer.company_info.invoice_info.legal_name
325
+ ? { company: customer.company_info.invoice_info.legal_name }
326
+ : {})), (!!customer.basic_info.customer_firstname ? { first_name: customer.basic_info.customer_firstname } : {})), (!!customer.basic_info.customer_lastname ? { last_name: customer.basic_info.customer_lastname } : {})), (!!customer.expedition_info &&
327
+ !!customer.expedition_info.length &&
328
+ customer.expedition_info.find((exp) => !!exp.is_default && exp.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING))
329
+ ? {
330
+ address: (0, exports.getCustomerAddress)(customer.expedition_info.find((exp) => !!exp.is_default && exp.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)))
331
+ }
332
+ : {})) : {}));
333
+ console.log('body: ', JSON.stringify(body));
334
+ await _addUpdateCustomerToStoreMailchimp(storeID, space, isTest, body);
335
+ }
336
+ catch (e) {
337
+ console.log('error on fetching current customer: ', e);
338
+ }
339
+ };
340
+ const _checkIfCustomerExists = async (customerID, storeID, space, isTest) => {
341
+ try {
342
+ const currentCustomerResponse = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/customers/${customerID}`, 'GET');
343
+ if (!!currentCustomerResponse && !!currentCustomerResponse.status && currentCustomerResponse.status === 200) {
344
+ return true;
345
+ }
346
+ return false;
347
+ }
348
+ catch (e) {
349
+ console.log('error on fetching current customer: ', e);
350
+ return false;
351
+ }
352
+ };
353
+ const _updateCustomerWithData = async (listID, space, isTest, customerID, tags, fields) => {
354
+ // Add custom fields
355
+ try {
356
+ await (0, exports.callMailchimp)(space, isTest, `/lists/${listID}/members/${customerID}`, 'PUT', {
357
+ merge_fields: fields
358
+ });
359
+ }
360
+ catch (e) {
361
+ console.log('error on adding merge fields: ', e);
362
+ }
363
+ // Add tags
364
+ try {
365
+ await (0, exports.callMailchimp)(space, isTest, `/lists/${listID}/members/${customerID}/tags`, 'POST', {
366
+ tags
367
+ });
368
+ }
369
+ catch (e) {
370
+ console.log('error on adding merge fields: ', e);
371
+ }
372
+ };
373
+ // #endregion
374
+ // ----------------------------------------------------------------------------------------------------
375
+ // ----------------------------------------------------------------------------------------------------
376
+ // #region PRODUCTS
377
+ const _deleteProductFromMailchimp = async (storeID, productID, space, isTest) => {
378
+ try {
379
+ const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products/${productID}`, 'DELETE');
380
+ if (!!response && !!response.status && response.status === 200) {
381
+ console.log('Mailchimp product with id ' + productID + ' deleted');
382
+ return;
383
+ }
384
+ }
385
+ catch (e) {
386
+ throw new Error(e.toString());
387
+ }
388
+ };
389
+ const _addProductToMailchimp = async (productData, storeID, space, isTest) => {
390
+ const spaceData = space.data();
391
+ const inventories = await (0, exports.getInventories)(productData.declinations, space);
392
+ const body = Object.assign(Object.assign(Object.assign({ id: productData.id, title: (0, locale_1.getPrincipalWord)(productData.name, space), variants: (0, exports.createProdVariants)(productData, space, inventories), handle: productData.slug }, (!!spaceData.url ? { url: `https://${spaceData.url}/produits/${productData.slug}` } : {})), (0, exports.getTypeAttribute)(productData)), { image_url: !!productData.image_files && !!productData.image_files.length ? productData.image_files[0].img_path : '', images: !!productData.image_files && !!productData.image_files.length
393
+ ? productData.image_files.map((img) => ({
394
+ id: (0, uuid_1.v4)(),
395
+ url: img.img_path
396
+ }))
397
+ : [], published_at_foreign: !!productData.created_at
398
+ ? (0, moment_1.default)((0, data_1.formatDate)(productData.created_at)).format('YYYY-MM-DD')
399
+ : (0, moment_1.default)().format('YYYY-MM-DD') });
400
+ try {
401
+ const response = await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products`, 'POST', body);
402
+ if (!!response && !!response.status && response.status === 200) {
403
+ console.log('Mailchimp product added successfully with id ' + productData.id + ' and slug ' + productData.slug);
404
+ return;
405
+ }
406
+ }
407
+ catch (e) {
408
+ throw new Error(e.toString());
409
+ }
410
+ };
411
+ const _updateProductInMailchimp = async (data, storeID, space, isTest) => {
412
+ const inventories = await (0, exports.getInventories)(data.declinations, space);
413
+ const updatedProd = Object.assign(Object.assign({ title: (0, locale_1.getPrincipalWord)(data.name, space) }, (0, exports.getTypeAttribute)(data)), { image_url: data.image_files[0] ? data.image_files[0].img_path : '', variants: (0, exports.createProdVariants)(data, space, inventories), images: !!data.image_files && !!data.image_files.length
414
+ ? data.image_files.map((img) => ({ id: (0, uuid_1.v4)(), url: img.img_path }))
415
+ : [] });
416
+ try {
417
+ await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products/${data.id}`, 'PATCH', updatedProd);
418
+ }
419
+ catch (e) {
420
+ throw new Error(e.toString());
421
+ }
422
+ };
423
+ const _updateProductVariantInMailchimp = async (body, storeID, productID, variantID, space, isTest) => {
424
+ try {
425
+ await (0, exports.callMailchimp)(space, isTest, `/ecommerce/stores/${storeID}/products/${productID}/variants/${variantID}`, 'PATCH', body);
426
+ }
427
+ catch (e) {
428
+ console.log('error on updating product variant in mailchimp: ', e.toString());
429
+ }
430
+ };
431
+ // #endregion
432
+ // ----------------------------------------------------------------------------------------------------
433
+ // ----------------------------------------------------------------------------------------------------
434
+ // #region UTILS
435
+ const fetchMailchimpService = (space, isEcommInstance) => {
436
+ let services = undefined;
437
+ try {
438
+ services = space.services({
439
+ field: 'external_service_name',
440
+ value: 'mailchimp'
441
+ });
442
+ }
443
+ catch (e) {
444
+ console.log('error on fetching mailchimp service: ', e);
445
+ }
446
+ if (!!!services || !!!services.length) {
447
+ console.log('service not found');
448
+ return;
449
+ }
450
+ const mailchimp = services[0];
451
+ if (!!!mailchimp ||
452
+ !!!mailchimp.external_service_infos.api ||
453
+ (!!isEcommInstance &&
454
+ (!!!mailchimp.external_service_infos.ecomm_store_id || !!!mailchimp.external_service_infos.ecomm_list_id))) {
455
+ console.log('no mailchimp: ', !!!mailchimp);
456
+ console.log('no api: ', !!!mailchimp.external_service_infos.api);
457
+ console.log('isEcommInstance: ', !!isEcommInstance);
458
+ console.log('no store_id of list_id:', !!!mailchimp.external_service_infos.ecomm_store_id || !!!mailchimp.external_service_infos.ecomm_list_id);
459
+ return;
460
+ }
461
+ return mailchimp;
462
+ };
463
+ exports.fetchMailchimpService = fetchMailchimpService;
464
+ const getCustomerAddress = (expeditionInfo) => (Object.assign(Object.assign({ address1: expeditionInfo.address.line1 }, (!!expeditionInfo.address.line2
465
+ ? { address2: expeditionInfo.address.line2 }
466
+ : !!expeditionInfo.address.app
467
+ ? { address2: expeditionInfo.address.app }
468
+ : {})), { city: expeditionInfo.address.city, province: expeditionInfo.address.state, postal_code: expeditionInfo.address.postal_code, country: expeditionInfo.address.country || 'CA' }));
469
+ exports.getCustomerAddress = getCustomerAddress;
470
+ const getTypeAttribute = (data) => {
471
+ if (!!!data.attributes)
472
+ return {};
473
+ const typeAttr = data.attributes[data_2.AttributesIdEnumGR.TYPE];
474
+ if (!!!typeAttr)
475
+ return {};
476
+ return { type: typeAttr[0] };
477
+ };
478
+ exports.getTypeAttribute = getTypeAttribute;
479
+ const getInventoryForDecli = (decli, inventories) => {
480
+ if (!!decli.is_service || !!decli.is_service || decli.disabled)
481
+ return 0;
482
+ const sameSku = inventories.find((i) => !!i && i.sku === decli.sku);
483
+ if (!!!sameSku)
484
+ return 0;
485
+ if (!!!sameSku.web_inventory)
486
+ return 0;
487
+ return sameSku.web_inventory.available;
488
+ };
489
+ exports.getInventoryForDecli = getInventoryForDecli;
490
+ const createProdVariants = (prod, space, inventories) => {
491
+ return prod.declinations
492
+ .filter((d) => !!!d.is_sample)
493
+ .map((decli) => (Object.assign(Object.assign(Object.assign({ id: decli.sku, title: `${(0, locale_1.getPrincipalWord)(decli.name, space)}`, sku: decli.sku, price: decli.regular_price.amount }, (!!inventories ? { inventory_quantity: (0, lodash_1.ceil)((0, exports.getInventoryForDecli)(decli, inventories)) } : {})), { image_url: !!decli.images_path && !!decli.images_path.length ? decli.images_path[0].img_path : '' }), (!!decli.disabled ? { visibility: 'hidden' } : {}))));
494
+ };
495
+ exports.createProdVariants = createProdVariants;
496
+ const getInventories = async (declis, space) => {
497
+ let inventories = [];
498
+ try {
499
+ inventories = (await Promise.all(declis.map(async (decli) => {
500
+ return await space.inventoryItems.getOne(decli.sku);
501
+ }))).filter((i) => !!i);
502
+ }
503
+ catch (e) {
504
+ console.log('error on fetcing inventories: ', e);
505
+ }
506
+ return inventories;
507
+ };
508
+ exports.getInventories = getInventories;
509
+ // #endregion
510
+ // ----------------------------------------------------------------------------------------------------
511
+ exports.mailchimpActions = {
512
+ products: {
513
+ delete: _deleteProductFromMailchimp,
514
+ add: _addProductToMailchimp,
515
+ update: _updateProductInMailchimp,
516
+ updateVariant: _updateProductVariantInMailchimp
517
+ },
518
+ customers: {
519
+ add: _addOrUpdateCustomer,
520
+ update: _updateCustomerWithData,
521
+ delete: _deleteCustomerFromMailchimp,
522
+ exists: _checkIfCustomerExists
523
+ },
524
+ orders: {
525
+ add: _addOrderToMailchimp
526
+ },
527
+ carts: {
528
+ delete: _deleteCartFromMailchimp,
529
+ add: _addOrUpdateCartToMailchimp
530
+ }
531
+ };
532
532
  //# sourceMappingURL=mailchimp.js.map