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,577 +1,577 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const find_1 = __importDefault(require("lodash/find"));
18
- const round_1 = __importDefault(require("lodash/round"));
19
- const toNumber_1 = __importDefault(require("lodash/toNumber"));
20
- const Booking_1 = require("../../Interfaces/Booking");
21
- const Cart_1 = require("../../Interfaces/Cart");
22
- const Customer_1 = require("../../Interfaces/Customer");
23
- const IDiscountRule_1 = require("../../Interfaces/Rules/IDiscountRule");
24
- const booking_1 = require("../../utils/booking");
25
- const console_1 = require("../../utils/console");
26
- const data_1 = require("../../utils/data");
27
- const locale_1 = require("../../utils/locale");
28
- const Cart_2 = __importDefault(require("../Cart"));
29
- const Space_1 = __importDefault(require("../Space"));
30
- const data_2 = require("../../rules/GR/constants/data");
31
- const baseService_1 = require("../baseService");
32
- const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
33
- const expedition_1 = require("../../rules/GR/utils/expedition");
34
- const object_1 = require("../../utils/object");
35
- class Booking extends baseService_1.BaseServiceClass {
36
- constructor() {
37
- super(...arguments);
38
- this.assignToClient = async ({ clientId, clientRef, overrideExistingClient }, doNotSave) => {
39
- if (!!!clientRef && !!!clientId)
40
- throw new Error(`Can't access client. Please provide id or ref`);
41
- if (!!!overrideExistingClient && !!this._data.to_client)
42
- throw new Error(`Can't override existing client. If you want to, pass 'overrideExistingClient' props to true`);
43
- if (!!clientRef) {
44
- this._data = Object.assign(Object.assign({}, this._data), { to_client: clientRef });
45
- }
46
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/')
47
- throw new Error(`Can't access parent space collection`);
48
- if (!!clientId) {
49
- const clientToAssign = DatabaseService_1.default.addToPath(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'customers'), clientId);
50
- this._data = Object.assign(Object.assign({}, this._data), { to_client: clientToAssign });
51
- }
52
- return await this.save(undefined, undefined, !!doNotSave ? false : true);
53
- };
54
- this.assignToUser = async (userRef, save) => {
55
- try {
56
- this._data = Object.assign(Object.assign({}, this._data), { by_user: userRef });
57
- return await this.save(undefined, undefined, save);
58
- }
59
- catch (error) {
60
- (0, console_1.errorMessage)(`Error while assigning user to booking. ${error} - ${JSON.stringify(error)}`);
61
- }
62
- };
63
- this.addOrUpdateItem = async ({ item: { sku, name, price, regPrice, parentSlug, discount, client_discount, units, custom_id }, qty }) => {
64
- if (!!!sku && !!!custom_id)
65
- throw new Error(`Can't find product without SKU`);
66
- if (!!qty && qty <= 0)
67
- throw new Error(`Use 'removeItem'`);
68
- if (!!(0, find_1.default)(this._data.items, (item) => !!item.custom_id ? item.custom_id === custom_id : !!item.item_sku && item.item_sku === sku)) {
69
- this._data = Object.assign(Object.assign({}, this._data), { items: this._data.items.map((_item) => {
70
- if (!!_item.custom_id ? _item.custom_id !== custom_id : _item.item_sku !== sku)
71
- return _item;
72
- (0, console_1.workingMessage)(`Updating item ${!!_item.item_sku ? _item.item_sku : _item.custom_id} with price: ${price} and quantity: ${!!qty ? qty : _item.qty}`);
73
- return Object.assign(Object.assign(Object.assign(Object.assign({}, _item), { item_name: name, item_sku: sku, item_price: price, item_reg_price: regPrice, qty: !!qty ? qty : _item.qty, item_discount: discount, parent_slug: parentSlug }), (!!custom_id ? { custom_id } : {})), (typeof client_discount === 'number' ? { item_client_discount: client_discount } : {}));
74
- }) });
75
- }
76
- else {
77
- this._data = Object.assign(Object.assign({}, this._data), { items: [
78
- ...this._data.items,
79
- Object.assign(Object.assign(Object.assign({ item_name: name, item_price: price, item_sku: sku, qty, parent_slug: parentSlug, item_discount: discount }, (!!custom_id ? { custom_id } : {})), (typeof client_discount === 'number' ? { item_client_discount: client_discount } : {})), { units: units })
80
- ] });
81
- }
82
- this._data = Object.assign(Object.assign({}, this._data), { is_paillis: !!this._data.items.find((item) => data_2.PAILLIS_SKUS.includes(item.item_sku)), shipping_price: !!this._data.items.find((item) => data_2.PAILLIS_DROPSHIP_SKUS.includes(item.item_sku))
83
- ? data_2.bookingFees.shippingFee_paillisDropship
84
- : !!this._data.shipping_price
85
- ? this._data.shipping_price
86
- : !!this._data.is_pickup
87
- ? !!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON
88
- ? data_2.bookingFees.preparationFee_beton
89
- : data_2.bookingFees.preparationFee_accessoires
90
- : !!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON
91
- ? data_2.bookingFees.shippingFee_beton
92
- : data_2.bookingFees.shippingFee_accessoires });
93
- if (!!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON) {
94
- this.recalculatePalletFee();
95
- }
96
- return await this.save();
97
- };
98
- this.removeItem = async ({ item: { sku, custom_id } }) => {
99
- if (!!!sku && !!!custom_id)
100
- throw new Error(`Can't find product without SKU`);
101
- if (!!!this._data.items.length)
102
- return true;
103
- const index = this._data.items.findIndex((i) => !!i.custom_id && custom_id ? i.custom_id === custom_id : !!sku ? i.item_sku === sku : false);
104
- if (index === -1)
105
- return true;
106
- this._data = Object.assign(Object.assign({}, this._data), { items: [...this._data.items.slice(0, index), ...this._data.items.slice(index + 1)] });
107
- const isBeton = this._data.type === Booking_1.BookingTypeEnum.BETON;
108
- const hasDropShipItems = this._data.items.find((item) => data_2.PAILLIS_DROPSHIP_SKUS.includes(item.item_sku));
109
- this._data = Object.assign(Object.assign({}, this._data), (!!sku
110
- ? {
111
- is_paillis: !!this._data.items.find((item) => data_2.PAILLIS_SKUS.includes(item.item_sku)),
112
- shipping_price: !!hasDropShipItems
113
- ? data_2.bookingFees.shippingFee_paillisDropship
114
- : !!this._data.is_pickup
115
- ? !!isBeton
116
- ? data_2.bookingFees.preparationFee_beton
117
- : data_2.bookingFees.preparationFee_accessoires
118
- : !!isBeton
119
- ? data_2.bookingFees.shippingFee_beton
120
- : data_2.bookingFees.shippingFee_accessoires
121
- }
122
- : {}));
123
- if (!!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON) {
124
- this.recalculatePalletFee();
125
- }
126
- return await this.save();
127
- };
128
- this.recalculatePalletFee = () => {
129
- const totalPallets = (0, booking_1.getTotalPalletQty)(this._data.items);
130
- this._data = Object.assign(Object.assign({}, this._data), { palettes_qty: totalPallets });
131
- };
132
- this.setToBeApproved = async (priceList, fees) => {
133
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.APPROVING });
134
- try {
135
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
136
- try {
137
- const cartQuery = await space.carts.get({
138
- query: [{ field: 'is_booking', operator: '==', value: this._data.id }]
139
- });
140
- if (!!cartQuery && cartQuery.length) {
141
- (0, console_1.errorMessage)(`Cart already exists for booking. Returning.`);
142
- return 'cart-exists';
143
- }
144
- }
145
- catch (e) {
146
- console.log('error on checking if cart exists for booking: ', e.toString());
147
- }
148
- return await this.createOrder({ priceList, fees, space });
149
- }
150
- catch (error) {
151
- (0, console_1.errorMessage)(`Error while creating order from booking, reverting to booking. ${error} ${JSON.stringify(error)}`);
152
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.BOOKING });
153
- await this.save();
154
- return 'error-on-creating-order';
155
- }
156
- };
157
- this.approve = async () => {
158
- var _a;
159
- if (!!!this._data.order)
160
- throw new Error(`Can't find relative order.`);
161
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.APPROVED });
162
- try {
163
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/')
164
- throw new Error(`can't access parent space`);
165
- const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
166
- const cartSnap = await DatabaseService_1.default.getDocumentByPath(this._data.order);
167
- const data = cartSnap.data;
168
- if (!!!data)
169
- throw new Error('data is undefined for fetched cart');
170
- const newCartData = Object.assign(Object.assign({}, data), { billing_info: Object.assign(Object.assign({}, data.billing_info), (!!data.billing_address
171
- ? { expedition_recipient_phone: (0, data_1.formatPhoneNumberDB)(data.billing_address.expedition_recipient_phone) }
172
- : {})), shipping_info: Object.assign(Object.assign({}, data.shipping_info), (!!data.shipping_address
173
- ? { expedition_recipient_phone: (0, data_1.formatPhoneNumberDB)(data.shipping_address.expedition_recipient_phone) }
174
- : {})), shipping_payload: Object.assign(Object.assign({}, ((_a = data.shipping_payload) !== null && _a !== void 0 ? _a : {})), { delivery_or_pickup_date: !!this._data.is_pickup
175
- ? this._data.pickup_date
176
- : this._data.shipping_date, delivery_notes: !!this._data.notes ? this._data.notes : '', totalPallet: this._data.palettes_qty, isOutOfArea: !!this._data.isBookingOutOfZone, orderOrProjectNumber: this._data.project_identifiant, contact_infos: {
177
- contact_firstname: this._data.contact_firstname,
178
- contact_name: this._data.contact_name,
179
- contact_phone: this._data.contact_phone,
180
- contact_email: this._data.contact_firstname
181
- } }) });
182
- if (!!newCartData.ref && !Object.keys((0, object_1.difference)(data, newCartData)).length) {
183
- console.log('Cart has ref and already contains all updated data, was button clicked twice??');
184
- }
185
- const cartObj = new Cart_2.default(newCartData, {
186
- path: DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'carts')
187
- }, this._user);
188
- await cartObj.processPOSPayment({
189
- cartTotal: cartObj.data().total,
190
- charge_credit: true
191
- }, cartObj, space);
192
- return await this.save();
193
- }
194
- catch (error) {
195
- (0, console_1.errorMessage)(`Error while approving order from booking, reverting to booking. ${error} ${JSON.stringify(error)}`);
196
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.APPROVING });
197
- await this.save();
198
- }
199
- };
200
- this.newRefuse = async () => {
201
- if (typeof this._data.order == 'string') {
202
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
203
- }
204
- else {
205
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
206
- }
207
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.REFUSED, order: false });
208
- return await this.save();
209
- };
210
- this.refuse = async () => {
211
- if (typeof this._data.order == 'string') {
212
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
213
- }
214
- else {
215
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
216
- }
217
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.BOOKING, order: false });
218
- return await this.save();
219
- };
220
- this.reOpen = async () => {
221
- if (typeof this._data.order == 'string') {
222
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
223
- }
224
- else {
225
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
226
- }
227
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.BOOKING, order: false });
228
- return await this.save();
229
- };
230
- this.cancel = async () => {
231
- const previous = this._data.status;
232
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.CANCELLED });
233
- try {
234
- if (!!this._data.order) {
235
- return await this.deleteOrder();
236
- }
237
- await this.save();
238
- }
239
- catch (error) {
240
- (0, console_1.errorMessage)(`Error while deleting order from booking, reverting to previous state. ${error} ${JSON.stringify(error)}`);
241
- this._data = Object.assign(Object.assign({}, this._data), { status: previous });
242
- await this.save();
243
- }
244
- };
245
- this.setIsDone = async () => {
246
- this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.DONE });
247
- return await this.save();
248
- };
249
- this.calculateRegularPriceForItem = (item) => {
250
- if (typeof item.item_reg_price == 'number')
251
- return item.item_reg_price;
252
- const clientDiscount = (0, toNumber_1.default)(item.item_client_discount || 0);
253
- const extraDiscount = (0, toNumber_1.default)(item.item_discount || 0);
254
- const firstSubtotal = !!extraDiscount && extraDiscount !== 100
255
- ? (0, toNumber_1.default)((item.item_price * 100) / (100 - extraDiscount))
256
- : item.item_price;
257
- const secondSubtotal = !!clientDiscount && clientDiscount !== 100
258
- ? (0, toNumber_1.default)((firstSubtotal * 100) / (100 - clientDiscount))
259
- : firstSubtotal;
260
- return (0, round_1.default)(secondSubtotal, 2);
261
- };
262
- this.calculateShippingFeeQte = (dataToCheck) => {
263
- const data = dataToCheck || this.data();
264
- const bookingType = data.type || Booking_1.BookingTypeEnum.ACCESSOIRES;
265
- if (bookingType == Booking_1.BookingTypeEnum.ACCESSOIRES)
266
- return 1;
267
- const pallets = Math.ceil(data.palettes_qty || 0);
268
- return Math.ceil(pallets / (expedition_1.expeditionFeePalletTier !== null && expedition_1.expeditionFeePalletTier !== void 0 ? expedition_1.expeditionFeePalletTier : 1));
269
- };
270
- this.calculateShippingAmount = (dataToCheck, useDiscountAmount) => {
271
- const data = dataToCheck || this.data();
272
- const bookingType = data.type || Booking_1.BookingTypeEnum.ACCESSOIRES;
273
- let currentShippingAmount = data.shipping_price || 0;
274
- if (!!useDiscountAmount)
275
- currentShippingAmount = this.calculateShippingWithDiscount();
276
- if (bookingType == Booking_1.BookingTypeEnum.ACCESSOIRES)
277
- return currentShippingAmount;
278
- const feeQty = this.calculateShippingFeeQte(dataToCheck);
279
- if (feeQty == 0)
280
- return currentShippingAmount;
281
- return feeQty * currentShippingAmount;
282
- };
283
- this.createOrder = async ({ space, sendMail, priceList, fees = {} }) => {
284
- var _a, _b, _c;
285
- if (process.env.IS_TEST_ENV)
286
- console.log('sendMail, are you set somewhere?', sendMail);
287
- if (DatabaseService_1.default.getPathParent(this._collection.path) == '/')
288
- throw new Error(`Can't access parent space collection`);
289
- const customer = (await DatabaseService_1.default.getDocumentByPath(this.data().to_client)).data;
290
- const type = !!this.data().type ? this.data().type : undefined;
291
- let pallet;
292
- let extraFeeOutOfZone;
293
- let shippingProd;
294
- let preparationFee;
295
- let extraFeeAfterDate;
296
- try {
297
- pallet = !!fees.pallet ? fees.pallet : await (0, booking_1.getPalletFee)(space, priceList);
298
- if (!!fees.extraFeeOutOfZone && !!fees.extraFeeAfterDate) {
299
- extraFeeOutOfZone = fees.extraFeeOutOfZone;
300
- extraFeeAfterDate = fees.extraFeeAfterDate;
301
- }
302
- else {
303
- const { pastDateFee, outOfZoneFee } = await (0, booking_1.getAllBookingExtraFees)(space, priceList);
304
- extraFeeOutOfZone = outOfZoneFee;
305
- extraFeeAfterDate = pastDateFee;
306
- }
307
- if (this.data().type === Booking_1.BookingTypeEnum.BETON) {
308
- shippingProd = (_a = fees.shippingProd) !== null && _a !== void 0 ? _a : (await (0, booking_1.getBetonShippingFee)(space, priceList));
309
- preparationFee = (_b = fees.preparationFee) !== null && _b !== void 0 ? _b : (await (0, booking_1.getBetonPreparationFee)(space, priceList));
310
- }
311
- }
312
- catch (_error) { }
313
- const order = new Cart_2.default({
314
- items: [
315
- ...(await Promise.all(this._data.items.map(async (item) => {
316
- try {
317
- const parent = !!item.custom_id
318
- ? undefined
319
- : (await space.cartItem.get({
320
- query: [
321
- {
322
- field: 'slug',
323
- operator: 'in',
324
- value: [item.parent_slug.toLowerCase(), item.parent_slug]
325
- }
326
- ]
327
- }))[0];
328
- const declination = !!item.custom_id
329
- ? undefined
330
- : parent.declinations.find((declination) => !![item.item_sku.toLowerCase().trim(), item.item_sku.toUpperCase().trim()].includes(declination.sku));
331
- const getDeclinationPrice = () => {
332
- let newPrice = {};
333
- if (typeof item.item_discount == 'number' || typeof item.item_client_discount == 'number') {
334
- newPrice = {
335
- regular_price: {
336
- currency: 'CAD',
337
- amount: this.calculateRegularPriceForItem(item)
338
- },
339
- discount_price: {
340
- currency: 'CAD',
341
- amount: item.item_price
342
- }
343
- };
344
- }
345
- else {
346
- newPrice = {
347
- regular_price: {
348
- amount: item.item_price,
349
- currency: 'CAD'
350
- },
351
- discount_price: null
352
- };
353
- }
354
- return newPrice;
355
- };
356
- if (!!!declination) {
357
- if (!!!item.custom_id)
358
- return undefined;
359
- return Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Cart_1.getDefaultCartItem)()), { is_temp_prod: true, sku: item.item_sku, parent_name: (0, locale_1.getLanguageDictFromString)('TEMP', space.preferences.languages()), name: (0, locale_1.getLanguageDictFromString)(item.item_name, space.preferences.languages()), qte: item.qty, parent_slug: item.parent_slug, images_path: [] }), (!!parent ? { categories: parent.categories } : {})), getDeclinationPrice());
360
- }
361
- const { tier_pricing } = declination, rest = __rest(declination, ["tier_pricing"]);
362
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { qte: item.qty, images_path: [
363
- ...(!!parent.image_files[0]
364
- ? [parent.image_files[0]]
365
- : []),
366
- ...(declination || { images_path: [] }).images_path
367
- ], parent_slug: item.parent_slug }), (!!parent ? { categories: parent.categories } : {})), getDeclinationPrice()), (!!item.units ? { other_units: item.units } : {}));
368
- }
369
- catch (error) {
370
- if (process.env.NODE_ENV !== 'production')
371
- return undefined;
372
- }
373
- }))).filter((i) => !!i),
374
- ...(!!this._data.extra_zone_fee && !!extraFeeOutOfZone
375
- ? [
376
- Object.assign(Object.assign({}, extraFeeOutOfZone), { is_service: true, qte: 1, parent_slug: 'frais-supplementaires-booking', is_upsell_of_sku: 'summary' })
377
- ]
378
- : []),
379
- ...(!!type &&
380
- type === Booking_1.BookingTypeEnum.ACCESSOIRES &&
381
- !!this._data.extra_fee_if_after_date &&
382
- !!extraFeeAfterDate
383
- ? [
384
- Object.assign(Object.assign({}, extraFeeAfterDate), { is_service: true, qte: 1, parent_slug: 'frais-supplementaires-booking', is_upsell_of_sku: 'summary' })
385
- ]
386
- : []),
387
- ...(!!type && type === Booking_1.BookingTypeEnum.BETON && !!preparationFee
388
- ? [
389
- Object.assign(Object.assign({}, preparationFee), { is_service: true, qte: 1, parent_slug: 'frais-preparation-general-beton', is_upsell_of_sku: 'summary' })
390
- ]
391
- : []),
392
- ...(!!this.data().shipping_price && !!shippingProd
393
- ? [
394
- Object.assign(Object.assign({}, shippingProd), { is_service: true, qte: this.calculateShippingFeeQte(), name: [
395
- { lang: 'fr', value: 'Frais de livraison' },
396
- { lang: 'en', value: 'Shipping fees' }
397
- ], regular_price: Object.assign(Object.assign({}, shippingProd.regular_price), { amount: this.calculateShippingWithDiscount() }), parent_slug: 'livraison-beton-accessoires', is_upsell_of_sku: 'summary' })
398
- ]
399
- : []),
400
- ...(!!this.data().palettes_qty && !!pallet
401
- ? [
402
- Object.assign(Object.assign({}, pallet), { is_service: true, parent_slug: 'frais-palette', qte: this.data().palettes_qty, regular_price: Object.assign(Object.assign({}, pallet.regular_price), { amount: !!this.data().type && this.data().type === Booking_1.BookingTypeEnum.ACCESSOIRES
403
- ? data_2.bookingFees.palletFee_accessoires
404
- : data_2.bookingFees.palletFee_beton }), is_upsell_of_sku: 'summary' })
405
- ]
406
- : [])
407
- ],
408
- customer_info: (0, data_1.getProCustomerInfo)(customer.basic_info, customer.company_info),
409
- customer_id: customer.id,
410
- billing_address: !!this.data().billing_info
411
- ? this.data().billing_info
412
- : customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)) || customer.expedition_info[0],
413
- shipping_address: Object.assign(Object.assign({}, (!!this.data().shipping_info
414
- ? this.data().shipping_info
415
- : customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.SHIPPING)) || customer.expedition_info[0])), { expedition_recipient_name: !!this.data().contact_firstname && !!this.data().contact_name
416
- ? `${this.data().contact_firstname} ${this.data().contact_name}`
417
- : !!this.data().shipping_info
418
- ? this.data().shipping_info.expedition_recipient_name || ''
419
- : (customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.SHIPPING)) || customer.expedition_info[0]).expedition_recipient_name, expedition_recipient_phone: !!this.data().contact_phone
420
- ? this.data().contact_phone
421
- : !!this.data().shipping_info
422
- ? this.data().shipping_info.expedition_recipient_phone || ''
423
- : (customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.SHIPPING)) || customer.expedition_info[0]).expedition_recipient_phone }),
424
- user_email: !!this.data().contact_email
425
- ? this.data().contact_email
426
- : customer.basic_info.customer_email,
427
- status: !!this.data().is_pickup
428
- ? Cart_1.CartStatusEnum.CHECKOUT_PICKUP
429
- : Cart_1.CartStatusEnum.CHECKOUT_SHIPPING,
430
- boxes: [],
431
- cart_type: 'web',
432
- discount_rules: [
433
- Object.assign(Object.assign({}, (0, IDiscountRule_1.getDefaultDiscountRule)('promotion')), { name: [
434
- { lang: 'fr', value: `Escompte sur booking` },
435
- { lang: 'en', value: `Promo on booking` }
436
- ], appliesTo: {
437
- value: 'cart'
438
- }, result: {
439
- action: IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES,
440
- action_value: this.data().type === Booking_1.BookingTypeEnum.BETON
441
- ? data_2.paidOnReceptionPromoPercent.beton
442
- : data_2.paidOnReceptionPromoPercent.accessoires,
443
- exclude_services_and_fees: true
444
- }, rules: [
445
- {
446
- field: IDiscountRule_1.RuleFieldEnum.PAYMENT_METHOD,
447
- ruleDetails: [
448
- {
449
- operator: 'contains',
450
- value: [Cart_1.PaymentTypeEnum.CREDIT, Cart_1.PaymentTypeEnum.ONEXPEDITION, Cart_1.PaymentTypeEnum.INTERACTRANSFER],
451
- condition: IDiscountRule_1.RuleConditionEnum.OR
452
- }
453
- ],
454
- condition: IDiscountRule_1.RuleConditionEnum.AND
455
- },
456
- {
457
- field: IDiscountRule_1.RuleFieldEnum.CART_TYPE,
458
- ruleDetails: [{ operator: '==', value: ['booking'], condition: IDiscountRule_1.RuleConditionEnum.AND }],
459
- condition: IDiscountRule_1.RuleConditionEnum.AND
460
- },
461
- {
462
- field: IDiscountRule_1.RuleFieldEnum.CUSTOMER_TERMS_CODE,
463
- ruleDetails: [{ operator: '==', value: ['NET30'], condition: IDiscountRule_1.RuleConditionEnum.AND }],
464
- condition: IDiscountRule_1.RuleConditionEnum.AND
465
- }
466
- ] })
467
- ],
468
- locale: 'fr',
469
- shipping: !!shippingProd ? 0 : this.calculateShippingWithDiscount(),
470
- shipping_message: '',
471
- subtotal: 0,
472
- taxes: [],
473
- total: 0,
474
- is_pickup: !!this.data().is_pickup,
475
- is_booking: this.data().id || false,
476
- is_booking_beton: this.data().type === Booking_1.BookingTypeEnum.BETON,
477
- shipping_payload: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ delivery_or_pickup_date: !!this._data.is_pickup
478
- ? this._data.pickup_date
479
- : this._data.shipping_date }, (!!!this._data.is_pickup ? { delivery_period: 'AM' } : {})), (!!this._data.is_pickup
480
- ? {
481
- pickup_store: space.data().stores_warehouses.find((sw) => sw.id === this._data.pickup_id)
482
- }
483
- : {})), { delivery_notes: !!this._data.notes ? this._data.notes : '', totalPallet: this._data.palettes_qty, isOutOfArea: !!this._data.isBookingOutOfZone, orderOrProjectNumber: this._data.project_identifiant }), (!!this._data.delivery_on_site ? { onSiteDelivery: true } : {})), { contact_infos: {
484
- contact_firstname: this._data.contact_firstname,
485
- contact_name: this._data.contact_name,
486
- contact_phone: this._data.contact_phone,
487
- contact_email: this._data.contact_firstname
488
- } }), (!!this._data.payment_on_reception && !!this._data.payment_on_reception_percent
489
- ? { chosen_payment: Cart_1.PaymentTypeEnum.ONEXPEDITION }
490
- : {}))
491
- }, {
492
- path: DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'carts')
493
- }, this._user);
494
- await order.postConstruct(undefined, true, { skipDiscountRules: true, skipTierPricing: true });
495
- this._data = Object.assign(Object.assign({}, this._data), { order: DatabaseService_1.default.addToPath(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'carts'), (_c = order.data().id) !== null && _c !== void 0 ? _c : '') });
496
- return await this.save();
497
- };
498
- this.delete = async () => {
499
- await this.deleteOrder();
500
- return await super.delete();
501
- };
502
- this.deleteOrder = async () => {
503
- if (!!!this._data.order)
504
- return;
505
- if (typeof this._data.order == 'string') {
506
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
507
- }
508
- else {
509
- await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
510
- }
511
- this._data = Object.assign(Object.assign({}, this._data), { order: undefined });
512
- return await this.save();
513
- };
514
- this.setIsFromWeb = async (isFromWeb = true, saveToDatabase = true) => {
515
- this._data = Object.assign(Object.assign({}, this._data), { is_from_web: isFromWeb });
516
- return await this.save(undefined, undefined, saveToDatabase);
517
- };
518
- this.setType = async (type) => {
519
- this._data = Object.assign(Object.assign({}, this._data), { is_pickup: type === 'pickup' });
520
- return await this.save();
521
- };
522
- this.setNotes = async (notes) => {
523
- this._data = Object.assign(Object.assign({}, this._data), { notes: notes });
524
- return await this.save();
525
- };
526
- this.setPalettesQty = async (palettes_qty) => {
527
- this._data = Object.assign(Object.assign({}, this._data), { palettes_qty });
528
- return this.save();
529
- };
530
- this.setShippingPrice = async (shipping_price) => {
531
- this._data = Object.assign(Object.assign({}, this._data), { shipping_price });
532
- return this.save();
533
- };
534
- this.setShippingAddress = async (address, save = false) => {
535
- this._data = Object.assign(Object.assign({}, this._data), { shipping_info: address });
536
- await this.save(undefined, undefined, save);
537
- };
538
- this.setBillingAddress = async (address, save = false) => {
539
- this._data = Object.assign(Object.assign({}, this._data), { billing_info: address });
540
- await this.save(undefined, undefined, save);
541
- };
542
- this.addDiscount = async (discount, isPercent) => {
543
- this._data = Object.assign(Object.assign({}, this._data), { discount_percent: !!isPercent ? discount : undefined, discount_price: !!!isPercent ? discount : undefined });
544
- await this.save();
545
- };
546
- this.setPaymentOnReception = async (paymentOnReception, percent) => {
547
- this._data = Object.assign(Object.assign({}, this._data), { payment_on_reception: paymentOnReception, payment_on_reception_percent: percent });
548
- await this.save();
549
- };
550
- this.setContactInfo = async (contactInfo, dataToUse, saveToObj = true) => {
551
- this._data = Object.assign(Object.assign({}, (!!dataToUse ? dataToUse : this._data)), contactInfo);
552
- if (!!saveToObj) {
553
- await this.save();
554
- }
555
- return this._data;
556
- };
557
- this.setShippingPromo = async (values) => {
558
- this._data = Object.assign(Object.assign({}, this._data), { shipping_discount: values });
559
- await this.save();
560
- };
561
- this.calculateShippingWithDiscount = () => {
562
- let shippingPrice = this._data.shipping_price;
563
- if (!this._data.is_pickup) {
564
- const currentDiscount = this._data.shipping_discount;
565
- if (!!currentDiscount) {
566
- if (!!currentDiscount.amount)
567
- shippingPrice = currentDiscount.amount;
568
- if (!!currentDiscount.percent)
569
- shippingPrice = shippingPrice - shippingPrice * (currentDiscount.percent / 100);
570
- }
571
- }
572
- return shippingPrice;
573
- };
574
- }
575
- }
576
- exports.default = Booking;
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const find_1 = __importDefault(require("lodash/find"));
18
+ const round_1 = __importDefault(require("lodash/round"));
19
+ const toNumber_1 = __importDefault(require("lodash/toNumber"));
20
+ const Booking_1 = require("../../Interfaces/Booking");
21
+ const Cart_1 = require("../../Interfaces/Cart");
22
+ const Customer_1 = require("../../Interfaces/Customer");
23
+ const IDiscountRule_1 = require("../../Interfaces/Rules/IDiscountRule");
24
+ const booking_1 = require("../../utils/booking");
25
+ const console_1 = require("../../utils/console");
26
+ const data_1 = require("../../utils/data");
27
+ const locale_1 = require("../../utils/locale");
28
+ const Cart_2 = __importDefault(require("../Cart"));
29
+ const Space_1 = __importDefault(require("../Space"));
30
+ const data_2 = require("../../rules/GR/constants/data");
31
+ const baseService_1 = require("../baseService");
32
+ const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
33
+ const expedition_1 = require("../../rules/GR/utils/expedition");
34
+ const object_1 = require("../../utils/object");
35
+ class Booking extends baseService_1.BaseServiceClass {
36
+ constructor() {
37
+ super(...arguments);
38
+ this.assignToClient = async ({ clientId, clientRef, overrideExistingClient }, doNotSave) => {
39
+ if (!!!clientRef && !!!clientId)
40
+ throw new Error(`Can't access client. Please provide id or ref`);
41
+ if (!!!overrideExistingClient && !!this._data.to_client)
42
+ throw new Error(`Can't override existing client. If you want to, pass 'overrideExistingClient' props to true`);
43
+ if (!!clientRef) {
44
+ this._data = Object.assign(Object.assign({}, this._data), { to_client: clientRef });
45
+ }
46
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/')
47
+ throw new Error(`Can't access parent space collection`);
48
+ if (!!clientId) {
49
+ const clientToAssign = DatabaseService_1.default.addToPath(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'customers'), clientId);
50
+ this._data = Object.assign(Object.assign({}, this._data), { to_client: clientToAssign });
51
+ }
52
+ return await this.save(undefined, undefined, !!doNotSave ? false : true);
53
+ };
54
+ this.assignToUser = async (userRef, save) => {
55
+ try {
56
+ this._data = Object.assign(Object.assign({}, this._data), { by_user: userRef });
57
+ return await this.save(undefined, undefined, save);
58
+ }
59
+ catch (error) {
60
+ (0, console_1.errorMessage)(`Error while assigning user to booking. ${error} - ${JSON.stringify(error)}`);
61
+ }
62
+ };
63
+ this.addOrUpdateItem = async ({ item: { sku, name, price, regPrice, parentSlug, discount, client_discount, units, custom_id }, qty }) => {
64
+ if (!!!sku && !!!custom_id)
65
+ throw new Error(`Can't find product without SKU`);
66
+ if (!!qty && qty <= 0)
67
+ throw new Error(`Use 'removeItem'`);
68
+ if (!!(0, find_1.default)(this._data.items, (item) => !!item.custom_id ? item.custom_id === custom_id : !!item.item_sku && item.item_sku === sku)) {
69
+ this._data = Object.assign(Object.assign({}, this._data), { items: this._data.items.map((_item) => {
70
+ if (!!_item.custom_id ? _item.custom_id !== custom_id : _item.item_sku !== sku)
71
+ return _item;
72
+ (0, console_1.workingMessage)(`Updating item ${!!_item.item_sku ? _item.item_sku : _item.custom_id} with price: ${price} and quantity: ${!!qty ? qty : _item.qty}`);
73
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, _item), { item_name: name, item_sku: sku, item_price: price, item_reg_price: regPrice, qty: !!qty ? qty : _item.qty, item_discount: discount, parent_slug: parentSlug }), (!!custom_id ? { custom_id } : {})), (typeof client_discount === 'number' ? { item_client_discount: client_discount } : {}));
74
+ }) });
75
+ }
76
+ else {
77
+ this._data = Object.assign(Object.assign({}, this._data), { items: [
78
+ ...this._data.items,
79
+ Object.assign(Object.assign(Object.assign({ item_name: name, item_price: price, item_sku: sku, qty, parent_slug: parentSlug, item_discount: discount }, (!!custom_id ? { custom_id } : {})), (typeof client_discount === 'number' ? { item_client_discount: client_discount } : {})), { units: units })
80
+ ] });
81
+ }
82
+ this._data = Object.assign(Object.assign({}, this._data), { is_paillis: !!this._data.items.find((item) => data_2.PAILLIS_SKUS.includes(item.item_sku)), shipping_price: !!this._data.items.find((item) => data_2.PAILLIS_DROPSHIP_SKUS.includes(item.item_sku))
83
+ ? data_2.bookingFees.shippingFee_paillisDropship
84
+ : !!this._data.shipping_price
85
+ ? this._data.shipping_price
86
+ : !!this._data.is_pickup
87
+ ? !!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON
88
+ ? data_2.bookingFees.preparationFee_beton
89
+ : data_2.bookingFees.preparationFee_accessoires
90
+ : !!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON
91
+ ? data_2.bookingFees.shippingFee_beton
92
+ : data_2.bookingFees.shippingFee_accessoires });
93
+ if (!!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON) {
94
+ this.recalculatePalletFee();
95
+ }
96
+ return await this.save();
97
+ };
98
+ this.removeItem = async ({ item: { sku, custom_id } }) => {
99
+ if (!!!sku && !!!custom_id)
100
+ throw new Error(`Can't find product without SKU`);
101
+ if (!!!this._data.items.length)
102
+ return true;
103
+ const index = this._data.items.findIndex((i) => !!i.custom_id && custom_id ? i.custom_id === custom_id : !!sku ? i.item_sku === sku : false);
104
+ if (index === -1)
105
+ return true;
106
+ this._data = Object.assign(Object.assign({}, this._data), { items: [...this._data.items.slice(0, index), ...this._data.items.slice(index + 1)] });
107
+ const isBeton = this._data.type === Booking_1.BookingTypeEnum.BETON;
108
+ const hasDropShipItems = this._data.items.find((item) => data_2.PAILLIS_DROPSHIP_SKUS.includes(item.item_sku));
109
+ this._data = Object.assign(Object.assign({}, this._data), (!!sku
110
+ ? {
111
+ is_paillis: !!this._data.items.find((item) => data_2.PAILLIS_SKUS.includes(item.item_sku)),
112
+ shipping_price: !!hasDropShipItems
113
+ ? data_2.bookingFees.shippingFee_paillisDropship
114
+ : !!this._data.is_pickup
115
+ ? !!isBeton
116
+ ? data_2.bookingFees.preparationFee_beton
117
+ : data_2.bookingFees.preparationFee_accessoires
118
+ : !!isBeton
119
+ ? data_2.bookingFees.shippingFee_beton
120
+ : data_2.bookingFees.shippingFee_accessoires
121
+ }
122
+ : {}));
123
+ if (!!this._data.type && this._data.type === Booking_1.BookingTypeEnum.BETON) {
124
+ this.recalculatePalletFee();
125
+ }
126
+ return await this.save();
127
+ };
128
+ this.recalculatePalletFee = () => {
129
+ const totalPallets = (0, booking_1.getTotalPalletQty)(this._data.items);
130
+ this._data = Object.assign(Object.assign({}, this._data), { palettes_qty: totalPallets });
131
+ };
132
+ this.setToBeApproved = async (priceList, fees) => {
133
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.APPROVING });
134
+ try {
135
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
136
+ try {
137
+ const cartQuery = await space.carts.get({
138
+ query: [{ field: 'is_booking', operator: '==', value: this._data.id }]
139
+ });
140
+ if (!!cartQuery && cartQuery.length) {
141
+ (0, console_1.errorMessage)(`Cart already exists for booking. Returning.`);
142
+ return 'cart-exists';
143
+ }
144
+ }
145
+ catch (e) {
146
+ console.log('error on checking if cart exists for booking: ', e.toString());
147
+ }
148
+ return await this.createOrder({ priceList, fees, space });
149
+ }
150
+ catch (error) {
151
+ (0, console_1.errorMessage)(`Error while creating order from booking, reverting to booking. ${error} ${JSON.stringify(error)}`);
152
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.BOOKING });
153
+ await this.save();
154
+ return 'error-on-creating-order';
155
+ }
156
+ };
157
+ this.approve = async () => {
158
+ var _a;
159
+ if (!!!this._data.order)
160
+ throw new Error(`Can't find relative order.`);
161
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.APPROVED });
162
+ try {
163
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/')
164
+ throw new Error(`can't access parent space`);
165
+ const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
166
+ const cartSnap = await DatabaseService_1.default.getDocumentByPath(this._data.order);
167
+ const data = cartSnap.data;
168
+ if (!!!data)
169
+ throw new Error('data is undefined for fetched cart');
170
+ const newCartData = Object.assign(Object.assign({}, data), { billing_info: Object.assign(Object.assign({}, data.billing_info), (!!data.billing_address
171
+ ? { expedition_recipient_phone: (0, data_1.formatPhoneNumberDB)(data.billing_address.expedition_recipient_phone) }
172
+ : {})), shipping_info: Object.assign(Object.assign({}, data.shipping_info), (!!data.shipping_address
173
+ ? { expedition_recipient_phone: (0, data_1.formatPhoneNumberDB)(data.shipping_address.expedition_recipient_phone) }
174
+ : {})), shipping_payload: Object.assign(Object.assign({}, ((_a = data.shipping_payload) !== null && _a !== void 0 ? _a : {})), { delivery_or_pickup_date: !!this._data.is_pickup
175
+ ? this._data.pickup_date
176
+ : this._data.shipping_date, delivery_notes: !!this._data.notes ? this._data.notes : '', totalPallet: this._data.palettes_qty, isOutOfArea: !!this._data.isBookingOutOfZone, orderOrProjectNumber: this._data.project_identifiant, contact_infos: {
177
+ contact_firstname: this._data.contact_firstname,
178
+ contact_name: this._data.contact_name,
179
+ contact_phone: this._data.contact_phone,
180
+ contact_email: this._data.contact_firstname
181
+ } }) });
182
+ if (!!newCartData.ref && !Object.keys((0, object_1.difference)(data, newCartData)).length) {
183
+ console.log('Cart has ref and already contains all updated data, was button clicked twice??');
184
+ }
185
+ const cartObj = new Cart_2.default(newCartData, {
186
+ path: DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'carts')
187
+ }, this._user);
188
+ await cartObj.processPOSPayment({
189
+ cartTotal: cartObj.data().total,
190
+ charge_credit: true
191
+ }, cartObj, space);
192
+ return await this.save();
193
+ }
194
+ catch (error) {
195
+ (0, console_1.errorMessage)(`Error while approving order from booking, reverting to booking. ${error} ${JSON.stringify(error)}`);
196
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.APPROVING });
197
+ await this.save();
198
+ }
199
+ };
200
+ this.newRefuse = async () => {
201
+ if (typeof this._data.order == 'string') {
202
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
203
+ }
204
+ else {
205
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
206
+ }
207
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.REFUSED, order: false });
208
+ return await this.save();
209
+ };
210
+ this.refuse = async () => {
211
+ if (typeof this._data.order == 'string') {
212
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
213
+ }
214
+ else {
215
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
216
+ }
217
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.BOOKING, order: false });
218
+ return await this.save();
219
+ };
220
+ this.reOpen = async () => {
221
+ if (typeof this._data.order == 'string') {
222
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
223
+ }
224
+ else {
225
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
226
+ }
227
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.BOOKING, order: false });
228
+ return await this.save();
229
+ };
230
+ this.cancel = async () => {
231
+ const previous = this._data.status;
232
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.CANCELLED });
233
+ try {
234
+ if (!!this._data.order) {
235
+ return await this.deleteOrder();
236
+ }
237
+ await this.save();
238
+ }
239
+ catch (error) {
240
+ (0, console_1.errorMessage)(`Error while deleting order from booking, reverting to previous state. ${error} ${JSON.stringify(error)}`);
241
+ this._data = Object.assign(Object.assign({}, this._data), { status: previous });
242
+ await this.save();
243
+ }
244
+ };
245
+ this.setIsDone = async () => {
246
+ this._data = Object.assign(Object.assign({}, this._data), { status: Booking_1.BookingStatusEnum.DONE });
247
+ return await this.save();
248
+ };
249
+ this.calculateRegularPriceForItem = (item) => {
250
+ if (typeof item.item_reg_price == 'number')
251
+ return item.item_reg_price;
252
+ const clientDiscount = (0, toNumber_1.default)(item.item_client_discount || 0);
253
+ const extraDiscount = (0, toNumber_1.default)(item.item_discount || 0);
254
+ const firstSubtotal = !!extraDiscount && extraDiscount !== 100
255
+ ? (0, toNumber_1.default)((item.item_price * 100) / (100 - extraDiscount))
256
+ : item.item_price;
257
+ const secondSubtotal = !!clientDiscount && clientDiscount !== 100
258
+ ? (0, toNumber_1.default)((firstSubtotal * 100) / (100 - clientDiscount))
259
+ : firstSubtotal;
260
+ return (0, round_1.default)(secondSubtotal, 2);
261
+ };
262
+ this.calculateShippingFeeQte = (dataToCheck) => {
263
+ const data = dataToCheck || this.data();
264
+ const bookingType = data.type || Booking_1.BookingTypeEnum.ACCESSOIRES;
265
+ if (bookingType == Booking_1.BookingTypeEnum.ACCESSOIRES)
266
+ return 1;
267
+ const pallets = Math.ceil(data.palettes_qty || 0);
268
+ return Math.ceil(pallets / (expedition_1.expeditionFeePalletTier !== null && expedition_1.expeditionFeePalletTier !== void 0 ? expedition_1.expeditionFeePalletTier : 1));
269
+ };
270
+ this.calculateShippingAmount = (dataToCheck, useDiscountAmount) => {
271
+ const data = dataToCheck || this.data();
272
+ const bookingType = data.type || Booking_1.BookingTypeEnum.ACCESSOIRES;
273
+ let currentShippingAmount = data.shipping_price || 0;
274
+ if (!!useDiscountAmount)
275
+ currentShippingAmount = this.calculateShippingWithDiscount();
276
+ if (bookingType == Booking_1.BookingTypeEnum.ACCESSOIRES)
277
+ return currentShippingAmount;
278
+ const feeQty = this.calculateShippingFeeQte(dataToCheck);
279
+ if (feeQty == 0)
280
+ return currentShippingAmount;
281
+ return feeQty * currentShippingAmount;
282
+ };
283
+ this.createOrder = async ({ space, sendMail, priceList, fees = {} }) => {
284
+ var _a, _b, _c;
285
+ if (process.env.IS_TEST_ENV)
286
+ console.log('sendMail, are you set somewhere?', sendMail);
287
+ if (DatabaseService_1.default.getPathParent(this._collection.path) == '/')
288
+ throw new Error(`Can't access parent space collection`);
289
+ const customer = (await DatabaseService_1.default.getDocumentByPath(this.data().to_client)).data;
290
+ const type = !!this.data().type ? this.data().type : undefined;
291
+ let pallet;
292
+ let extraFeeOutOfZone;
293
+ let shippingProd;
294
+ let preparationFee;
295
+ let extraFeeAfterDate;
296
+ try {
297
+ pallet = !!fees.pallet ? fees.pallet : await (0, booking_1.getPalletFee)(space, priceList);
298
+ if (!!fees.extraFeeOutOfZone && !!fees.extraFeeAfterDate) {
299
+ extraFeeOutOfZone = fees.extraFeeOutOfZone;
300
+ extraFeeAfterDate = fees.extraFeeAfterDate;
301
+ }
302
+ else {
303
+ const { pastDateFee, outOfZoneFee } = await (0, booking_1.getAllBookingExtraFees)(space, priceList);
304
+ extraFeeOutOfZone = outOfZoneFee;
305
+ extraFeeAfterDate = pastDateFee;
306
+ }
307
+ if (this.data().type === Booking_1.BookingTypeEnum.BETON) {
308
+ shippingProd = (_a = fees.shippingProd) !== null && _a !== void 0 ? _a : (await (0, booking_1.getBetonShippingFee)(space, priceList));
309
+ preparationFee = (_b = fees.preparationFee) !== null && _b !== void 0 ? _b : (await (0, booking_1.getBetonPreparationFee)(space, priceList));
310
+ }
311
+ }
312
+ catch (_error) { }
313
+ const order = new Cart_2.default({
314
+ items: [
315
+ ...(await Promise.all(this._data.items.map(async (item) => {
316
+ try {
317
+ const parent = !!item.custom_id
318
+ ? undefined
319
+ : (await space.cartItem.get({
320
+ query: [
321
+ {
322
+ field: 'slug',
323
+ operator: 'in',
324
+ value: [item.parent_slug.toLowerCase(), item.parent_slug]
325
+ }
326
+ ]
327
+ }))[0];
328
+ const declination = !!item.custom_id
329
+ ? undefined
330
+ : parent.declinations.find((declination) => !![item.item_sku.toLowerCase().trim(), item.item_sku.toUpperCase().trim()].includes(declination.sku));
331
+ const getDeclinationPrice = () => {
332
+ let newPrice = {};
333
+ if (typeof item.item_discount == 'number' || typeof item.item_client_discount == 'number') {
334
+ newPrice = {
335
+ regular_price: {
336
+ currency: 'CAD',
337
+ amount: this.calculateRegularPriceForItem(item)
338
+ },
339
+ discount_price: {
340
+ currency: 'CAD',
341
+ amount: item.item_price
342
+ }
343
+ };
344
+ }
345
+ else {
346
+ newPrice = {
347
+ regular_price: {
348
+ amount: item.item_price,
349
+ currency: 'CAD'
350
+ },
351
+ discount_price: null
352
+ };
353
+ }
354
+ return newPrice;
355
+ };
356
+ if (!!!declination) {
357
+ if (!!!item.custom_id)
358
+ return undefined;
359
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Cart_1.getDefaultCartItem)()), { is_temp_prod: true, sku: item.item_sku, parent_name: (0, locale_1.getLanguageDictFromString)('TEMP', space.preferences.languages()), name: (0, locale_1.getLanguageDictFromString)(item.item_name, space.preferences.languages()), qte: item.qty, parent_slug: item.parent_slug, images_path: [] }), (!!parent ? { categories: parent.categories } : {})), getDeclinationPrice());
360
+ }
361
+ const { tier_pricing } = declination, rest = __rest(declination, ["tier_pricing"]);
362
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { qte: item.qty, images_path: [
363
+ ...(!!parent.image_files[0]
364
+ ? [parent.image_files[0]]
365
+ : []),
366
+ ...(declination || { images_path: [] }).images_path
367
+ ], parent_slug: item.parent_slug }), (!!parent ? { categories: parent.categories } : {})), getDeclinationPrice()), (!!item.units ? { other_units: item.units } : {}));
368
+ }
369
+ catch (error) {
370
+ if (process.env.NODE_ENV !== 'production')
371
+ return undefined;
372
+ }
373
+ }))).filter((i) => !!i),
374
+ ...(!!this._data.extra_zone_fee && !!extraFeeOutOfZone
375
+ ? [
376
+ Object.assign(Object.assign({}, extraFeeOutOfZone), { is_service: true, qte: 1, parent_slug: 'frais-supplementaires-booking', is_upsell_of_sku: 'summary' })
377
+ ]
378
+ : []),
379
+ ...(!!type &&
380
+ type === Booking_1.BookingTypeEnum.ACCESSOIRES &&
381
+ !!this._data.extra_fee_if_after_date &&
382
+ !!extraFeeAfterDate
383
+ ? [
384
+ Object.assign(Object.assign({}, extraFeeAfterDate), { is_service: true, qte: 1, parent_slug: 'frais-supplementaires-booking', is_upsell_of_sku: 'summary' })
385
+ ]
386
+ : []),
387
+ ...(!!type && type === Booking_1.BookingTypeEnum.BETON && !!preparationFee
388
+ ? [
389
+ Object.assign(Object.assign({}, preparationFee), { is_service: true, qte: 1, parent_slug: 'frais-preparation-general-beton', is_upsell_of_sku: 'summary' })
390
+ ]
391
+ : []),
392
+ ...(!!this.data().shipping_price && !!shippingProd
393
+ ? [
394
+ Object.assign(Object.assign({}, shippingProd), { is_service: true, qte: this.calculateShippingFeeQte(), name: [
395
+ { lang: 'fr', value: 'Frais de livraison' },
396
+ { lang: 'en', value: 'Shipping fees' }
397
+ ], regular_price: Object.assign(Object.assign({}, shippingProd.regular_price), { amount: this.calculateShippingWithDiscount() }), parent_slug: 'livraison-beton-accessoires', is_upsell_of_sku: 'summary' })
398
+ ]
399
+ : []),
400
+ ...(!!this.data().palettes_qty && !!pallet
401
+ ? [
402
+ Object.assign(Object.assign({}, pallet), { is_service: true, parent_slug: 'frais-palette', qte: this.data().palettes_qty, regular_price: Object.assign(Object.assign({}, pallet.regular_price), { amount: !!this.data().type && this.data().type === Booking_1.BookingTypeEnum.ACCESSOIRES
403
+ ? data_2.bookingFees.palletFee_accessoires
404
+ : data_2.bookingFees.palletFee_beton }), is_upsell_of_sku: 'summary' })
405
+ ]
406
+ : [])
407
+ ],
408
+ customer_info: (0, data_1.getProCustomerInfo)(customer.basic_info, customer.company_info),
409
+ customer_id: customer.id,
410
+ billing_address: !!this.data().billing_info
411
+ ? this.data().billing_info
412
+ : customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)) || customer.expedition_info[0],
413
+ shipping_address: Object.assign(Object.assign({}, (!!this.data().shipping_info
414
+ ? this.data().shipping_info
415
+ : customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.SHIPPING)) || customer.expedition_info[0])), { expedition_recipient_name: !!this.data().contact_firstname && !!this.data().contact_name
416
+ ? `${this.data().contact_firstname} ${this.data().contact_name}`
417
+ : !!this.data().shipping_info
418
+ ? this.data().shipping_info.expedition_recipient_name || ''
419
+ : (customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.SHIPPING)) || customer.expedition_info[0]).expedition_recipient_name, expedition_recipient_phone: !!this.data().contact_phone
420
+ ? this.data().contact_phone
421
+ : !!this.data().shipping_info
422
+ ? this.data().shipping_info.expedition_recipient_phone || ''
423
+ : (customer.expedition_info.find((e) => !!e.is_default && !!e.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.SHIPPING)) || customer.expedition_info[0]).expedition_recipient_phone }),
424
+ user_email: !!this.data().contact_email
425
+ ? this.data().contact_email
426
+ : customer.basic_info.customer_email,
427
+ status: !!this.data().is_pickup
428
+ ? Cart_1.CartStatusEnum.CHECKOUT_PICKUP
429
+ : Cart_1.CartStatusEnum.CHECKOUT_SHIPPING,
430
+ boxes: [],
431
+ cart_type: 'web',
432
+ discount_rules: [
433
+ Object.assign(Object.assign({}, (0, IDiscountRule_1.getDefaultDiscountRule)('promotion')), { name: [
434
+ { lang: 'fr', value: `Escompte sur booking` },
435
+ { lang: 'en', value: `Promo on booking` }
436
+ ], appliesTo: {
437
+ value: 'cart'
438
+ }, result: {
439
+ action: IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES,
440
+ action_value: this.data().type === Booking_1.BookingTypeEnum.BETON
441
+ ? data_2.paidOnReceptionPromoPercent.beton
442
+ : data_2.paidOnReceptionPromoPercent.accessoires,
443
+ exclude_services_and_fees: true
444
+ }, rules: [
445
+ {
446
+ field: IDiscountRule_1.RuleFieldEnum.PAYMENT_METHOD,
447
+ ruleDetails: [
448
+ {
449
+ operator: 'contains',
450
+ value: [Cart_1.PaymentTypeEnum.CREDIT, Cart_1.PaymentTypeEnum.ONEXPEDITION, Cart_1.PaymentTypeEnum.INTERACTRANSFER],
451
+ condition: IDiscountRule_1.RuleConditionEnum.OR
452
+ }
453
+ ],
454
+ condition: IDiscountRule_1.RuleConditionEnum.AND
455
+ },
456
+ {
457
+ field: IDiscountRule_1.RuleFieldEnum.CART_TYPE,
458
+ ruleDetails: [{ operator: '==', value: ['booking'], condition: IDiscountRule_1.RuleConditionEnum.AND }],
459
+ condition: IDiscountRule_1.RuleConditionEnum.AND
460
+ },
461
+ {
462
+ field: IDiscountRule_1.RuleFieldEnum.CUSTOMER_TERMS_CODE,
463
+ ruleDetails: [{ operator: '==', value: ['NET30'], condition: IDiscountRule_1.RuleConditionEnum.AND }],
464
+ condition: IDiscountRule_1.RuleConditionEnum.AND
465
+ }
466
+ ] })
467
+ ],
468
+ locale: 'fr',
469
+ shipping: !!shippingProd ? 0 : this.calculateShippingWithDiscount(),
470
+ shipping_message: '',
471
+ subtotal: 0,
472
+ taxes: [],
473
+ total: 0,
474
+ is_pickup: !!this.data().is_pickup,
475
+ is_booking: this.data().id || false,
476
+ is_booking_beton: this.data().type === Booking_1.BookingTypeEnum.BETON,
477
+ shipping_payload: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ delivery_or_pickup_date: !!this._data.is_pickup
478
+ ? this._data.pickup_date
479
+ : this._data.shipping_date }, (!!!this._data.is_pickup ? { delivery_period: 'AM' } : {})), (!!this._data.is_pickup
480
+ ? {
481
+ pickup_store: space.data().stores_warehouses.find((sw) => sw.id === this._data.pickup_id)
482
+ }
483
+ : {})), { delivery_notes: !!this._data.notes ? this._data.notes : '', totalPallet: this._data.palettes_qty, isOutOfArea: !!this._data.isBookingOutOfZone, orderOrProjectNumber: this._data.project_identifiant }), (!!this._data.delivery_on_site ? { onSiteDelivery: true } : {})), { contact_infos: {
484
+ contact_firstname: this._data.contact_firstname,
485
+ contact_name: this._data.contact_name,
486
+ contact_phone: this._data.contact_phone,
487
+ contact_email: this._data.contact_firstname
488
+ } }), (!!this._data.payment_on_reception && !!this._data.payment_on_reception_percent
489
+ ? { chosen_payment: Cart_1.PaymentTypeEnum.ONEXPEDITION }
490
+ : {}))
491
+ }, {
492
+ path: DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'carts')
493
+ }, this._user);
494
+ await order.postConstruct(undefined, true, { skipDiscountRules: true, skipTierPricing: true });
495
+ this._data = Object.assign(Object.assign({}, this._data), { order: DatabaseService_1.default.addToPath(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'carts'), (_c = order.data().id) !== null && _c !== void 0 ? _c : '') });
496
+ return await this.save();
497
+ };
498
+ this.delete = async () => {
499
+ await this.deleteOrder();
500
+ return await super.delete();
501
+ };
502
+ this.deleteOrder = async () => {
503
+ if (!!!this._data.order)
504
+ return;
505
+ if (typeof this._data.order == 'string') {
506
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order);
507
+ }
508
+ else {
509
+ await DatabaseService_1.default.deleteDocumentByPath(this._data.order.path);
510
+ }
511
+ this._data = Object.assign(Object.assign({}, this._data), { order: undefined });
512
+ return await this.save();
513
+ };
514
+ this.setIsFromWeb = async (isFromWeb = true, saveToDatabase = true) => {
515
+ this._data = Object.assign(Object.assign({}, this._data), { is_from_web: isFromWeb });
516
+ return await this.save(undefined, undefined, saveToDatabase);
517
+ };
518
+ this.setType = async (type) => {
519
+ this._data = Object.assign(Object.assign({}, this._data), { is_pickup: type === 'pickup' });
520
+ return await this.save();
521
+ };
522
+ this.setNotes = async (notes) => {
523
+ this._data = Object.assign(Object.assign({}, this._data), { notes: notes });
524
+ return await this.save();
525
+ };
526
+ this.setPalettesQty = async (palettes_qty) => {
527
+ this._data = Object.assign(Object.assign({}, this._data), { palettes_qty });
528
+ return this.save();
529
+ };
530
+ this.setShippingPrice = async (shipping_price) => {
531
+ this._data = Object.assign(Object.assign({}, this._data), { shipping_price });
532
+ return this.save();
533
+ };
534
+ this.setShippingAddress = async (address, save = false) => {
535
+ this._data = Object.assign(Object.assign({}, this._data), { shipping_info: address });
536
+ await this.save(undefined, undefined, save);
537
+ };
538
+ this.setBillingAddress = async (address, save = false) => {
539
+ this._data = Object.assign(Object.assign({}, this._data), { billing_info: address });
540
+ await this.save(undefined, undefined, save);
541
+ };
542
+ this.addDiscount = async (discount, isPercent) => {
543
+ this._data = Object.assign(Object.assign({}, this._data), { discount_percent: !!isPercent ? discount : undefined, discount_price: !!!isPercent ? discount : undefined });
544
+ await this.save();
545
+ };
546
+ this.setPaymentOnReception = async (paymentOnReception, percent) => {
547
+ this._data = Object.assign(Object.assign({}, this._data), { payment_on_reception: paymentOnReception, payment_on_reception_percent: percent });
548
+ await this.save();
549
+ };
550
+ this.setContactInfo = async (contactInfo, dataToUse, saveToObj = true) => {
551
+ this._data = Object.assign(Object.assign({}, (!!dataToUse ? dataToUse : this._data)), contactInfo);
552
+ if (!!saveToObj) {
553
+ await this.save();
554
+ }
555
+ return this._data;
556
+ };
557
+ this.setShippingPromo = async (values) => {
558
+ this._data = Object.assign(Object.assign({}, this._data), { shipping_discount: values });
559
+ await this.save();
560
+ };
561
+ this.calculateShippingWithDiscount = () => {
562
+ let shippingPrice = this._data.shipping_price;
563
+ if (!this._data.is_pickup) {
564
+ const currentDiscount = this._data.shipping_discount;
565
+ if (!!currentDiscount) {
566
+ if (!!currentDiscount.amount)
567
+ shippingPrice = currentDiscount.amount;
568
+ if (!!currentDiscount.percent)
569
+ shippingPrice = shippingPrice - shippingPrice * (currentDiscount.percent / 100);
570
+ }
571
+ }
572
+ return shippingPrice;
573
+ };
574
+ }
575
+ }
576
+ exports.default = Booking;
577
577
  //# sourceMappingURL=index.js.map