addio-admin-sdk 1.7.90 → 1.7.95

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 (554) hide show
  1. package/.babelrc +17 -17
  2. package/.env +14 -0
  3. package/.env.dev +14 -14
  4. package/.github/workflows/publish_coverage.yam_ +69 -69
  5. package/addio-sdk-doc.md +1473 -1473
  6. package/changelog.md +537 -537
  7. package/dist/Interfaces/Address/index.d.ts +21 -21
  8. package/dist/Interfaces/Address/index.js +16 -16
  9. package/dist/Interfaces/Algolia/index.d.ts +164 -164
  10. package/dist/Interfaces/Algolia/index.js +2 -2
  11. package/dist/Interfaces/Attachement/index.d.ts +5 -5
  12. package/dist/Interfaces/Attachement/index.js +2 -2
  13. package/dist/Interfaces/Attribute/index.d.ts +52 -52
  14. package/dist/Interfaces/Attribute/index.js +10 -10
  15. package/dist/Interfaces/BGJob/index.d.ts +56 -56
  16. package/dist/Interfaces/BGJob/index.js +25 -25
  17. package/dist/Interfaces/BaseClass/index.d.ts +8 -8
  18. package/dist/Interfaces/BaseClass/index.js +2 -2
  19. package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
  20. package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
  21. package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
  22. package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
  23. package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
  24. package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
  25. package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
  26. package/dist/Interfaces/Blog/IBlogComment.js +2 -2
  27. package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
  28. package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
  29. package/dist/Interfaces/Booking/index.d.ts +74 -74
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +15 -15
  32. package/dist/Interfaces/Brand/index.js +2 -2
  33. package/dist/Interfaces/CMS/index.d.ts +25 -25
  34. package/dist/Interfaces/CMS/index.js +2 -2
  35. package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
  36. package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
  37. package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
  38. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  39. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  40. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  41. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  42. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  43. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  44. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  45. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  46. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  47. package/dist/Interfaces/Cart/index.d.ts +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/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 +869 -862
  473. package/dist/utils/cart.js.map +1 -1
  474. package/dist/utils/categories.d.ts +2 -2
  475. package/dist/utils/categories.js +54 -54
  476. package/dist/utils/cmv.d.ts +10 -10
  477. package/dist/utils/cmv.js +107 -107
  478. package/dist/utils/console.d.ts +6 -6
  479. package/dist/utils/console.js +59 -59
  480. package/dist/utils/context.d.ts +20 -20
  481. package/dist/utils/context.js +61 -61
  482. package/dist/utils/currency.d.ts +6 -6
  483. package/dist/utils/currency.js +61 -61
  484. package/dist/utils/data.d.ts +31 -31
  485. package/dist/utils/data.js +294 -294
  486. package/dist/utils/date.d.ts +1 -1
  487. package/dist/utils/date.js +16 -16
  488. package/dist/utils/dimensions.d.ts +3 -3
  489. package/dist/utils/dimensions.js +16 -16
  490. package/dist/utils/discount.d.ts +46 -46
  491. package/dist/utils/discount.js +934 -934
  492. package/dist/utils/errors.d.ts +113 -113
  493. package/dist/utils/errors.js +113 -113
  494. package/dist/utils/file-admin.d.ts +8 -8
  495. package/dist/utils/file-admin.js +38 -38
  496. package/dist/utils/file.d.ts +38 -38
  497. package/dist/utils/file.js +200 -200
  498. package/dist/utils/firebase-admin.d.ts +2 -2
  499. package/dist/utils/firebase-admin.js +61 -61
  500. package/dist/utils/firebase.d.ts +41 -41
  501. package/dist/utils/firebase.js +131 -131
  502. package/dist/utils/import.d.ts +1 -1
  503. package/dist/utils/import.js +21 -21
  504. package/dist/utils/inventories.d.ts +49 -49
  505. package/dist/utils/inventories.js +392 -392
  506. package/dist/utils/locale.d.ts +15 -15
  507. package/dist/utils/locale.js +78 -78
  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
@@ -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