addio-admin-sdk 1.7.90 → 1.7.96

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