addio-admin-sdk 1.7.144 → 1.7.146

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 (574) 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 +564 -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 +177 -177
  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/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 +444 -444
  48. package/dist/Interfaces/Cart/index.js +197 -197
  49. package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
  50. package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
  51. package/dist/Interfaces/CashDrawers/index.d.ts +37 -37
  52. package/dist/Interfaces/CashDrawers/index.js +19 -19
  53. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  54. package/dist/Interfaces/Catalogue/index.js +37 -37
  55. package/dist/Interfaces/Category/index.d.ts +33 -33
  56. package/dist/Interfaces/Category/index.js +2 -2
  57. package/dist/Interfaces/Chart/index.d.ts +11 -11
  58. package/dist/Interfaces/Chart/index.js +2 -2
  59. package/dist/Interfaces/Class/index.d.ts +8 -8
  60. package/dist/Interfaces/Class/index.js +2 -2
  61. package/dist/Interfaces/Consent/index.d.ts +6 -6
  62. package/dist/Interfaces/Consent/index.js +2 -2
  63. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  64. package/dist/Interfaces/Context/IContextProps.js +2 -2
  65. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  66. package/dist/Interfaces/Context/IContextState.js +2 -2
  67. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  68. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  69. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  70. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  71. package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
  72. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  73. package/dist/Interfaces/Customer/index.d.ts +104 -104
  74. package/dist/Interfaces/Customer/index.js +148 -148
  75. package/dist/Interfaces/Declination/index.d.ts +117 -117
  76. package/dist/Interfaces/Declination/index.js +66 -66
  77. package/dist/Interfaces/Document/index.d.ts +8 -8
  78. package/dist/Interfaces/Document/index.js +2 -2
  79. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  80. package/dist/Interfaces/Elastic/index.js +2 -2
  81. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  82. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  84. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  86. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  88. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  90. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  91. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  92. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  93. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  94. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  95. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  96. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  97. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  98. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  99. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  100. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  101. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  102. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  103. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  104. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  105. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  106. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  107. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  108. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  109. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  110. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  111. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  112. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  113. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  114. package/dist/Interfaces/Email/IEmail.js +60 -60
  115. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  116. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  117. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  118. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  119. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  120. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  121. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  122. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  123. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  124. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  125. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  126. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  127. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  128. package/dist/Interfaces/ExportSchema/index.js +2 -2
  129. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  130. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  131. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  132. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  133. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  134. package/dist/Interfaces/ExternalService/index.js +2 -2
  135. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  136. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  137. package/dist/Interfaces/G2/index.d.ts +556 -556
  138. package/dist/Interfaces/G2/index.js +38 -38
  139. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  140. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  141. package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
  142. package/dist/Interfaces/Indexed/Product/index.js +253 -253
  143. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  144. package/dist/Interfaces/Inventory/index.js +8 -8
  145. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  146. package/dist/Interfaces/Invoice/index.js +2 -2
  147. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  148. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  149. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  150. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  151. package/dist/Interfaces/Menu/index.d.ts +40 -40
  152. package/dist/Interfaces/Menu/index.js +16 -16
  153. package/dist/Interfaces/Note/index.d.ts +10 -10
  154. package/dist/Interfaces/Note/index.js +7 -7
  155. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  156. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  157. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  158. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  159. package/dist/Interfaces/Order/index.d.ts +4 -4
  160. package/dist/Interfaces/Order/index.js +2 -2
  161. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  162. package/dist/Interfaces/Org/IRelUser.js +2 -2
  163. package/dist/Interfaces/Org/index.d.ts +29 -29
  164. package/dist/Interfaces/Org/index.js +12 -12
  165. package/dist/Interfaces/Payment/index.d.ts +26 -26
  166. package/dist/Interfaces/Payment/index.js +14 -14
  167. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  168. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  169. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  170. package/dist/Interfaces/Product/IImportProduct.js +882 -882
  171. package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
  172. package/dist/Interfaces/Product/IInventoryItem.js +38 -38
  173. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  174. package/dist/Interfaces/Product/IPricing.js +180 -180
  175. package/dist/Interfaces/Product/index.d.ts +138 -138
  176. package/dist/Interfaces/Product/index.js +64 -64
  177. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  178. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  179. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  180. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  181. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  182. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  183. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  184. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  185. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  186. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  187. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  188. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  189. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  190. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  191. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  192. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  193. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  194. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  195. package/dist/Interfaces/Quote/index.d.ts +5 -5
  196. package/dist/Interfaces/Quote/index.js +2 -2
  197. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  198. package/dist/Interfaces/Refunds/index.js +2 -2
  199. package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
  200. package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
  201. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  202. package/dist/Interfaces/Schedule/index.js +2 -2
  203. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  204. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  205. package/dist/Interfaces/Services/IService.d.ts +16 -16
  206. package/dist/Interfaces/Services/IService.js +2 -2
  207. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  208. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  209. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  210. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  211. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  212. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  213. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  214. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  215. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  216. package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
  217. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  218. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  219. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  220. package/dist/Interfaces/Slider/GR.js +271 -271
  221. package/dist/Interfaces/Slider/index.d.ts +30 -30
  222. package/dist/Interfaces/Slider/index.js +2 -2
  223. package/dist/Interfaces/Space/IExternalService.d.ts +53 -53
  224. package/dist/Interfaces/Space/IExternalService.js +44 -44
  225. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  226. package/dist/Interfaces/Space/IMember.js +9 -9
  227. package/dist/Interfaces/Space/index.d.ts +407 -405
  228. package/dist/Interfaces/Space/index.js +174 -174
  229. package/dist/Interfaces/Space/index.js.map +1 -1
  230. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  231. package/dist/Interfaces/Specials/gr.js +2 -2
  232. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  233. package/dist/Interfaces/StockNotification/index.js +2 -2
  234. package/dist/Interfaces/Store/index.d.ts +63 -63
  235. package/dist/Interfaces/Store/index.js +27 -27
  236. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  237. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  238. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  239. package/dist/Interfaces/Supplier/index.js +24 -24
  240. package/dist/Interfaces/TCG/index.d.ts +161 -161
  241. package/dist/Interfaces/TCG/index.js +54 -54
  242. package/dist/Interfaces/Tag/index.d.ts +18 -18
  243. package/dist/Interfaces/Tag/index.js +2 -2
  244. package/dist/Interfaces/Tax/index.d.ts +13 -13
  245. package/dist/Interfaces/Tax/index.js +2 -2
  246. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  247. package/dist/Interfaces/TransferRequest/index.js +46 -46
  248. package/dist/Interfaces/Translation/index.d.ts +8 -8
  249. package/dist/Interfaces/Translation/index.js +5 -5
  250. package/dist/Interfaces/Update/index.d.ts +10 -10
  251. package/dist/Interfaces/Update/index.js +2 -2
  252. package/dist/Interfaces/User/IUser.d.ts +65 -65
  253. package/dist/Interfaces/User/IUser.js +8 -8
  254. package/dist/Interfaces/Version/index.d.ts +11 -11
  255. package/dist/Interfaces/Version/index.js +2 -2
  256. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  257. package/dist/Interfaces/Wishlist/index.js +2 -2
  258. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  259. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  260. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  261. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  262. package/dist/constants/enums.d.ts +6 -6
  263. package/dist/constants/enums.js +10 -10
  264. package/dist/constants/services.d.ts +2 -2
  265. package/dist/constants/services.js +117 -117
  266. package/dist/constants/version.d.ts +2 -2
  267. package/dist/constants/version.js +5 -5
  268. package/dist/index.d.ts +50 -50
  269. package/dist/index.js +266 -266
  270. package/dist/lib/Attribute/index.d.ts +14 -14
  271. package/dist/lib/Attribute/index.js +186 -186
  272. package/dist/lib/BGJob/index.d.ts +9 -9
  273. package/dist/lib/BGJob/index.js +216 -216
  274. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  275. package/dist/lib/BackgroundWorker/index.js +59 -59
  276. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  277. package/dist/lib/Blog/BlogArticle.js +10 -10
  278. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  279. package/dist/lib/Blog/BlogAuthor.js +10 -10
  280. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  281. package/dist/lib/Blog/BlogCategory.js +10 -10
  282. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  283. package/dist/lib/Blog/BlogKeyword.js +10 -10
  284. package/dist/lib/Booking/index.d.ts +85 -85
  285. package/dist/lib/Booking/index.js +596 -596
  286. package/dist/lib/Brand/index.d.ts +26 -26
  287. package/dist/lib/Brand/index.js +131 -131
  288. package/dist/lib/Cart/index.d.ts +335 -335
  289. package/dist/lib/Cart/index.js +3981 -3977
  290. package/dist/lib/Cart/index.js.map +1 -1
  291. package/dist/lib/CartReservedQuantities/index.d.ts +49 -49
  292. package/dist/lib/CartReservedQuantities/index.js +159 -159
  293. package/dist/lib/CashDrawerShift/index.d.ts +83 -83
  294. package/dist/lib/CashDrawerShift/index.js +205 -205
  295. package/dist/lib/Catalogue/index.d.ts +15 -15
  296. package/dist/lib/Catalogue/index.js +78 -78
  297. package/dist/lib/Category/index.d.ts +34 -34
  298. package/dist/lib/Category/index.js +230 -230
  299. package/dist/lib/Class/index.d.ts +16 -16
  300. package/dist/lib/Class/index.js +66 -66
  301. package/dist/lib/Consent/index.d.ts +4 -4
  302. package/dist/lib/Consent/index.js +29 -29
  303. package/dist/lib/Customer/index.d.ts +30 -30
  304. package/dist/lib/Customer/index.js +92 -92
  305. package/dist/lib/Declination/index.d.ts +9 -9
  306. package/dist/lib/Declination/index.js +26 -26
  307. package/dist/lib/Discount/index.d.ts +27 -27
  308. package/dist/lib/Discount/index.js +493 -493
  309. package/dist/lib/ElasticSearch/index.d.ts +13 -13
  310. package/dist/lib/ElasticSearch/index.js +50 -50
  311. package/dist/lib/Elavon/index.d.ts +18 -18
  312. package/dist/lib/Elavon/index.js +135 -135
  313. package/dist/lib/Email/AbandonedCartEmail.d.ts +16 -16
  314. package/dist/lib/Email/AbandonedCartEmail.js +24 -24
  315. package/dist/lib/Email/AccountConfirmationEmail.d.ts +19 -19
  316. package/dist/lib/Email/AccountConfirmationEmail.js +30 -30
  317. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +16 -16
  318. package/dist/lib/Email/AdminOrderConfirmationEmail.js +24 -24
  319. package/dist/lib/Email/ApplicationEmail.d.ts +16 -16
  320. package/dist/lib/Email/ApplicationEmail.js +24 -24
  321. package/dist/lib/Email/BackInStockEmail.d.ts +16 -16
  322. package/dist/lib/Email/BackInStockEmail.js +24 -24
  323. package/dist/lib/Email/ContactEmail.d.ts +16 -16
  324. package/dist/lib/Email/ContactEmail.js +24 -24
  325. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +16 -16
  326. package/dist/lib/Email/CustomerBookingAdminEmail.js +24 -24
  327. package/dist/lib/Email/CustomerBookingEmail.d.ts +16 -16
  328. package/dist/lib/Email/CustomerBookingEmail.js +24 -24
  329. package/dist/lib/Email/OrderConfirmationEmail.d.ts +16 -16
  330. package/dist/lib/Email/OrderConfirmationEmail.js +24 -24
  331. package/dist/lib/Email/OrderDenounciationEmail.d.ts +16 -16
  332. package/dist/lib/Email/OrderDenounciationEmail.js +24 -24
  333. package/dist/lib/Email/OrderSampleEmail.d.ts +16 -16
  334. package/dist/lib/Email/OrderSampleEmail.js +24 -24
  335. package/dist/lib/Email/OtherTypeEmails.d.ts +16 -16
  336. package/dist/lib/Email/OtherTypeEmails.js +27 -27
  337. package/dist/lib/Email/PasswordResetEmail.d.ts +16 -16
  338. package/dist/lib/Email/PasswordResetEmail.js +24 -24
  339. package/dist/lib/Email/PhotoShootEmail.d.ts +16 -16
  340. package/dist/lib/Email/PhotoShootEmail.js +24 -24
  341. package/dist/lib/Email/PickUpConfirmation.d.ts +16 -16
  342. package/dist/lib/Email/PickUpConfirmation.js +24 -24
  343. package/dist/lib/Email/ShippingConfirmation.d.ts +16 -16
  344. package/dist/lib/Email/ShippingConfirmation.js +24 -24
  345. package/dist/lib/Email/WelcomeEmail.d.ts +16 -16
  346. package/dist/lib/Email/WelcomeEmail.js +24 -24
  347. package/dist/lib/Email/index.d.ts +16 -16
  348. package/dist/lib/Email/index.js +31 -31
  349. package/dist/lib/ExternalService/Ebay.d.ts +74 -74
  350. package/dist/lib/ExternalService/Ebay.js +124 -124
  351. package/dist/lib/ExternalService/index.d.ts +5 -5
  352. package/dist/lib/ExternalService/index.js +10 -10
  353. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  354. package/dist/lib/FirstOrderTracking/index.js +10 -10
  355. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  356. package/dist/lib/Indexed/IndexedCart.js +91 -91
  357. package/dist/lib/Indexed/Product.d.ts +17 -17
  358. package/dist/lib/Indexed/Product.js +98 -98
  359. package/dist/lib/Inventory/index.d.ts +112 -112
  360. package/dist/lib/Inventory/index.js +492 -492
  361. package/dist/lib/Invoice/index.d.ts +16 -16
  362. package/dist/lib/Invoice/index.js +21 -21
  363. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  364. package/dist/lib/MarketplacePublication/index.js +426 -426
  365. package/dist/lib/Menu/index.d.ts +11 -11
  366. package/dist/lib/Menu/index.js +107 -107
  367. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  368. package/dist/lib/MongoDB/BaseAPI.js +200 -200
  369. package/dist/lib/Note/index.d.ts +4 -4
  370. package/dist/lib/Note/index.js +6 -6
  371. package/dist/lib/Order/index.d.ts +27 -27
  372. package/dist/lib/Order/index.js +56 -56
  373. package/dist/lib/Org/index.d.ts +68 -68
  374. package/dist/lib/Org/index.js +216 -216
  375. package/dist/lib/PandaPay/index.d.ts +16 -16
  376. package/dist/lib/PandaPay/index.js +176 -176
  377. package/dist/lib/Paysafe/index.d.ts +11 -11
  378. package/dist/lib/Paysafe/index.js +41 -41
  379. package/dist/lib/Product/index.d.ts +182 -182
  380. package/dist/lib/Product/index.js +847 -847
  381. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  382. package/dist/lib/ProductAttribute/index.js +45 -45
  383. package/dist/lib/PromiseToPurchase/index.d.ts +109 -109
  384. package/dist/lib/PromiseToPurchase/index.js +343 -343
  385. package/dist/lib/PurchaseOrder/index.d.ts +20 -20
  386. package/dist/lib/PurchaseOrder/index.js +28 -28
  387. package/dist/lib/Queue/index.d.ts +40 -40
  388. package/dist/lib/Queue/index.js +254 -254
  389. package/dist/lib/Schedule/index.d.ts +5 -5
  390. package/dist/lib/Schedule/index.js +12 -12
  391. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  392. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  393. package/dist/lib/Service/index.d.ts +13 -13
  394. package/dist/lib/Service/index.js +21 -21
  395. package/dist/lib/Shipment/index.d.ts +28 -28
  396. package/dist/lib/Shipment/index.js +370 -370
  397. package/dist/lib/Slider/index.d.ts +22 -22
  398. package/dist/lib/Slider/index.js +119 -119
  399. package/dist/lib/Space/index.d.ts +1150 -1150
  400. package/dist/lib/Space/index.js +5792 -5792
  401. package/dist/lib/StockNotification/index.d.ts +4 -4
  402. package/dist/lib/StockNotification/index.js +6 -6
  403. package/dist/lib/Store/index.d.ts +5 -5
  404. package/dist/lib/Store/index.js +12 -12
  405. package/dist/lib/Supplier/Command.d.ts +5 -5
  406. package/dist/lib/Supplier/Command.js +10 -10
  407. package/dist/lib/Supplier/index.d.ts +25 -25
  408. package/dist/lib/Supplier/index.js +27 -27
  409. package/dist/lib/Tags/index.d.ts +6 -6
  410. package/dist/lib/Tags/index.js +26 -26
  411. package/dist/lib/Tax/index.d.ts +8 -8
  412. package/dist/lib/Tax/index.js +54 -54
  413. package/dist/lib/TransferRequest/index.d.ts +290 -290
  414. package/dist/lib/TransferRequest/index.js +1026 -1026
  415. package/dist/lib/Update/index.d.ts +10 -10
  416. package/dist/lib/Update/index.js +22 -22
  417. package/dist/lib/User/index.d.ts +89 -89
  418. package/dist/lib/User/index.js +328 -328
  419. package/dist/lib/Wishlist/index.d.ts +5 -5
  420. package/dist/lib/Wishlist/index.js +10 -10
  421. package/dist/lib/base.d.ts +14 -14
  422. package/dist/lib/base.js +62 -62
  423. package/dist/lib/baseService.d.ts +17 -17
  424. package/dist/lib/baseService.js +69 -69
  425. package/dist/rules/GR/constants/data.d.ts +26 -26
  426. package/dist/rules/GR/constants/data.js +81 -81
  427. package/dist/rules/GR/constants/expedition.d.ts +4 -4
  428. package/dist/rules/GR/constants/expedition.js +9 -9
  429. package/dist/rules/GR/constants/products.d.ts +22 -22
  430. package/dist/rules/GR/constants/products.js +263 -263
  431. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  432. package/dist/rules/GR/interfaces/cart.js +41 -41
  433. package/dist/rules/GR/interfaces/data.d.ts +101 -101
  434. package/dist/rules/GR/interfaces/data.js +114 -114
  435. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  436. package/dist/rules/GR/interfaces/products.js +10 -10
  437. package/dist/rules/GR/utils/cart.d.ts +95 -95
  438. package/dist/rules/GR/utils/cart.js +839 -836
  439. package/dist/rules/GR/utils/cart.js.map +1 -1
  440. package/dist/rules/GR/utils/data.d.ts +3 -3
  441. package/dist/rules/GR/utils/data.js +28 -28
  442. package/dist/rules/GR/utils/expedition.d.ts +140 -140
  443. package/dist/rules/GR/utils/expedition.js +2016 -2016
  444. package/dist/rules/GR/utils/g2.d.ts +209 -209
  445. package/dist/rules/GR/utils/g2.js +999 -999
  446. package/dist/rules/GR/utils/invoices.d.ts +51 -51
  447. package/dist/rules/GR/utils/invoices.js +215 -215
  448. package/dist/rules/GR/utils/products.d.ts +277 -277
  449. package/dist/rules/GR/utils/products.js +1350 -1350
  450. package/dist/rules/GR/utils/upsells.d.ts +111 -111
  451. package/dist/rules/GR/utils/upsells.js +215 -215
  452. package/dist/services/database/BaseProvider.d.ts +29 -29
  453. package/dist/services/database/BaseProvider.js +28 -28
  454. package/dist/services/database/BatchUtils.d.ts +14 -14
  455. package/dist/services/database/BatchUtils.js +43 -43
  456. package/dist/services/database/Config.d.ts +2 -2
  457. package/dist/services/database/Config.js +5 -5
  458. package/dist/services/database/DatabaseService.d.ts +125 -125
  459. package/dist/services/database/DatabaseService.js +237 -237
  460. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  461. package/dist/services/database/FirebaseProvider.js +235 -235
  462. package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
  463. package/dist/services/database/NotFirebaseProvider.js +262 -262
  464. package/dist/services/g2/G2OrderSlip.d.ts +49 -49
  465. package/dist/services/g2/G2OrderSlip.js +228 -228
  466. package/dist/services/g2/utils.d.ts +19 -19
  467. package/dist/services/g2/utils.js +953 -953
  468. package/dist/services/logs/index.d.ts +23 -23
  469. package/dist/services/logs/index.js +66 -66
  470. package/dist/services/marketplace/BaseMarketServiceClass.d.ts +52 -52
  471. package/dist/services/marketplace/BaseMarketServiceClass.js +111 -111
  472. package/dist/services/marketplace/CardtraderServiceClass.d.ts +17 -17
  473. package/dist/services/marketplace/CardtraderServiceClass.js +139 -139
  474. package/dist/services/marketplace/utils.d.ts +14 -14
  475. package/dist/services/marketplace/utils.js +29 -29
  476. package/dist/services/products/BaseClass.d.ts +50 -50
  477. package/dist/services/products/BaseClass.js +66 -66
  478. package/dist/services/products/TCGService.d.ts +32 -32
  479. package/dist/services/products/TCGService.js +555 -555
  480. package/dist/services/products/utils.d.ts +31 -31
  481. package/dist/services/products/utils.js +144 -144
  482. package/dist/utils/algolia.d.ts +46 -46
  483. package/dist/utils/algolia.js +21 -21
  484. package/dist/utils/anonymisation.d.ts +54 -54
  485. package/dist/utils/anonymisation.js +280 -280
  486. package/dist/utils/array.d.ts +5 -5
  487. package/dist/utils/array.js +14 -14
  488. package/dist/utils/aws.d.ts +36 -36
  489. package/dist/utils/aws.js +154 -154
  490. package/dist/utils/booking.d.ts +30 -30
  491. package/dist/utils/booking.js +127 -127
  492. package/dist/utils/cart.d.ts +259 -259
  493. package/dist/utils/cart.js +1145 -1145
  494. package/dist/utils/categories.d.ts +2 -2
  495. package/dist/utils/categories.js +54 -54
  496. package/dist/utils/cmv.d.ts +10 -10
  497. package/dist/utils/cmv.js +107 -107
  498. package/dist/utils/console.d.ts +6 -6
  499. package/dist/utils/console.js +59 -59
  500. package/dist/utils/context.d.ts +20 -20
  501. package/dist/utils/context.js +61 -61
  502. package/dist/utils/currency.d.ts +6 -6
  503. package/dist/utils/currency.js +91 -91
  504. package/dist/utils/data.d.ts +31 -31
  505. package/dist/utils/data.js +296 -296
  506. package/dist/utils/date.d.ts +1 -1
  507. package/dist/utils/date.js +16 -16
  508. package/dist/utils/dimensions.d.ts +3 -3
  509. package/dist/utils/dimensions.js +16 -16
  510. package/dist/utils/discount.d.ts +164 -164
  511. package/dist/utils/discount.js +1111 -1111
  512. package/dist/utils/errors.d.ts +113 -113
  513. package/dist/utils/errors.js +113 -113
  514. package/dist/utils/file-admin.d.ts +8 -8
  515. package/dist/utils/file-admin.js +39 -39
  516. package/dist/utils/file.d.ts +39 -39
  517. package/dist/utils/file.js +208 -208
  518. package/dist/utils/firebase-admin.d.ts +11 -11
  519. package/dist/utils/firebase-admin.js +73 -73
  520. package/dist/utils/firebase.d.ts +58 -58
  521. package/dist/utils/firebase.js +148 -148
  522. package/dist/utils/import.d.ts +1 -1
  523. package/dist/utils/import.js +21 -21
  524. package/dist/utils/inventories.d.ts +101 -101
  525. package/dist/utils/inventories.js +467 -467
  526. package/dist/utils/locale.d.ts +24 -24
  527. package/dist/utils/locale.js +89 -89
  528. package/dist/utils/mailchimp.d.ts +58 -58
  529. package/dist/utils/mailchimp.js +531 -531
  530. package/dist/utils/mathUtils.d.ts +17 -17
  531. package/dist/utils/mathUtils.js +324 -324
  532. package/dist/utils/mongodb.d.ts +1 -1
  533. package/dist/utils/mongodb.js +22 -22
  534. package/dist/utils/object.d.ts +32 -32
  535. package/dist/utils/object.js +133 -133
  536. package/dist/utils/payment.d.ts +10 -10
  537. package/dist/utils/payment.js +23 -23
  538. package/dist/utils/products.d.ts +39 -39
  539. package/dist/utils/products.js +195 -195
  540. package/dist/utils/promiseToPurchase.d.ts +88 -88
  541. package/dist/utils/promiseToPurchase.js +229 -229
  542. package/dist/utils/prosprsearch.d.ts +42 -42
  543. package/dist/utils/prosprsearch.js +216 -216
  544. package/dist/utils/refunds.d.ts +2 -2
  545. package/dist/utils/refunds.js +21 -21
  546. package/dist/utils/sdc.d.ts +10 -10
  547. package/dist/utils/sdc.js +1309 -1309
  548. package/dist/utils/searchIndexes.d.ts +58 -58
  549. package/dist/utils/searchIndexes.js +247 -247
  550. package/dist/utils/services.d.ts +42 -42
  551. package/dist/utils/services.js +409 -409
  552. package/dist/utils/shipment.d.ts +110 -110
  553. package/dist/utils/shipment.js +345 -345
  554. package/dist/utils/simpletexting.d.ts +2 -2
  555. package/dist/utils/simpletexting.js +45 -45
  556. package/dist/utils/sliders.d.ts +4 -4
  557. package/dist/utils/sliders.js +24 -24
  558. package/dist/utils/string.d.ts +16 -16
  559. package/dist/utils/string.js +192 -192
  560. package/dist/utils/tcgService.d.ts +74 -74
  561. package/dist/utils/tcgService.js +308 -308
  562. package/dist/utils/tools.d.ts +5 -5
  563. package/dist/utils/tools.js +13 -13
  564. package/dist/utils/transferRequests.d.ts +43 -43
  565. package/dist/utils/transferRequests.js +67 -67
  566. package/dist/utils/update.d.ts +7 -7
  567. package/dist/utils/update.js +137 -137
  568. package/dist/utils/weight.d.ts +3 -3
  569. package/dist/utils/weight.js +16 -16
  570. package/dist/utils/zones.d.ts +11 -11
  571. package/dist/utils/zones.js +218 -218
  572. package/package.json +107 -107
  573. package/publish.sh +143 -143
  574. 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