addio-admin-sdk 1.7.89 → 1.7.90

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 (558) hide show
  1. package/.babelrc +17 -17
  2. package/.env.dev +14 -14
  3. package/.github/workflows/publish_coverage.yam_ +69 -69
  4. package/addio-sdk-doc.md +1473 -1473
  5. package/changelog.md +537 -537
  6. package/dist/Interfaces/Address/index.d.ts +21 -21
  7. package/dist/Interfaces/Address/index.js +16 -16
  8. package/dist/Interfaces/Algolia/index.d.ts +164 -164
  9. package/dist/Interfaces/Algolia/index.js +2 -2
  10. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  11. package/dist/Interfaces/Attachement/index.js +2 -2
  12. package/dist/Interfaces/Attribute/index.d.ts +52 -52
  13. package/dist/Interfaces/Attribute/index.js +10 -10
  14. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  15. package/dist/Interfaces/BGJob/index.js +25 -25
  16. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  17. package/dist/Interfaces/BaseClass/index.js +2 -2
  18. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  19. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  20. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  21. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  22. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  23. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  24. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  25. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  26. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  27. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  28. package/dist/Interfaces/Booking/index.d.ts +74 -74
  29. package/dist/Interfaces/Booking/index.js +17 -17
  30. package/dist/Interfaces/Brand/index.d.ts +15 -15
  31. package/dist/Interfaces/Brand/index.js +2 -2
  32. package/dist/Interfaces/CMS/index.d.ts +25 -25
  33. package/dist/Interfaces/CMS/index.js +2 -2
  34. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  35. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  36. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  37. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  38. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  39. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  40. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  41. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  42. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  43. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  44. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  45. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  46. package/dist/Interfaces/Cart/index.d.ts +425 -425
  47. package/dist/Interfaces/Cart/index.js +192 -192
  48. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  49. package/dist/Interfaces/Catalogue/index.js +37 -37
  50. package/dist/Interfaces/Category/index.d.ts +33 -33
  51. package/dist/Interfaces/Category/index.js +2 -2
  52. package/dist/Interfaces/Chart/index.d.ts +11 -11
  53. package/dist/Interfaces/Chart/index.js +2 -2
  54. package/dist/Interfaces/Class/index.d.ts +8 -8
  55. package/dist/Interfaces/Class/index.js +2 -2
  56. package/dist/Interfaces/Consent/index.d.ts +6 -6
  57. package/dist/Interfaces/Consent/index.js +2 -2
  58. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  59. package/dist/Interfaces/Context/IContextProps.js +2 -2
  60. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  61. package/dist/Interfaces/Context/IContextState.js +2 -2
  62. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  63. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  64. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  65. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  66. package/dist/Interfaces/Customer/IStoreCredit.d.ts +12 -12
  67. package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
  68. package/dist/Interfaces/Customer/index.d.ts +97 -97
  69. package/dist/Interfaces/Customer/index.js +141 -141
  70. package/dist/Interfaces/Declination/index.d.ts +114 -114
  71. package/dist/Interfaces/Declination/index.js +60 -60
  72. package/dist/Interfaces/Document/index.d.ts +8 -8
  73. package/dist/Interfaces/Document/index.js +2 -2
  74. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  75. package/dist/Interfaces/Elastic/index.js +2 -2
  76. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  77. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  78. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  79. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  80. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  81. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  82. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  83. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  84. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  85. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  86. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  87. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  88. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  89. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  90. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  91. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  92. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  93. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  94. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  95. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  96. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  97. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  98. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  99. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  100. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  101. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  102. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  103. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  104. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  105. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  106. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  107. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  108. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  109. package/dist/Interfaces/Email/IEmail.js +56 -56
  110. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  111. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  112. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  113. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  114. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  115. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  116. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  117. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  118. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  119. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  120. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  121. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  122. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  123. package/dist/Interfaces/ExportSchema/index.js +2 -2
  124. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  125. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  126. package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
  127. package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
  128. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  129. package/dist/Interfaces/ExternalService/index.js +2 -2
  130. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  131. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  132. package/dist/Interfaces/G2/index.d.ts +556 -556
  133. package/dist/Interfaces/G2/index.js +36 -36
  134. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  135. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  136. package/dist/Interfaces/Indexed/Product/index.d.ts +97 -97
  137. package/dist/Interfaces/Indexed/Product/index.js +212 -212
  138. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  139. package/dist/Interfaces/Inventory/index.js +8 -8
  140. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  141. package/dist/Interfaces/Invoice/index.js +2 -2
  142. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  143. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  144. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  145. package/dist/Interfaces/MarketplacePublication/index.js +22 -22
  146. package/dist/Interfaces/Menu/index.d.ts +23 -23
  147. package/dist/Interfaces/Menu/index.js +10 -10
  148. package/dist/Interfaces/Note/index.d.ts +10 -10
  149. package/dist/Interfaces/Note/index.js +7 -7
  150. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  151. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  152. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  153. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  154. package/dist/Interfaces/Order/index.d.ts +4 -4
  155. package/dist/Interfaces/Order/index.js +2 -2
  156. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  157. package/dist/Interfaces/Org/IRelUser.js +2 -2
  158. package/dist/Interfaces/Org/index.d.ts +29 -29
  159. package/dist/Interfaces/Org/index.js +12 -12
  160. package/dist/Interfaces/Payment/index.d.ts +13 -13
  161. package/dist/Interfaces/Payment/index.js +2 -2
  162. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  163. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  164. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  165. package/dist/Interfaces/Product/IImportProduct.js +791 -791
  166. package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
  167. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  168. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  169. package/dist/Interfaces/Product/IPricing.js +174 -174
  170. package/dist/Interfaces/Product/index.d.ts +127 -127
  171. package/dist/Interfaces/Product/index.js +56 -56
  172. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  173. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  174. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  175. package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
  176. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  177. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  178. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  179. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  180. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  181. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  182. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  183. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  184. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  185. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  186. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  187. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  188. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  189. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  190. package/dist/Interfaces/Quote/index.d.ts +5 -5
  191. package/dist/Interfaces/Quote/index.js +2 -2
  192. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  193. package/dist/Interfaces/Refunds/index.js +2 -2
  194. package/dist/Interfaces/Rules/IDiscountRule.d.ts +137 -137
  195. package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
  196. package/dist/Interfaces/Schedule/index.d.ts +48 -48
  197. package/dist/Interfaces/Schedule/index.js +2 -2
  198. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  199. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  200. package/dist/Interfaces/Services/IService.d.ts +12 -12
  201. package/dist/Interfaces/Services/IService.js +2 -2
  202. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  203. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  204. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  205. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  206. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  207. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  208. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  209. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  210. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  211. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  212. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  213. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  214. package/dist/Interfaces/Slider/GR.d.ts +114 -114
  215. package/dist/Interfaces/Slider/GR.js +271 -271
  216. package/dist/Interfaces/Slider/index.d.ts +30 -30
  217. package/dist/Interfaces/Slider/index.js +2 -2
  218. package/dist/Interfaces/Space/IExternalService.d.ts +52 -52
  219. package/dist/Interfaces/Space/IExternalService.js +43 -43
  220. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  221. package/dist/Interfaces/Space/IMember.js +9 -9
  222. package/dist/Interfaces/Space/index.d.ts +390 -390
  223. package/dist/Interfaces/Space/index.js +160 -160
  224. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  225. package/dist/Interfaces/Specials/gr.js +2 -2
  226. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  227. package/dist/Interfaces/StockNotification/index.js +2 -2
  228. package/dist/Interfaces/Store/index.d.ts +62 -62
  229. package/dist/Interfaces/Store/index.js +27 -27
  230. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  231. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  232. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  233. package/dist/Interfaces/Supplier/index.js +24 -24
  234. package/dist/Interfaces/TCG/index.d.ts +110 -110
  235. package/dist/Interfaces/TCG/index.js +27 -27
  236. package/dist/Interfaces/Tag/index.d.ts +18 -18
  237. package/dist/Interfaces/Tag/index.js +2 -2
  238. package/dist/Interfaces/Tax/index.d.ts +13 -13
  239. package/dist/Interfaces/Tax/index.js +2 -2
  240. package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
  241. package/dist/Interfaces/TransferRequest/index.js +43 -43
  242. package/dist/Interfaces/Translation/index.d.ts +8 -8
  243. package/dist/Interfaces/Translation/index.js +5 -5
  244. package/dist/Interfaces/Update/index.d.ts +10 -10
  245. package/dist/Interfaces/Update/index.js +2 -2
  246. package/dist/Interfaces/User/IUser.d.ts +65 -65
  247. package/dist/Interfaces/User/IUser.js +8 -8
  248. package/dist/Interfaces/Version/index.d.ts +11 -11
  249. package/dist/Interfaces/Version/index.js +2 -2
  250. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  251. package/dist/Interfaces/Wishlist/index.js +2 -2
  252. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  253. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  254. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  255. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  256. package/dist/constants/enums.d.ts +6 -6
  257. package/dist/constants/enums.js +10 -10
  258. package/dist/constants/services.d.ts +2 -2
  259. package/dist/constants/services.js +111 -111
  260. package/dist/constants/version.d.ts +2 -2
  261. package/dist/constants/version.js +5 -5
  262. package/dist/index.d.ts +32 -32
  263. package/dist/index.js +242 -242
  264. package/dist/lib/Attribute/index.d.ts +14 -14
  265. package/dist/lib/Attribute/index.js +143 -143
  266. package/dist/lib/BGJob/index.d.ts +9 -9
  267. package/dist/lib/BGJob/index.js +212 -212
  268. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  269. package/dist/lib/BackgroundWorker/index.js +59 -59
  270. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  271. package/dist/lib/Blog/BlogArticle.js +10 -10
  272. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  273. package/dist/lib/Blog/BlogAuthor.js +10 -10
  274. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  275. package/dist/lib/Blog/BlogCategory.js +10 -10
  276. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  277. package/dist/lib/Blog/BlogKeyword.js +10 -10
  278. package/dist/lib/Booking/index.d.ts +70 -70
  279. package/dist/lib/Booking/index.js +576 -576
  280. package/dist/lib/Brand/index.d.ts +17 -17
  281. package/dist/lib/Brand/index.js +113 -113
  282. package/dist/lib/Cart/index.d.ts +206 -206
  283. package/dist/lib/Cart/index.js +3165 -3164
  284. package/dist/lib/Cart/index.js.map +1 -1
  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/Schedule/index.d.ts +5 -5
  378. package/dist/lib/Schedule/index.js +12 -12
  379. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  380. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  381. package/dist/lib/Service/index.d.ts +5 -5
  382. package/dist/lib/Service/index.js +13 -13
  383. package/dist/lib/Shipment/index.d.ts +28 -28
  384. package/dist/lib/Shipment/index.js +357 -357
  385. package/dist/lib/Slider/index.d.ts +16 -16
  386. package/dist/lib/Slider/index.js +113 -113
  387. package/dist/lib/Space/index.d.ts +883 -883
  388. package/dist/lib/Space/index.js +5134 -5134
  389. package/dist/lib/StockNotification/index.d.ts +4 -4
  390. package/dist/lib/StockNotification/index.js +6 -6
  391. package/dist/lib/Store/index.d.ts +5 -5
  392. package/dist/lib/Store/index.js +12 -12
  393. package/dist/lib/Supplier/Command.d.ts +5 -5
  394. package/dist/lib/Supplier/Command.js +10 -10
  395. package/dist/lib/Supplier/index.d.ts +25 -25
  396. package/dist/lib/Supplier/index.js +22 -22
  397. package/dist/lib/Tags/index.d.ts +6 -6
  398. package/dist/lib/Tags/index.js +21 -21
  399. package/dist/lib/Tax/index.d.ts +8 -8
  400. package/dist/lib/Tax/index.js +54 -54
  401. package/dist/lib/TransferRequest/index.d.ts +112 -112
  402. package/dist/lib/TransferRequest/index.js +794 -794
  403. package/dist/lib/Update/index.d.ts +10 -10
  404. package/dist/lib/Update/index.js +22 -22
  405. package/dist/lib/User/index.d.ts +35 -35
  406. package/dist/lib/User/index.js +248 -248
  407. package/dist/lib/Wishlist/index.d.ts +5 -5
  408. package/dist/lib/Wishlist/index.js +10 -10
  409. package/dist/lib/base.d.ts +14 -14
  410. package/dist/lib/base.js +62 -62
  411. package/dist/lib/baseService.d.ts +17 -17
  412. package/dist/lib/baseService.js +43 -43
  413. package/dist/rules/GR/constants/data.d.ts +26 -26
  414. package/dist/rules/GR/constants/data.js +55 -55
  415. package/dist/rules/GR/constants/products.d.ts +8 -8
  416. package/dist/rules/GR/constants/products.js +234 -234
  417. package/dist/rules/GR/interfaces/cart.d.ts +84 -84
  418. package/dist/rules/GR/interfaces/cart.js +41 -41
  419. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  420. package/dist/rules/GR/interfaces/data.js +104 -104
  421. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  422. package/dist/rules/GR/interfaces/products.js +10 -10
  423. package/dist/rules/GR/utils/cart.d.ts +53 -53
  424. package/dist/rules/GR/utils/cart.js +637 -637
  425. package/dist/rules/GR/utils/data.d.ts +3 -3
  426. package/dist/rules/GR/utils/data.js +25 -25
  427. package/dist/rules/GR/utils/expedition.d.ts +71 -71
  428. package/dist/rules/GR/utils/expedition.js +1542 -1542
  429. package/dist/rules/GR/utils/g2.d.ts +176 -176
  430. package/dist/rules/GR/utils/g2.js +849 -849
  431. package/dist/rules/GR/utils/invoices.d.ts +24 -24
  432. package/dist/rules/GR/utils/invoices.js +174 -174
  433. package/dist/rules/GR/utils/products.d.ts +104 -104
  434. package/dist/rules/GR/utils/products.js +984 -984
  435. package/dist/rules/GR/utils/upsells.d.ts +79 -79
  436. package/dist/rules/GR/utils/upsells.js +183 -183
  437. package/dist/services/database/BaseProvider.d.ts +29 -29
  438. package/dist/services/database/BaseProvider.js +28 -28
  439. package/dist/services/database/BatchUtils.d.ts +14 -14
  440. package/dist/services/database/BatchUtils.js +43 -43
  441. package/dist/services/database/Config.d.ts +2 -2
  442. package/dist/services/database/Config.js +5 -5
  443. package/dist/services/database/DatabaseService.d.ts +41 -41
  444. package/dist/services/database/DatabaseService.js +152 -152
  445. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  446. package/dist/services/database/FirebaseProvider.js +218 -218
  447. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  448. package/dist/services/database/NotFirebaseProvider.js +243 -243
  449. package/dist/services/g2/G2OrderSlip.d.ts +42 -42
  450. package/dist/services/g2/G2OrderSlip.js +210 -210
  451. package/dist/services/g2/utils.d.ts +9 -9
  452. package/dist/services/g2/utils.js +703 -703
  453. package/dist/services/logs/index.d.ts +20 -20
  454. package/dist/services/logs/index.js +61 -61
  455. package/dist/services/products/BaseClass.d.ts +50 -50
  456. package/dist/services/products/BaseClass.js +64 -64
  457. package/dist/services/products/TCGService.d.ts +29 -29
  458. package/dist/services/products/TCGService.js +499 -499
  459. package/dist/services/products/utils.d.ts +9 -9
  460. package/dist/services/products/utils.js +94 -94
  461. package/dist/utils/algolia.d.ts +6 -6
  462. package/dist/utils/algolia.js +21 -21
  463. package/dist/utils/anonymisation.d.ts +30 -30
  464. package/dist/utils/anonymisation.js +250 -250
  465. package/dist/utils/array.d.ts +5 -5
  466. package/dist/utils/array.js +14 -14
  467. package/dist/utils/aws.d.ts +14 -14
  468. package/dist/utils/aws.js +126 -126
  469. package/dist/utils/booking.d.ts +22 -22
  470. package/dist/utils/booking.js +118 -118
  471. package/dist/utils/cart.d.ts +134 -134
  472. package/dist/utils/cart.js +862 -862
  473. package/dist/utils/categories.d.ts +2 -2
  474. package/dist/utils/categories.js +54 -54
  475. package/dist/utils/cmv.d.ts +10 -10
  476. package/dist/utils/cmv.js +107 -107
  477. package/dist/utils/console.d.ts +6 -6
  478. package/dist/utils/console.js +59 -59
  479. package/dist/utils/context.d.ts +20 -20
  480. package/dist/utils/context.js +61 -61
  481. package/dist/utils/currency.d.ts +6 -6
  482. package/dist/utils/currency.js +61 -61
  483. package/dist/utils/data.d.ts +31 -31
  484. package/dist/utils/data.js +294 -294
  485. package/dist/utils/date.d.ts +1 -1
  486. package/dist/utils/date.js +16 -16
  487. package/dist/utils/dimensions.d.ts +3 -3
  488. package/dist/utils/dimensions.js +16 -16
  489. package/dist/utils/discount.d.ts +46 -46
  490. package/dist/utils/discount.js +934 -934
  491. package/dist/utils/errors.d.ts +113 -113
  492. package/dist/utils/errors.js +113 -113
  493. package/dist/utils/file-admin.d.ts +8 -8
  494. package/dist/utils/file-admin.js +38 -38
  495. package/dist/utils/file.d.ts +38 -38
  496. package/dist/utils/file.js +200 -200
  497. package/dist/utils/firebase-admin.d.ts +2 -2
  498. package/dist/utils/firebase-admin.js +61 -61
  499. package/dist/utils/firebase.d.ts +41 -41
  500. package/dist/utils/firebase.js +131 -131
  501. package/dist/utils/import.d.ts +1 -1
  502. package/dist/utils/import.js +21 -21
  503. package/dist/utils/inventories.d.ts +49 -49
  504. package/dist/utils/inventories.js +392 -392
  505. package/dist/utils/locale.d.ts +15 -15
  506. package/dist/utils/locale.js +78 -78
  507. package/dist/utils/locale.js.map +1 -1
  508. package/dist/utils/mailchimp.d.ts +58 -58
  509. package/dist/utils/mailchimp.js +495 -495
  510. package/dist/utils/mathUtils.d.ts +17 -17
  511. package/dist/utils/mathUtils.js +315 -315
  512. package/dist/utils/mongodb.d.ts +1 -1
  513. package/dist/utils/mongodb.js +22 -22
  514. package/dist/utils/object.d.ts +13 -13
  515. package/dist/utils/object.js +115 -115
  516. package/dist/utils/payment.d.ts +10 -10
  517. package/dist/utils/payment.js +23 -23
  518. package/dist/utils/products.d.ts +32 -32
  519. package/dist/utils/products.js +186 -186
  520. package/dist/utils/promiseToPurchase.d.ts +56 -56
  521. package/dist/utils/promiseToPurchase.js +195 -195
  522. package/dist/utils/prosprsearch.d.ts +26 -26
  523. package/dist/utils/prosprsearch.js +182 -182
  524. package/dist/utils/refunds.d.ts +2 -2
  525. package/dist/utils/refunds.js +21 -21
  526. package/dist/utils/sdc.d.ts +10 -10
  527. package/dist/utils/sdc.js +1302 -1302
  528. package/dist/utils/searchIndexes.d.ts +21 -21
  529. package/dist/utils/searchIndexes.js +210 -210
  530. package/dist/utils/services.d.ts +42 -42
  531. package/dist/utils/services.js +409 -409
  532. package/dist/utils/shipment.d.ts +110 -110
  533. package/dist/utils/shipment.js +345 -345
  534. package/dist/utils/simpletexting.d.ts +2 -2
  535. package/dist/utils/simpletexting.js +45 -45
  536. package/dist/utils/sliders.d.ts +4 -4
  537. package/dist/utils/sliders.js +24 -24
  538. package/dist/utils/string.d.ts +16 -16
  539. package/dist/utils/string.js +191 -191
  540. package/dist/utils/tcgService.d.ts +2 -2
  541. package/dist/utils/tcgService.js +8 -8
  542. package/dist/utils/tools.d.ts +1 -1
  543. package/dist/utils/tools.js +9 -9
  544. package/dist/utils/transferRequests.d.ts +19 -19
  545. package/dist/utils/transferRequests.js +43 -43
  546. package/dist/utils/update.d.ts +7 -7
  547. package/dist/utils/update.js +125 -125
  548. package/dist/utils/weight.d.ts +3 -3
  549. package/dist/utils/weight.js +16 -16
  550. package/dist/utils/zones.d.ts +11 -11
  551. package/dist/utils/zones.js +218 -218
  552. package/package.json +110 -110
  553. package/publish.sh +143 -143
  554. package/readme.md +182 -182
  555. package/.env +0 -15
  556. package/dist/lib/Queue/index.d.ts +0 -40
  557. package/dist/lib/Queue/index.js +0 -255
  558. package/dist/lib/Queue/index.js.map +0 -1
@@ -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