addio-admin-sdk 1.7.86 → 1.7.87

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