addio-admin-sdk 1.7.21 → 1.7.23

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 (522) hide show
  1. package/.babelrc +17 -17
  2. package/.env +14 -14
  3. package/.env.dev +14 -14
  4. package/.github/workflows/publish_coverage.yaml +69 -69
  5. package/addio-sdk-doc.md +1380 -1380
  6. package/changelog.md +469 -469
  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 +148 -148
  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 +47 -47
  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 +36 -36
  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 +68 -68
  30. package/dist/Interfaces/Booking/index.js +17 -17
  31. package/dist/Interfaces/Brand/index.d.ts +13 -13
  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/IPandaPayload.d.ts +64 -64
  36. package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
  37. package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
  38. package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
  39. package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
  40. package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
  41. package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
  42. package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
  43. package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
  44. package/dist/Interfaces/Cart/IStripePayload.js +2 -2
  45. package/dist/Interfaces/Cart/index.d.ts +410 -410
  46. package/dist/Interfaces/Cart/index.js +191 -191
  47. package/dist/Interfaces/Catalogue/index.d.ts +68 -68
  48. package/dist/Interfaces/Catalogue/index.js +37 -37
  49. package/dist/Interfaces/Category/index.d.ts +26 -26
  50. package/dist/Interfaces/Category/index.js +2 -2
  51. package/dist/Interfaces/Chart/index.d.ts +11 -11
  52. package/dist/Interfaces/Chart/index.js +2 -2
  53. package/dist/Interfaces/Class/index.d.ts +8 -8
  54. package/dist/Interfaces/Class/index.js +2 -2
  55. package/dist/Interfaces/Consent/index.d.ts +6 -6
  56. package/dist/Interfaces/Consent/index.js +2 -2
  57. package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
  58. package/dist/Interfaces/Context/IContextProps.js +2 -2
  59. package/dist/Interfaces/Context/IContextState.d.ts +15 -15
  60. package/dist/Interfaces/Context/IContextState.js +2 -2
  61. package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
  62. package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
  63. package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
  64. package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
  65. package/dist/Interfaces/Customer/index.d.ts +95 -95
  66. package/dist/Interfaces/Customer/index.js +158 -158
  67. package/dist/Interfaces/Declination/index.d.ts +111 -111
  68. package/dist/Interfaces/Declination/index.js +77 -77
  69. package/dist/Interfaces/Document/index.d.ts +8 -8
  70. package/dist/Interfaces/Document/index.js +2 -2
  71. package/dist/Interfaces/Elastic/index.d.ts +89 -89
  72. package/dist/Interfaces/Elastic/index.js +2 -2
  73. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
  74. package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
  75. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
  76. package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
  77. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
  78. package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
  79. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
  80. package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
  81. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
  82. package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
  83. package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
  84. package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
  85. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
  86. package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
  87. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
  88. package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
  89. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
  90. package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
  91. package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
  92. package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
  93. package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
  94. package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
  95. package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
  96. package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
  97. package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
  98. package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
  99. package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
  100. package/dist/Interfaces/Email/IContactEmail.js +2 -2
  101. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
  102. package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
  103. package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
  104. package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
  105. package/dist/Interfaces/Email/IEmail.d.ts +20 -20
  106. package/dist/Interfaces/Email/IEmail.js +69 -69
  107. package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
  108. package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
  109. package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
  110. package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
  111. package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
  112. package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
  113. package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
  114. package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
  115. package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
  116. package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
  117. package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
  118. package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
  119. package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
  120. package/dist/Interfaces/ExportSchema/index.js +2 -2
  121. package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
  122. package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
  123. package/dist/Interfaces/ExternalService/index.d.ts +9 -9
  124. package/dist/Interfaces/ExternalService/index.js +2 -2
  125. package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
  126. package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
  127. package/dist/Interfaces/G2/index.d.ts +556 -556
  128. package/dist/Interfaces/G2/index.js +36 -36
  129. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
  130. package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
  131. package/dist/Interfaces/Indexed/Product/index.d.ts +94 -94
  132. package/dist/Interfaces/Indexed/Product/index.js +287 -287
  133. package/dist/Interfaces/Inventory/index.d.ts +19 -19
  134. package/dist/Interfaces/Inventory/index.js +8 -8
  135. package/dist/Interfaces/Invoice/index.d.ts +4 -4
  136. package/dist/Interfaces/Invoice/index.js +2 -2
  137. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
  138. package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
  139. package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
  140. package/dist/Interfaces/MarketplacePublication/index.js +33 -33
  141. package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
  142. package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
  143. package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
  144. package/dist/Interfaces/Operations/IUpdate.js +2 -2
  145. package/dist/Interfaces/Order/index.d.ts +4 -4
  146. package/dist/Interfaces/Order/index.js +2 -2
  147. package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
  148. package/dist/Interfaces/Org/IRelUser.js +2 -2
  149. package/dist/Interfaces/Org/index.d.ts +29 -29
  150. package/dist/Interfaces/Org/index.js +12 -12
  151. package/dist/Interfaces/Payment/index.d.ts +13 -13
  152. package/dist/Interfaces/Payment/index.js +2 -2
  153. package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
  154. package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
  155. package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
  156. package/dist/Interfaces/Product/IImportProduct.js +971 -971
  157. package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
  158. package/dist/Interfaces/Product/IInventoryItem.js +36 -36
  159. package/dist/Interfaces/Product/IPricing.d.ts +177 -177
  160. package/dist/Interfaces/Product/IPricing.js +174 -174
  161. package/dist/Interfaces/Product/index.d.ts +121 -121
  162. package/dist/Interfaces/Product/index.js +56 -56
  163. package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
  164. package/dist/Interfaces/ProductAttribute/index.js +2 -2
  165. package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
  166. package/dist/Interfaces/PromiseToPurchase/BankType.js +42 -42
  167. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
  168. package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
  169. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
  170. package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
  171. package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
  172. package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
  173. package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
  174. package/dist/Interfaces/PurchaseOrder/index.js +2 -2
  175. package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
  176. package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
  177. package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
  178. package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
  179. package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
  180. package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
  181. package/dist/Interfaces/Quote/index.d.ts +5 -5
  182. package/dist/Interfaces/Quote/index.js +2 -2
  183. package/dist/Interfaces/Refunds/index.d.ts +106 -106
  184. package/dist/Interfaces/Refunds/index.js +2 -2
  185. package/dist/Interfaces/Rules/IDiscountRule.d.ts +137 -137
  186. package/dist/Interfaces/Rules/IDiscountRule.js +107 -107
  187. package/dist/Interfaces/Schedule/index.d.ts +47 -46
  188. package/dist/Interfaces/Schedule/index.js +2 -2
  189. package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
  190. package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
  191. package/dist/Interfaces/Services/IService.d.ts +12 -12
  192. package/dist/Interfaces/Services/IService.js +2 -2
  193. package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
  194. package/dist/Interfaces/Services/IServiceSecret.js +2 -2
  195. package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
  196. package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
  197. package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
  198. package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
  199. package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
  200. package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
  201. package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
  202. package/dist/Interfaces/Shipping/Shiptime/order.js +48 -48
  203. package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
  204. package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
  205. package/dist/Interfaces/Slider/GR.d.ts +130 -130
  206. package/dist/Interfaces/Slider/GR.js +271 -271
  207. package/dist/Interfaces/Slider/index.d.ts +14 -14
  208. package/dist/Interfaces/Slider/index.js +2 -2
  209. package/dist/Interfaces/Space/IMember.d.ts +16 -16
  210. package/dist/Interfaces/Space/IMember.js +9 -9
  211. package/dist/Interfaces/Space/index.d.ts +387 -387
  212. package/dist/Interfaces/Space/index.js +123 -123
  213. package/dist/Interfaces/Specials/gr.d.ts +61 -61
  214. package/dist/Interfaces/Specials/gr.js +2 -2
  215. package/dist/Interfaces/StockNotification/index.d.ts +7 -7
  216. package/dist/Interfaces/StockNotification/index.js +2 -2
  217. package/dist/Interfaces/Store/index.d.ts +62 -62
  218. package/dist/Interfaces/Store/index.js +27 -27
  219. package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
  220. package/dist/Interfaces/Supplier/ICommand.js +2 -2
  221. package/dist/Interfaces/Supplier/index.d.ts +36 -36
  222. package/dist/Interfaces/Supplier/index.js +24 -24
  223. package/dist/Interfaces/Tag/index.d.ts +18 -18
  224. package/dist/Interfaces/Tag/index.js +2 -2
  225. package/dist/Interfaces/Tax/index.d.ts +12 -12
  226. package/dist/Interfaces/Tax/index.js +2 -2
  227. package/dist/Interfaces/TransferRequest/index.d.ts +59 -59
  228. package/dist/Interfaces/TransferRequest/index.js +31 -31
  229. package/dist/Interfaces/Translation/index.d.ts +4 -4
  230. package/dist/Interfaces/Translation/index.js +2 -2
  231. package/dist/Interfaces/Update/index.d.ts +10 -10
  232. package/dist/Interfaces/Update/index.js +2 -2
  233. package/dist/Interfaces/User/IUser.d.ts +65 -65
  234. package/dist/Interfaces/User/IUser.js +8 -8
  235. package/dist/Interfaces/Version/index.d.ts +11 -11
  236. package/dist/Interfaces/Version/index.js +2 -2
  237. package/dist/Interfaces/Wishlist/index.d.ts +7 -7
  238. package/dist/Interfaces/Wishlist/index.js +2 -2
  239. package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
  240. package/dist/constants/Interfaces/IBaseApi.js +2 -2
  241. package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
  242. package/dist/constants/Interfaces/IEndpointResult.js +2 -2
  243. package/dist/constants/enums.d.ts +6 -6
  244. package/dist/constants/enums.js +10 -10
  245. package/dist/constants/version.d.ts +2 -2
  246. package/dist/constants/version.js +5 -5
  247. package/dist/index.d.ts +32 -32
  248. package/dist/index.js +416 -416
  249. package/dist/lib/Attribute/index.d.ts +14 -14
  250. package/dist/lib/Attribute/index.js +248 -248
  251. package/dist/lib/BGJob/index.d.ts +9 -9
  252. package/dist/lib/BGJob/index.js +376 -376
  253. package/dist/lib/BackgroundWorker/index.d.ts +34 -34
  254. package/dist/lib/BackgroundWorker/index.js +72 -72
  255. package/dist/lib/Blog/BlogArticle.d.ts +5 -5
  256. package/dist/lib/Blog/BlogArticle.js +28 -28
  257. package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
  258. package/dist/lib/Blog/BlogAuthor.js +28 -28
  259. package/dist/lib/Blog/BlogCategory.d.ts +5 -5
  260. package/dist/lib/Blog/BlogCategory.js +28 -28
  261. package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
  262. package/dist/lib/Blog/BlogKeyword.js +28 -28
  263. package/dist/lib/Booking/index.d.ts +65 -65
  264. package/dist/lib/Booking/index.js +839 -839
  265. package/dist/lib/Brand/index.d.ts +17 -17
  266. package/dist/lib/Brand/index.js +275 -275
  267. package/dist/lib/Cart/index.d.ts +186 -186
  268. package/dist/lib/Cart/index.js +3982 -3982
  269. package/dist/lib/Catalogue/index.d.ts +9 -9
  270. package/dist/lib/Catalogue/index.js +207 -207
  271. package/dist/lib/Category/index.d.ts +26 -26
  272. package/dist/lib/Category/index.js +361 -361
  273. package/dist/lib/Class/index.d.ts +12 -12
  274. package/dist/lib/Class/index.js +159 -159
  275. package/dist/lib/Consent/index.d.ts +4 -4
  276. package/dist/lib/Consent/index.js +79 -79
  277. package/dist/lib/Customer/index.d.ts +10 -10
  278. package/dist/lib/Customer/index.js +147 -147
  279. package/dist/lib/Declination/index.d.ts +9 -9
  280. package/dist/lib/Declination/index.js +84 -84
  281. package/dist/lib/Discount/index.d.ts +18 -18
  282. package/dist/lib/Discount/index.js +759 -759
  283. package/dist/lib/ElasticSearch/index.d.ts +8 -8
  284. package/dist/lib/ElasticSearch/index.js +101 -101
  285. package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
  286. package/dist/lib/Email/AbandonedCartEmail.js +78 -78
  287. package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
  288. package/dist/lib/Email/AccountConfirmationEmail.js +95 -95
  289. package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
  290. package/dist/lib/Email/AdminOrderConfirmationEmail.js +78 -78
  291. package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
  292. package/dist/lib/Email/ApplicationEmail.js +78 -78
  293. package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
  294. package/dist/lib/Email/BackInStockEmail.js +78 -78
  295. package/dist/lib/Email/ContactEmail.d.ts +8 -8
  296. package/dist/lib/Email/ContactEmail.js +78 -78
  297. package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
  298. package/dist/lib/Email/CustomerBookingAdminEmail.js +78 -78
  299. package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
  300. package/dist/lib/Email/CustomerBookingEmail.js +78 -78
  301. package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
  302. package/dist/lib/Email/OrderConfirmationEmail.js +78 -78
  303. package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
  304. package/dist/lib/Email/OrderDenounciationEmail.js +78 -78
  305. package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
  306. package/dist/lib/Email/OrderSampleEmail.js +78 -78
  307. package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
  308. package/dist/lib/Email/OtherTypeEmails.js +90 -90
  309. package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
  310. package/dist/lib/Email/PasswordResetEmail.js +78 -78
  311. package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
  312. package/dist/lib/Email/PhotoShootEmail.js +78 -78
  313. package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
  314. package/dist/lib/Email/PickUpConfirmation.js +78 -78
  315. package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
  316. package/dist/lib/Email/ShippingConfirmation.js +78 -78
  317. package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
  318. package/dist/lib/Email/WelcomeEmail.js +78 -78
  319. package/dist/lib/Email/index.d.ts +8 -8
  320. package/dist/lib/Email/index.js +82 -82
  321. package/dist/lib/ExternalService/Ebay.d.ts +62 -62
  322. package/dist/lib/ExternalService/Ebay.js +184 -184
  323. package/dist/lib/ExternalService/index.d.ts +5 -5
  324. package/dist/lib/ExternalService/index.js +28 -28
  325. package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
  326. package/dist/lib/FirstOrderTracking/index.js +28 -28
  327. package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
  328. package/dist/lib/Indexed/IndexedCart.js +194 -194
  329. package/dist/lib/Indexed/Product.d.ts +17 -17
  330. package/dist/lib/Indexed/Product.js +116 -116
  331. package/dist/lib/Inventory/index.d.ts +32 -32
  332. package/dist/lib/Inventory/index.js +579 -579
  333. package/dist/lib/Invoice/index.d.ts +5 -5
  334. package/dist/lib/Invoice/index.js +28 -28
  335. package/dist/lib/MarketplacePublication/index.d.ts +9 -9
  336. package/dist/lib/MarketplacePublication/index.js +220 -220
  337. package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
  338. package/dist/lib/MongoDB/BaseAPI.js +308 -308
  339. package/dist/lib/Order/index.d.ts +7 -7
  340. package/dist/lib/Order/index.js +62 -62
  341. package/dist/lib/Org/index.d.ts +26 -26
  342. package/dist/lib/Org/index.js +283 -283
  343. package/dist/lib/PandaPay/index.d.ts +16 -16
  344. package/dist/lib/PandaPay/index.js +218 -218
  345. package/dist/lib/Paysafe/index.d.ts +11 -11
  346. package/dist/lib/Paysafe/index.js +100 -100
  347. package/dist/lib/Product/index.d.ts +143 -143
  348. package/dist/lib/Product/index.js +1326 -1326
  349. package/dist/lib/ProductAttribute/index.d.ts +15 -15
  350. package/dist/lib/ProductAttribute/index.js +114 -114
  351. package/dist/lib/PromiseToPurchase/index.d.ts +37 -37
  352. package/dist/lib/PromiseToPurchase/index.js +475 -475
  353. package/dist/lib/PurchaseOrder/index.d.ts +9 -9
  354. package/dist/lib/PurchaseOrder/index.js +72 -72
  355. package/dist/lib/Schedule/index.d.ts +5 -5
  356. package/dist/lib/Schedule/index.js +30 -30
  357. package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
  358. package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
  359. package/dist/lib/Service/index.d.ts +5 -5
  360. package/dist/lib/Service/index.js +57 -57
  361. package/dist/lib/Shipment/index.d.ts +28 -28
  362. package/dist/lib/Shipment/index.js +562 -562
  363. package/dist/lib/Slider/index.d.ts +16 -16
  364. package/dist/lib/Slider/index.js +235 -235
  365. package/dist/lib/Space/index.d.ts +801 -801
  366. package/dist/lib/Space/index.js +6862 -6862
  367. package/dist/lib/StockNotification/index.d.ts +4 -4
  368. package/dist/lib/StockNotification/index.js +26 -26
  369. package/dist/lib/Store/index.d.ts +5 -5
  370. package/dist/lib/Store/index.js +30 -30
  371. package/dist/lib/Supplier/Command.d.ts +5 -5
  372. package/dist/lib/Supplier/Command.js +28 -28
  373. package/dist/lib/Supplier/index.d.ts +25 -25
  374. package/dist/lib/Supplier/index.js +86 -86
  375. package/dist/lib/Tags/index.d.ts +6 -6
  376. package/dist/lib/Tags/index.js +84 -84
  377. package/dist/lib/Tax/index.d.ts +8 -8
  378. package/dist/lib/Tax/index.js +136 -136
  379. package/dist/lib/TransferRequest/index.d.ts +21 -21
  380. package/dist/lib/TransferRequest/index.js +302 -302
  381. package/dist/lib/Update/index.d.ts +10 -10
  382. package/dist/lib/Update/index.js +71 -71
  383. package/dist/lib/User/index.d.ts +33 -33
  384. package/dist/lib/User/index.js +360 -360
  385. package/dist/lib/Wishlist/index.d.ts +5 -5
  386. package/dist/lib/Wishlist/index.js +28 -28
  387. package/dist/lib/base.d.ts +14 -14
  388. package/dist/lib/base.js +135 -135
  389. package/dist/lib/baseService.d.ts +17 -17
  390. package/dist/lib/baseService.js +113 -113
  391. package/dist/rules/GR/constants/data.d.ts +25 -25
  392. package/dist/rules/GR/constants/data.js +54 -54
  393. package/dist/rules/GR/constants/products.d.ts +8 -8
  394. package/dist/rules/GR/constants/products.js +234 -234
  395. package/dist/rules/GR/interfaces/cart.d.ts +83 -83
  396. package/dist/rules/GR/interfaces/cart.js +51 -51
  397. package/dist/rules/GR/interfaces/data.d.ts +97 -97
  398. package/dist/rules/GR/interfaces/data.js +104 -104
  399. package/dist/rules/GR/interfaces/products.d.ts +61 -61
  400. package/dist/rules/GR/interfaces/products.js +10 -10
  401. package/dist/rules/GR/utils/cart.d.ts +53 -53
  402. package/dist/rules/GR/utils/cart.js +767 -767
  403. package/dist/rules/GR/utils/data.d.ts +3 -3
  404. package/dist/rules/GR/utils/data.js +25 -25
  405. package/dist/rules/GR/utils/expedition.d.ts +65 -65
  406. package/dist/rules/GR/utils/expedition.js +1676 -1676
  407. package/dist/rules/GR/utils/g2.d.ts +174 -174
  408. package/dist/rules/GR/utils/g2.js +1025 -1025
  409. package/dist/rules/GR/utils/invoices.d.ts +16 -16
  410. package/dist/rules/GR/utils/invoices.js +181 -181
  411. package/dist/rules/GR/utils/products.d.ts +96 -96
  412. package/dist/rules/GR/utils/products.js +1085 -1085
  413. package/dist/rules/GR/utils/upsells.d.ts +75 -75
  414. package/dist/rules/GR/utils/upsells.js +278 -278
  415. package/dist/services/database/BaseProvider.d.ts +29 -29
  416. package/dist/services/database/BaseProvider.js +77 -77
  417. package/dist/services/database/BatchUtils.d.ts +14 -14
  418. package/dist/services/database/BatchUtils.js +88 -88
  419. package/dist/services/database/Config.d.ts +2 -2
  420. package/dist/services/database/Config.js +5 -5
  421. package/dist/services/database/DatabaseService.d.ts +41 -41
  422. package/dist/services/database/DatabaseService.js +297 -297
  423. package/dist/services/database/FirebaseProvider.d.ts +17 -17
  424. package/dist/services/database/FirebaseProvider.js +312 -312
  425. package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
  426. package/dist/services/database/NotFirebaseProvider.js +380 -380
  427. package/dist/services/g2/G2OrderSlip.d.ts +42 -42
  428. package/dist/services/g2/G2OrderSlip.js +264 -264
  429. package/dist/services/g2/utils.d.ts +9 -9
  430. package/dist/services/g2/utils.js +919 -919
  431. package/dist/services/logs/index.d.ts +20 -20
  432. package/dist/services/logs/index.js +126 -126
  433. package/dist/utils/algolia.d.ts +6 -6
  434. package/dist/utils/algolia.js +22 -22
  435. package/dist/utils/anonymisation.d.ts +30 -30
  436. package/dist/utils/anonymisation.js +264 -264
  437. package/dist/utils/array.d.ts +5 -5
  438. package/dist/utils/array.js +36 -36
  439. package/dist/utils/aws.d.ts +14 -14
  440. package/dist/utils/aws.js +220 -220
  441. package/dist/utils/booking.d.ts +22 -22
  442. package/dist/utils/booking.js +175 -175
  443. package/dist/utils/cart.d.ts +69 -69
  444. package/dist/utils/cart.js +656 -656
  445. package/dist/utils/cmv.d.ts +10 -10
  446. package/dist/utils/cmv.js +107 -107
  447. package/dist/utils/console.d.ts +6 -6
  448. package/dist/utils/console.js +121 -121
  449. package/dist/utils/context.d.ts +19 -19
  450. package/dist/utils/context.js +41 -41
  451. package/dist/utils/currency.d.ts +6 -6
  452. package/dist/utils/currency.js +62 -62
  453. package/dist/utils/data.d.ts +31 -31
  454. package/dist/utils/data.js +300 -300
  455. package/dist/utils/date.d.ts +1 -1
  456. package/dist/utils/date.js +16 -16
  457. package/dist/utils/dimensions.d.ts +3 -3
  458. package/dist/utils/dimensions.js +18 -18
  459. package/dist/utils/discount.d.ts +46 -46
  460. package/dist/utils/discount.js +981 -981
  461. package/dist/utils/errors.d.ts +113 -113
  462. package/dist/utils/errors.js +113 -113
  463. package/dist/utils/file-admin.d.ts +8 -8
  464. package/dist/utils/file-admin.js +94 -94
  465. package/dist/utils/file.d.ts +38 -38
  466. package/dist/utils/file.js +318 -318
  467. package/dist/utils/firebase-admin.d.ts +2 -2
  468. package/dist/utils/firebase-admin.js +118 -118
  469. package/dist/utils/firebase.d.ts +41 -41
  470. package/dist/utils/firebase.js +220 -220
  471. package/dist/utils/import.d.ts +1 -1
  472. package/dist/utils/import.js +81 -81
  473. package/dist/utils/inventories.d.ts +34 -34
  474. package/dist/utils/inventories.js +432 -432
  475. package/dist/utils/locale.d.ts +13 -13
  476. package/dist/utils/locale.js +67 -67
  477. package/dist/utils/mailchimp.d.ts +58 -58
  478. package/dist/utils/mailchimp.js +735 -735
  479. package/dist/utils/mongodb.d.ts +1 -1
  480. package/dist/utils/mongodb.js +68 -68
  481. package/dist/utils/object.d.ts +12 -12
  482. package/dist/utils/object.js +129 -129
  483. package/dist/utils/payment.d.ts +10 -10
  484. package/dist/utils/payment.js +25 -25
  485. package/dist/utils/products.d.ts +26 -26
  486. package/dist/utils/products.js +301 -301
  487. package/dist/utils/promiseToPurchase.d.ts +56 -56
  488. package/dist/utils/promiseToPurchase.js +228 -228
  489. package/dist/utils/prosprsearch.d.ts +21 -21
  490. package/dist/utils/prosprsearch.js +276 -276
  491. package/dist/utils/refunds.d.ts +2 -2
  492. package/dist/utils/refunds.js +21 -21
  493. package/dist/utils/sdc.d.ts +10 -10
  494. package/dist/utils/sdc.js +1308 -1308
  495. package/dist/utils/searchIndexes.d.ts +21 -21
  496. package/dist/utils/searchIndexes.js +318 -318
  497. package/dist/utils/services.d.ts +40 -40
  498. package/dist/utils/services.js +407 -407
  499. package/dist/utils/shipment.d.ts +110 -110
  500. package/dist/utils/shipment.js +410 -410
  501. package/dist/utils/simpletexting.d.ts +2 -2
  502. package/dist/utils/simpletexting.js +91 -91
  503. package/dist/utils/sliders.d.ts +4 -4
  504. package/dist/utils/sliders.js +70 -70
  505. package/dist/utils/string.d.ts +16 -16
  506. package/dist/utils/string.js +194 -194
  507. package/dist/utils/tools.d.ts +1 -1
  508. package/dist/utils/tools.js +49 -49
  509. package/dist/utils/transferRequests.d.ts +16 -16
  510. package/dist/utils/transferRequests.js +33 -33
  511. package/dist/utils/update.d.ts +7 -7
  512. package/dist/utils/update.js +245 -245
  513. package/dist/utils/weight.d.ts +3 -3
  514. package/dist/utils/weight.js +18 -18
  515. package/dist/utils/zones.d.ts +11 -11
  516. package/dist/utils/zones.js +313 -313
  517. package/package.json +110 -110
  518. package/publish.sh +143 -143
  519. package/readme.md +182 -182
  520. package/dist/lib/Queue/index.d.ts +0 -40
  521. package/dist/lib/Queue/index.js +0 -255
  522. package/dist/lib/Queue/index.js.map +0 -1
@@ -1,982 +1,982 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __rest = (this && this.__rest) || function (s, e) {
14
- var t = {};
15
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
- t[p] = s[p];
17
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
- t[p[i]] = s[p[i]];
21
- }
22
- return t;
23
- };
24
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
26
- if (ar || !(i in from)) {
27
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
28
- ar[i] = from[i];
29
- }
30
- }
31
- return to.concat(ar || Array.prototype.slice.call(from));
32
- };
33
- var __importDefault = (this && this.__importDefault) || function (mod) {
34
- return (mod && mod.__esModule) ? mod : { "default": mod };
35
- };
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.getPaymentIncentiveDiscount = exports.getPaymentIncentiveDiscountInfo = exports.getAfterTaxesPromoInCart = exports.getAfterTaxesPromosTotalAmount = exports.checkIfCouldApplyIncentivePromo = exports.getOnlyServicesAndFeesSubtotal = exports.getStandardCartPromoFromDiscount = exports.applyDiscountToCart = exports.getItemCategorySlugArray = exports.getResultAppliedDiscountSkus = exports.getSkuArrayForPromo = exports.applyDiscountToPrice = exports.applyDiscountRulesOnProduct = exports.getNewDiscountPriceFromTierPricing = exports.applyTierPricing = exports.getTierPricingToApply = exports.checkPromoCodeEligibility = exports.getCartPromoType = exports.checkAttributes = exports.getResultRuleDetail = exports.shouldApplyRuleToDeclination = exports.getAppliedAmountsForSubtotalPromosOnCart = exports.getCartPromosByAppliesTo = exports.getSubtotalWithoutProductPromos = exports.isPromoAPercentage = exports.shouldCheckPromoCode = exports.getCartPromo = void 0;
38
- var IDiscountRule_1 = require("../Interfaces/Rules/IDiscountRule");
39
- var Cart_1 = require("../Interfaces/Cart");
40
- var flatten_1 = __importDefault(require("lodash/flatten"));
41
- var round_1 = __importDefault(require("lodash/round"));
42
- var sumBy_1 = __importDefault(require("lodash/sumBy"));
43
- var toNumber_1 = __importDefault(require("lodash/toNumber"));
44
- var orderBy_1 = __importDefault(require("lodash/orderBy"));
45
- var locale_1 = require("./locale");
46
- var currency_1 = require("./currency");
47
- var moment_1 = __importDefault(require("moment"));
48
- var data_1 = require("./data");
49
- var products_1 = require("./products");
50
- var cart_1 = require("../rules/GR/utils/cart");
51
- var cart_2 = require("../rules/GR/interfaces/cart");
52
- var object_1 = require("./object");
53
- var data_2 = require("../rules/GR/constants/data");
54
- var g2_1 = require("../rules/GR/utils/g2");
55
- var getCartPromo = function (cartData) {
56
- if (!!!cartData.cart_promo_applied && !!!cartData.cart_promos_applied)
57
- return;
58
- return !!cartData.cart_promo_applied
59
- ? [cartData.cart_promo_applied]
60
- : !!cartData.cart_promos_applied
61
- ? cartData.cart_promos_applied
62
- : [];
63
- };
64
- exports.getCartPromo = getCartPromo;
65
- var shouldCheckPromoCode = function (cartData) {
66
- return ((!!cartData.cart_promos_applied && !!cartData.cart_promos_applied.some(function (p) { return p.promo_code; })) ||
67
- (!!cartData.cart_promo_applied && !!cartData.cart_promo_applied.promo_code));
68
- };
69
- exports.shouldCheckPromoCode = shouldCheckPromoCode;
70
- var isPromoAPercentage = function (promo, options) {
71
- if (options === void 0) { options = {}; }
72
- var promoPercentOptions = [
73
- IDiscountRule_1.ResultActionEnum.PERCENT,
74
- IDiscountRule_1.ResultActionEnum.PERCENT_CATEGORY,
75
- IDiscountRule_1.ResultActionEnum.PERCENT_SKU
76
- ];
77
- if (options.includePaymentIncentiveInCheck)
78
- promoPercentOptions.push(IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES);
79
- var propertyToCheck = (0, object_1.recursiveCheckObject)(promo, 'result.action') || (0, object_1.recursiveCheckObject)(promo, 'amount_unit');
80
- if (!!!propertyToCheck && options.defaultToPercent)
81
- propertyToCheck = IDiscountRule_1.ResultActionEnum.PERCENT;
82
- return !!propertyToCheck && promoPercentOptions.includes(propertyToCheck);
83
- };
84
- exports.isPromoAPercentage = isPromoAPercentage;
85
- var getSubtotalWithoutProductPromos = function (cartData, itemPromos) {
86
- var currentSubtotal = cartData.subtotalWithoutPromotions || cartData.subtotal;
87
- var allProductSubtotalAmounts = (0, sumBy_1.default)(itemPromos, function (i) {
88
- return !!(0, data_1.getPromoTotalAmount)(cartData.items, i, 'number')
89
- ? (0, data_1.getPromoTotalAmount)(cartData.items, i, 'number')
90
- : 0;
91
- });
92
- return currentSubtotal - allProductSubtotalAmounts;
93
- };
94
- exports.getSubtotalWithoutProductPromos = getSubtotalWithoutProductPromos;
95
- var getCartPromosByAppliesTo = function (cartData) {
96
- var appliedPromos = (0, exports.getCartPromo)(cartData) || [];
97
- var subtotalPromos = appliedPromos.filter(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.SUBTOTAL; });
98
- var itemPromos = appliedPromos.filter(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.PRODUCT; });
99
- var afterTaxesPromos = appliedPromos.filter(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES; });
100
- return {
101
- subtotal: subtotalPromos,
102
- items: itemPromos,
103
- afterTaxes: afterTaxesPromos
104
- };
105
- };
106
- exports.getCartPromosByAppliesTo = getCartPromosByAppliesTo;
107
- var getAppliedAmountsForSubtotalPromosOnCart = function (cartData) {
108
- var activePromos = (0, exports.getCartPromosByAppliesTo)(cartData);
109
- var currentSubtotal = (0, exports.getSubtotalWithoutProductPromos)(cartData, activePromos.items);
110
- var promoAmounts = {};
111
- for (var _i = 0, _a = activePromos.subtotal.filter(function (p) { return !!p.discount_id; }); _i < _a.length; _i++) {
112
- var promo = _a[_i];
113
- if (!!!promo.amount_removed)
114
- continue;
115
- var amountRemoved = promo.amount_removed;
116
- var serviceAndFeesTotal = (0, exports.getOnlyServicesAndFeesSubtotal)(cartData, activePromos.items);
117
- if ((0, exports.isPromoAPercentage)(promo, { defaultToPercent: true })) {
118
- if (!!promo.exclude_services_and_fees) {
119
- amountRemoved = (0, round_1.default)((promo.amount_removed / 100) * (currentSubtotal - serviceAndFeesTotal), 3);
120
- }
121
- else {
122
- amountRemoved = (0, round_1.default)((promo.amount_removed / 100) * currentSubtotal, 3);
123
- }
124
- }
125
- promoAmounts[promo.discount_id] = amountRemoved;
126
- currentSubtotal -= amountRemoved;
127
- }
128
- return promoAmounts;
129
- };
130
- exports.getAppliedAmountsForSubtotalPromosOnCart = getAppliedAmountsForSubtotalPromosOnCart;
131
- var shouldApplyRuleToDeclination = function (discount_rule, declination) {
132
- if (!!!discount_rule.rules || !!!discount_rule.rules.length)
133
- return true;
134
- var currentDiscountMap = discount_rule.rules.map(function (rule) {
135
- var todayDate = (0, moment_1.default)().format('YYYY-MM-DD');
136
- switch (rule.field) {
137
- case IDiscountRule_1.RuleFieldEnum.PRODUCT_PRICE:
138
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
139
- return [rule.condition, (0, exports.getResultRuleDetail)(ruleDetail, declination.price.regular.amount)];
140
- }));
141
- case IDiscountRule_1.RuleFieldEnum.SKU:
142
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
143
- return [rule.condition, (0, exports.getResultRuleDetail)(ruleDetail, declination.sku)];
144
- }));
145
- case IDiscountRule_1.RuleFieldEnum.DECLINATION:
146
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
147
- return [rule.condition, declination.sku === ruleDetail.value[0]];
148
- }));
149
- case IDiscountRule_1.RuleFieldEnum.DATE:
150
- case IDiscountRule_1.RuleFieldEnum.WEEKDAY:
151
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
152
- return [rule.condition, (0, exports.getResultRuleDetail)(ruleDetail, (0, moment_1.default)(todayDate).toDate())];
153
- }));
154
- case IDiscountRule_1.RuleFieldEnum.ATTRIBUTE:
155
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
156
- return [rule.condition, (0, exports.checkAttributes)(ruleDetail, declination.attributes)];
157
- }));
158
- default:
159
- return [IDiscountRule_1.RuleConditionEnum.AND, true];
160
- }
161
- });
162
- return _checkRuleApplicationArray(currentDiscountMap);
163
- };
164
- exports.shouldApplyRuleToDeclination = shouldApplyRuleToDeclination;
165
- var getResultRuleDetail = function (ruleDetail, cartValue, log) {
166
- var ruleRespected = false;
167
- var isDate = false;
168
- try {
169
- var amountValue = void 0;
170
- var amountValue2 = void 0;
171
- switch (true) {
172
- case typeof cartValue === 'number':
173
- if (ruleDetail.operator === 'between') {
174
- amountValue = Number(ruleDetail.value[0].toString().replace(',', '.')) || [];
175
- amountValue2 = Number(ruleDetail.value[1].toString().replace(',', '.')) || [];
176
- }
177
- else {
178
- amountValue = ruleDetail.value.map(function (v) { return Number(v.toString().replace(',', '.')); }) || [];
179
- amountValue2 = 0 || [];
180
- }
181
- break;
182
- case typeof cartValue === 'string' && !!!moment_1.default.isDate((0, data_1.formatDate)(cartValue)):
183
- if (ruleDetail.operator === 'between') {
184
- amountValue = ruleDetail.value[0] || [];
185
- amountValue2 = ruleDetail.value[1] || [];
186
- }
187
- else {
188
- amountValue2 = [];
189
- amountValue = ruleDetail.value || [];
190
- }
191
- break;
192
- default:
193
- if (!!log)
194
- console.log('HERE!');
195
- cartValue = (0, data_1.formatDate)(cartValue);
196
- if (typeof ruleDetail.value[0] === 'number') {
197
- if ((0, moment_1.default)(cartValue).isValid())
198
- cartValue = (0, moment_1.default)(cartValue).day();
199
- amountValue = ruleDetail.value || [];
200
- }
201
- else {
202
- isDate = true;
203
- amountValue = (0, moment_1.default)(ruleDetail.value[0]);
204
- if (!!ruleDetail.value[1] && moment_1.default.isDate(ruleDetail.value[1])) {
205
- amountValue2 = (0, moment_1.default)(ruleDetail.value[1]);
206
- }
207
- else {
208
- amountValue2 = (0, moment_1.default)();
209
- }
210
- switch (ruleDetail.operator) {
211
- case '==':
212
- ruleRespected = amountValue.isSame((0, moment_1.default)(cartValue), 'date');
213
- break;
214
- case '!=':
215
- ruleRespected = !!!amountValue.isSame((0, moment_1.default)(cartValue), 'date');
216
- break;
217
- case '<=':
218
- ruleRespected = (0, moment_1.default)(cartValue).isSameOrBefore(amountValue, 'date');
219
- break;
220
- case '>=':
221
- ruleRespected = (0, moment_1.default)(cartValue).isSameOrAfter(amountValue, 'date');
222
- break;
223
- case '<':
224
- ruleRespected = (0, moment_1.default)(cartValue).isBefore(amountValue, 'date');
225
- break;
226
- case '>':
227
- ruleRespected = (0, moment_1.default)(cartValue).isAfter(amountValue, 'date');
228
- break;
229
- case 'between':
230
- ruleRespected = (0, moment_1.default)(cartValue).isBetween(amountValue, amountValue2, 'date', '[]');
231
- break;
232
- case 'contains':
233
- default:
234
- ruleRespected = false;
235
- }
236
- }
237
- }
238
- if (!!!isDate) {
239
- if (!Array.isArray(amountValue) && ruleDetail.operator !== 'between') {
240
- amountValue = [amountValue];
241
- }
242
- switch (ruleDetail.operator) {
243
- case '==':
244
- ruleRespected = !!amountValue.some(function (v) { return v === cartValue; });
245
- break;
246
- case '!=':
247
- ruleRespected = !!amountValue.some(function (v) { return v !== cartValue; });
248
- break;
249
- case '<=':
250
- ruleRespected = !!amountValue.some(function (v) { return cartValue <= v; });
251
- break;
252
- case '>=':
253
- ruleRespected = !!amountValue.some(function (v) { return cartValue >= v; });
254
- break;
255
- case '<':
256
- ruleRespected = !!amountValue.some(function (v) { return cartValue < v; });
257
- break;
258
- case '>':
259
- ruleRespected = !!amountValue.some(function (v) { return cartValue > v; });
260
- break;
261
- case 'between':
262
- ruleRespected = cartValue > amountValue && cartValue < amountValue2;
263
- break;
264
- case 'contains':
265
- ruleRespected = !!amountValue.some(function (v) { return cartValue.toString().indexOf(v.toString()) !== -1; });
266
- break;
267
- case 'contains-not':
268
- ruleRespected = !!!amountValue.some(function (v) { return cartValue.toString().indexOf(v.toString()) !== -1; });
269
- break;
270
- }
271
- }
272
- }
273
- catch (error) {
274
- console.log(error.toString());
275
- }
276
- return ruleRespected;
277
- };
278
- exports.getResultRuleDetail = getResultRuleDetail;
279
- var checkAttributes = function (attributeAndValues, arrDeclinationAttributes) {
280
- var parentAttributeID = attributeAndValues.value[0].parentAttribute;
281
- var attributeValues = attributeAndValues.value[0].attributeOptions;
282
- var operator = attributeAndValues.operator;
283
- var matchingAttributes = false;
284
- var _loop_1 = function (declinationAttribute) {
285
- if (!!matchingAttributes)
286
- return { value: true };
287
- if (declinationAttribute.attribute_id !== parentAttributeID)
288
- return "continue";
289
- if (!!declinationAttribute.values) {
290
- matchingAttributes =
291
- operator === '=='
292
- ? attributeValues.some(function (attr) { return declinationAttribute.values.some(function (value) { return value.slug === attr; }); })
293
- : !!!attributeValues.some(function (attr) { return declinationAttribute.values.some(function (value) { return value.slug === attr; }); });
294
- }
295
- };
296
- for (var _i = 0, arrDeclinationAttributes_1 = arrDeclinationAttributes; _i < arrDeclinationAttributes_1.length; _i++) {
297
- var declinationAttribute = arrDeclinationAttributes_1[_i];
298
- var state_1 = _loop_1(declinationAttribute);
299
- if (typeof state_1 === "object")
300
- return state_1.value;
301
- }
302
- return matchingAttributes;
303
- };
304
- exports.checkAttributes = checkAttributes;
305
- var getCartPromoType = function (discount) {
306
- return !!discount.result.action
307
- ? discount.result.action === IDiscountRule_1.ResultActionEnum.GET
308
- ? Cart_1.CartPromoAppliesToEnum.ITEMS
309
- : [IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, IDiscountRule_1.ResultActionEnum.FLATERATE_SHIPPING].includes(discount.result.action)
310
- ? Cart_1.CartPromoAppliesToEnum.SHIPPING
311
- : [
312
- IDiscountRule_1.ResultActionEnum.AMOUNT_SKU,
313
- IDiscountRule_1.ResultActionEnum.PERCENT_SKU,
314
- IDiscountRule_1.ResultActionEnum.AMOUNT_CATEGORY,
315
- IDiscountRule_1.ResultActionEnum.PERCENT_CATEGORY
316
- ].includes(discount.result.action)
317
- ? Cart_1.CartPromoAppliesToEnum.PRODUCT
318
- : [IDiscountRule_1.ResultActionEnum.AMOUNT_AFTER_TAXES, IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES].includes(discount.result.action)
319
- ? Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES
320
- : Cart_1.CartPromoAppliesToEnum.SUBTOTAL
321
- : Cart_1.CartPromoAppliesToEnum.SUBTOTAL;
322
- };
323
- exports.getCartPromoType = getCartPromoType;
324
- var checkPromoCodeEligibility = function (cart, promoCode) {
325
- var _a;
326
- var currentDiscountMap = [];
327
- var promoType = (0, exports.getCartPromoType)(promoCode);
328
- var currentPromos = (_a = (0, exports.getCartPromo)(cart)) !== null && _a !== void 0 ? _a : [];
329
- if (promoType == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES &&
330
- currentPromos.some(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES; })) {
331
- return false;
332
- }
333
- if (promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING && (!!cart.is_pickup || !!!cart.shipping_selected)) {
334
- return false;
335
- }
336
- if (promoType === Cart_1.CartPromoAppliesToEnum.PRODUCT &&
337
- (!!promoCode.result.action_sku || !!promoCode.result.action_categories)) {
338
- var itemsWherePromoApplicable = (0, exports.getResultAppliedDiscountSkus)(cart.items, promoCode);
339
- if (!!!itemsWherePromoApplicable.length)
340
- return false;
341
- }
342
- var rules = promoCode.rules;
343
- if (!!promoCode.noExtraRules || !!!rules || !!!rules.length)
344
- return true;
345
- currentDiscountMap = rules.map(function (rule) { return _checkIfRuleAppliesToCart(rule, promoCode.appliesTo, cart); });
346
- return _checkRuleApplicationArray(currentDiscountMap);
347
- };
348
- exports.checkPromoCodeEligibility = checkPromoCodeEligibility;
349
- var getTierPricingToApply = function (tierPricingToCheck, qte) {
350
- if (!!!tierPricingToCheck)
351
- return;
352
- return tierPricingToCheck.find(function (tp) { return (0, toNumber_1.default)(tp.from) <= qte && (!!!tp.to || (0, toNumber_1.default)(tp.to) >= qte); });
353
- };
354
- exports.getTierPricingToApply = getTierPricingToApply;
355
- var applyTierPricing = function (discountRule, price, space, decimals) {
356
- if (!!!discountRule.rules || !!!discountRule.rules.length)
357
- return [];
358
- if (!!discountRule.draft)
359
- return [];
360
- var rule = discountRule.rules.find(function (_rule) {
361
- return _rule.field === IDiscountRule_1.RuleFieldEnum.QUANTITY && _rule.ruleDetails.find(function (detail) { return detail.operator === 'between'; });
362
- });
363
- if (!!!rule)
364
- return [];
365
- var details = rule.ruleDetails.find(function (detail) { return detail.operator === 'between'; });
366
- if (!!!details)
367
- return [];
368
- return [
369
- {
370
- from: !!!details.value[1] || !!!(0, toNumber_1.default)(details.value[1])
371
- ? details.value[0]
372
- : (0, toNumber_1.default)(details.value[0]) < (0, toNumber_1.default)(details.value[1])
373
- ? details.value[0]
374
- : details.value[1],
375
- to: !!!details.value[1] || !!!(0, toNumber_1.default)(details.value[1])
376
- ? 0
377
- : (0, toNumber_1.default)(details.value[0]) > (0, toNumber_1.default)(details.value[1])
378
- ? details.value[0]
379
- : details.value[1],
380
- price: (0, currency_1.calculateAmountByCurrencyAllDetails)(space, space.preferences.default.currency(), (0, round_1.default)((0, exports.applyDiscountToPrice)(Number(price), discountRule.result), !!decimals ? decimals : 2)),
381
- check_attribute_value: !!discountRule.appliesTo.check_attribute_value
382
- ? discountRule.appliesTo.check_attribute_value
383
- : '',
384
- check_other_items_category: !!discountRule.appliesTo.check_other_items_category
385
- ? discountRule.appliesTo.check_other_items_category
386
- : '',
387
- name: discountRule.name
388
- }
389
- ];
390
- };
391
- exports.applyTierPricing = applyTierPricing;
392
- var getNewDiscountPriceFromTierPricing = function (item, setOriginalPrice, originalDecli) {
393
- var tierPricingToApply = (0, exports.getTierPricingToApply)(item.tier_pricing, item.qte);
394
- var currentDiscountPrice = item.discount_price;
395
- var currentIsTierPricing = !!currentDiscountPrice && currentDiscountPrice.price_type === 'tierpricing';
396
- var originalDiscountAmount = !!currentDiscountPrice ? currentDiscountPrice.original_amount : null;
397
- var prevDiscountPrice = null;
398
- if (!!currentIsTierPricing && typeof originalDiscountAmount === 'number') {
399
- var price_type = currentDiscountPrice.price_type, original_amount = currentDiscountPrice.original_amount, rest = __rest(currentDiscountPrice, ["price_type", "original_amount"]);
400
- prevDiscountPrice = __assign(__assign({}, rest), { amount: original_amount });
401
- }
402
- if (!!!tierPricingToApply) {
403
- if (!!setOriginalPrice && !!currentDiscountPrice) {
404
- var amountToSet = item.regular_price.amount;
405
- if (!!originalDecli) {
406
- var calculatedPrice = (0, products_1.getLowestPrice)(__assign(__assign({}, originalDecli), { qte: item.qte }));
407
- amountToSet = calculatedPrice.price.amount;
408
- }
409
- return __assign(__assign({}, currentDiscountPrice), { original_amount: !!originalDecli ? amountToSet : item.regular_price.amount });
410
- }
411
- return !!currentIsTierPricing ? prevDiscountPrice : currentDiscountPrice !== null && currentDiscountPrice !== void 0 ? currentDiscountPrice : null;
412
- }
413
- if (!!setOriginalPrice && !!currentDiscountPrice) {
414
- return __assign(__assign({}, currentDiscountPrice), { original_amount: tierPricingToApply.price.amount });
415
- }
416
- return __assign(__assign(__assign({}, tierPricingToApply.price), { price_type: 'tierpricing' }), (!!currentDiscountPrice
417
- ? {
418
- original_amount: typeof originalDiscountAmount === 'number' ? originalDiscountAmount : currentDiscountPrice.amount
419
- }
420
- : {}));
421
- };
422
- exports.getNewDiscountPriceFromTierPricing = getNewDiscountPriceFromTierPricing;
423
- var applyDiscountRulesOnProduct = function (discount_rules, amount, space) {
424
- if (!!!discount_rules || !!!discount_rules.length)
425
- return undefined;
426
- var discountIndex = 0;
427
- var allPromo = discount_rules.filter(function (discount_rule) { return discount_rule.discountRule_type !== 'tier-pricing'; });
428
- var current_promo_price = Number(amount);
429
- for (var _i = 0, allPromo_1 = allPromo; _i < allPromo_1.length; _i++) {
430
- var discount = allPromo_1[_i];
431
- if (discountIndex > 0 && !discount.is_stackable)
432
- break;
433
- var amountToRemove = (0, exports.isPromoAPercentage)(discount)
434
- ? (Number(discount.result.action_value) / 100) * current_promo_price
435
- : Number(discount.result.action_value);
436
- current_promo_price -= amountToRemove;
437
- discountIndex++;
438
- }
439
- var spaceProductPrefs = space.preferences.products.get();
440
- var allowNegativePrices = !!spaceProductPrefs && !!spaceProductPrefs.allow_negative_prices;
441
- return current_promo_price === Number(amount)
442
- ? undefined
443
- : current_promo_price < 0 && !!!allowNegativePrices
444
- ? 0
445
- : current_promo_price;
446
- };
447
- exports.applyDiscountRulesOnProduct = applyDiscountRulesOnProduct;
448
- var applyDiscountToPrice = function (initial, discountResultObj) {
449
- return discountResultObj.action === 'amount'
450
- ? initial - Number(discountResultObj.action_value)
451
- : initial * (1 - Number(discountResultObj.action_value) / 100);
452
- };
453
- exports.applyDiscountToPrice = applyDiscountToPrice;
454
- var getSkuArrayForPromo = function (valueToConvert) {
455
- if (!!Array.isArray(valueToConvert))
456
- return valueToConvert;
457
- return [valueToConvert];
458
- };
459
- exports.getSkuArrayForPromo = getSkuArrayForPromo;
460
- var getResultAppliedDiscountSkus = function (cartItems, promoToCheck) {
461
- var _a, _b, _c;
462
- var action = (_a = promoToCheck.result.action) !== null && _a !== void 0 ? _a : '';
463
- var skuArray = (0, exports.getSkuArrayForPromo)((_b = promoToCheck.result.action_sku) !== null && _b !== void 0 ? _b : []);
464
- var categoryArray = (_c = promoToCheck.result.action_categories) !== null && _c !== void 0 ? _c : [];
465
- var productsToApplyPromo = cartItems
466
- .filter(function (item) {
467
- if (!!['amount_category', 'percent_category'].includes(action)) {
468
- var categorySlugsToCheck_1 = (0, exports.getItemCategorySlugArray)(item.categories);
469
- return categoryArray.some(function (cat) { return categorySlugsToCheck_1.includes(cat); });
470
- }
471
- return skuArray.includes(item.sku);
472
- })
473
- .map(function (item) { return item.sku; });
474
- return productsToApplyPromo;
475
- };
476
- exports.getResultAppliedDiscountSkus = getResultAppliedDiscountSkus;
477
- var getItemCategorySlugArray = function (itemCategories) {
478
- if (!!!itemCategories)
479
- return [];
480
- var orderedByLevel = (0, orderBy_1.default)(Object.entries(itemCategories), function (_a) {
481
- var key = _a[0], _value = _a[1];
482
- return key;
483
- });
484
- var lastLevelCategory = !!orderedByLevel.length ? orderedByLevel[orderedByLevel.length - 1][1] : '';
485
- return lastLevelCategory.split(' > ');
486
- };
487
- exports.getItemCategorySlugArray = getItemCategorySlugArray;
488
- var applyDiscountToCart = function (cart, isMultiPromo, forceShipping, forcedPromos) {
489
- var _a;
490
- if (forceShipping === void 0) { forceShipping = false; }
491
- var discountRules = !!forcedPromos
492
- ? ((_a = cart.discount_rules) !== null && _a !== void 0 ? _a : []).filter(function (d) {
493
- return (!!d.created && (0, moment_1.default)((0, data_1.formatDate)(d.created)).isBefore((0, moment_1.default)((0, data_1.formatDate)(cart.paid_at)))) ||
494
- (!!d.promo_code && !!d.promo_code.code) ||
495
- !!!d.created;
496
- })
497
- : cart.discount_rules;
498
- if (!!!discountRules || !!!discountRules.length) {
499
- return __assign(__assign(__assign({}, cart), (!!cart.cart_promo_applied ? { cart_promo_applied: null } : {})), (!!cart.cart_promos_applied ? { cart_promos_applied: null } : {}));
500
- }
501
- var newCart = __assign(__assign(__assign({}, cart), (!!cart.cart_promo_applied &&
502
- !!!discountRules.some(function (dr) { return dr.id === cart.cart_promo_applied.discount_id; })
503
- ? { cart_promo_applied: null }
504
- : {})), (!!cart.cart_promos_applied
505
- ? {
506
- cart_promos_applied: cart.cart_promos_applied.filter(function (promo) {
507
- return discountRules.some(function (dr) { return dr.id === promo.discount_id; });
508
- })
509
- }
510
- : {}));
511
- var checkIfCanAddPromo = function (promoToCheck) {
512
- var currentPromos = newCart.cart_promos_applied;
513
- if (!!!currentPromos || !!!currentPromos.length)
514
- return true;
515
- var currentPromosHasPromo = !!currentPromos.some(function (e) { return e.discount_id === promoToCheck.id; });
516
- if (!!currentPromosHasPromo)
517
- return false;
518
- if (!!isMultiPromo) {
519
- return !!promoToCheck.is_stackable && !!currentPromos.every(function (x) { return !!x.stackable; });
520
- }
521
- return true;
522
- };
523
- var currentPromos = (0, exports.getCartPromo)(newCart);
524
- if (!!currentPromos) {
525
- var shouldRemovePromo_1 = [];
526
- var shouldUpdatePromo_1 = [];
527
- var _loop_2 = function (appliedPromo) {
528
- if (appliedPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT && !!appliedPromo.item_given) {
529
- var sameInCartDiscounts = discountRules.find(function (d) { return d.id == appliedPromo.discount_id; });
530
- if (!!sameInCartDiscounts) {
531
- var itemsWherePromoApplicable = (0, exports.getResultAppliedDiscountSkus)(cart.items, sameInCartDiscounts);
532
- if (!!!itemsWherePromoApplicable.length && !!appliedPromo.discount_id) {
533
- shouldRemovePromo_1.push(appliedPromo.discount_id);
534
- }
535
- else if (itemsWherePromoApplicable.length !== appliedPromo.item_given.length) {
536
- shouldUpdatePromo_1.push(__assign(__assign({}, appliedPromo), { item_given: itemsWherePromoApplicable }));
537
- }
538
- }
539
- }
540
- };
541
- for (var _i = 0, currentPromos_1 = currentPromos; _i < currentPromos_1.length; _i++) {
542
- var appliedPromo = currentPromos_1[_i];
543
- _loop_2(appliedPromo);
544
- }
545
- newCart = __assign(__assign({}, newCart), (!!newCart.cart_promos_applied
546
- ? {
547
- cart_promos_applied: newCart.cart_promos_applied
548
- .filter(function (promo) { return !shouldRemovePromo_1.includes(promo.discount_id); })
549
- .map(function (promo) {
550
- if (!!!shouldUpdatePromo_1.length)
551
- return promo;
552
- var sameInUpdated = shouldUpdatePromo_1.find(function (p) { return p.discount_id == promo.discount_id; });
553
- return sameInUpdated !== null && sameInUpdated !== void 0 ? sameInUpdated : promo;
554
- })
555
- }
556
- : {}));
557
- }
558
- var _loop_3 = function (discount) {
559
- if (!!discount.promo_code && !!discount.promo_code.code) {
560
- var promoCodeInCart = (currentPromos || []).find(function (p) { return p.discount_id == discount.id; });
561
- if (!!promoCodeInCart) {
562
- var shouldStillApplyCode = (0, exports.checkPromoCodeEligibility)(newCart, discount);
563
- if (!!!shouldStillApplyCode) {
564
- newCart = __assign(__assign(__assign({}, newCart), (!!newCart.cart_promo_applied && newCart.cart_promo_applied.discount_id === discount.id
565
- ? { cart_promo_applied: null }
566
- : {})), (!!newCart.cart_promos_applied
567
- ? {
568
- cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
569
- }
570
- : {}));
571
- }
572
- }
573
- return "continue";
574
- }
575
- var promoType = (0, exports.getCartPromoType)(discount);
576
- var currentDiscountMap = [];
577
- if (promoType == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES &&
578
- ((0, exports.getCartPromo)(newCart) || []).some(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES && p.discount_id != discount.id; })) {
579
- currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, false]];
580
- }
581
- else if (promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING &&
582
- (!!cart.is_pickup || !!!cart.shipping_selected) &&
583
- !!!forceShipping) {
584
- currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, false]];
585
- }
586
- else if (!!!discount.rules || !!!discount.rules.length) {
587
- currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, true]];
588
- }
589
- else if (!!discount.draft) {
590
- currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, true]];
591
- }
592
- else {
593
- currentDiscountMap = discount.rules.map(function (rule) {
594
- return _checkIfRuleAppliesToCart(rule, discount.appliesTo, cart);
595
- });
596
- }
597
- if (_checkRuleApplicationArray(currentDiscountMap)) {
598
- if (discount.draft) {
599
- newCart = __assign(__assign(__assign({}, newCart), (!!newCart.cart_promo_applied && newCart.cart_promo_applied.discount_id === discount.id
600
- ? { cart_promo_applied: null }
601
- : {})), (!!newCart.cart_promos_applied
602
- ? {
603
- cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
604
- }
605
- : {}));
606
- }
607
- else {
608
- if (promoType === Cart_1.CartPromoAppliesToEnum.PRODUCT &&
609
- (!!discount.result.action_sku || !!discount.result.action_categories)) {
610
- var productsToApplyPromo = (0, exports.getResultAppliedDiscountSkus)(cart.items, discount);
611
- if (!!productsToApplyPromo.length) {
612
- var newPromo = __assign({ promo_name: (0, locale_1.getLocaleOfDictionnary)(discount.name, cart.locale), applies_to: promoType, amount_removed: Number(discount.result.action_value), amount_unit: discount.result.action, item_given: productsToApplyPromo, item_given_amount: 0, free_shipping: discount.result.action === IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, flatrate_shipping: 0, stackable: discount.is_stackable, discount_id: discount.id, promo_code: !!discount.promo_code ? discount.promo_code.code : undefined }, (typeof discount.result.exclude_services_and_fees === 'boolean'
613
- ? {
614
- exclude_services_and_fees: discount.result.exclude_services_and_fees
615
- }
616
- : {}));
617
- if (!!checkIfCanAddPromo(discount)) {
618
- newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], (newCart.cart_promos_applied || []), true), [newPromo], false) });
619
- }
620
- }
621
- else {
622
- newCart = __assign(__assign(__assign({}, newCart), (!!newCart.cart_promo_applied && newCart.cart_promo_applied.discount_id === discount.id
623
- ? { cart_promo_applied: null }
624
- : {})), (!!newCart.cart_promos_applied
625
- ? {
626
- cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
627
- }
628
- : {}));
629
- }
630
- }
631
- else {
632
- var newPromo = __assign({ promo_name: (0, locale_1.getLocaleOfDictionnary)(discount.name, cart.locale), applies_to: promoType, amount_removed: promoType !== Cart_1.CartPromoAppliesToEnum.SHIPPING ? Number(discount.result.action_value) : 0, amount_unit: discount.result.action, item_given: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS ? discount.result.action_value.toString() : '', item_given_amount: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS && !!discount.result.action_qte
633
- ? Number(discount.result.action_qte)
634
- : 0, stackable: discount.is_stackable, discount_id: discount.id, free_shipping: discount.result.action === IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, flatrate_shipping: promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING &&
635
- discount.result.action === IDiscountRule_1.ResultActionEnum.FLATERATE_SHIPPING
636
- ? Number(discount.result.action_value)
637
- : 0, promo_code: !!discount.promo_code ? discount.promo_code.code : undefined }, (typeof discount.result.exclude_services_and_fees === 'boolean'
638
- ? {
639
- exclude_services_and_fees: discount.result.exclude_services_and_fees
640
- }
641
- : {}));
642
- if (!!checkIfCanAddPromo(discount)) {
643
- newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], (newCart.cart_promos_applied || []), true), [newPromo], false) });
644
- }
645
- }
646
- }
647
- }
648
- else {
649
- newCart = __assign(__assign(__assign({}, newCart), (!!cart.cart_promo_applied && cart.cart_promo_applied.discount_id === discount.id
650
- ? { cart_promo_applied: null }
651
- : {})), (!!newCart.cart_promos_applied
652
- ? {
653
- cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
654
- }
655
- : {}));
656
- }
657
- };
658
- for (var _b = 0, discountRules_1 = discountRules; _b < discountRules_1.length; _b++) {
659
- var discount = discountRules_1[_b];
660
- _loop_3(discount);
661
- }
662
- if (!!newCart.cart_promos_applied && !!isMultiPromo) {
663
- var shippingPromo = newCart.cart_promos_applied.filter(function (x) { return x.applies_to === Cart_1.CartPromoAppliesToEnum.SHIPPING; });
664
- if (!!shippingPromo && !!shippingPromo.length) {
665
- var flatPrice = 1000000;
666
- var promo = 0;
667
- for (var i = 0; i < shippingPromo.length; i++) {
668
- if (shippingPromo[i].amount_unit === 'free_shipping') {
669
- promo = i;
670
- break;
671
- }
672
- if (!!shippingPromo[i].flatrate_shipping && shippingPromo[i].flatrate_shipping < flatPrice) {
673
- promo = i;
674
- flatPrice = shippingPromo[i].flatrate_shipping;
675
- }
676
- }
677
- var promoSansShipping = newCart.cart_promos_applied.filter(function (x) { return x.applies_to !== Cart_1.CartPromoAppliesToEnum.SHIPPING; });
678
- newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], promoSansShipping, true), [shippingPromo[promo]], false) });
679
- }
680
- }
681
- if (!!forcedPromos && !!forcedPromos.length) {
682
- var appliedPromos_1 = !!newCart.cart_promos_applied && !!newCart.cart_promos_applied.length
683
- ? newCart.cart_promos_applied.map(function (p) { return p.discount_id; })
684
- : [];
685
- var newForcedPromos = forcedPromos.filter(function (f) { return !!!appliedPromos_1.includes(f.discount_id); });
686
- newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], (!!newCart.cart_promos_applied && !!newCart.cart_promos_applied.length ? newCart.cart_promos_applied : []), true), newForcedPromos, true) });
687
- }
688
- return __assign(__assign({}, newCart), { free_shipping: !!newCart.cart_promos_applied
689
- ? newCart.cart_promos_applied.some(function (p) { return !!p.free_shipping; })
690
- : !!newCart.cart_promo_applied && newCart.cart_promo_applied.free_shipping });
691
- };
692
- exports.applyDiscountToCart = applyDiscountToCart;
693
- var getStandardCartPromoFromDiscount = function (cart, discount) {
694
- var promoType = (0, exports.getCartPromoType)(discount);
695
- return __assign({ promo_name: (0, locale_1.getLocaleOfDictionnary)(discount.name, cart.locale), applies_to: promoType, amount_removed: promoType !== Cart_1.CartPromoAppliesToEnum.SHIPPING ? Number(discount.result.action_value) : 0, amount_unit: discount.result.action, item_given: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS ? discount.result.action_value.toString() : '', item_given_amount: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS && !!discount.result.action_qte
696
- ? Number(discount.result.action_qte)
697
- : 0, stackable: discount.is_stackable, discount_id: discount.id, free_shipping: discount.result.action === IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, flatrate_shipping: promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING && discount.result.action === IDiscountRule_1.ResultActionEnum.FLATERATE_SHIPPING
698
- ? Number(discount.result.action_value)
699
- : 0, promo_code: !!discount.promo_code ? discount.promo_code.code : undefined }, (typeof discount.result.exclude_services_and_fees === 'boolean'
700
- ? {
701
- exclude_services_and_fees: discount.result.exclude_services_and_fees
702
- }
703
- : {}));
704
- };
705
- exports.getStandardCartPromoFromDiscount = getStandardCartPromoFromDiscount;
706
- var getOnlyServicesAndFeesSubtotal = function (cartData, allCurrentAppliedToItemPromos) {
707
- var servicesAndFeesTotal = 0;
708
- cartData.items.forEach(function (i) {
709
- if (!!!i.is_service || !!(0, g2_1.isEscompteSuppItem)(i.sku))
710
- return;
711
- var associatedPromos = allCurrentAppliedToItemPromos.filter(function (p) { var _a; return (0, exports.getSkuArrayForPromo)((_a = p.item_given) !== null && _a !== void 0 ? _a : []).includes(i.sku); });
712
- servicesAndFeesTotal += (0, round_1.default)(i.qte * (0, products_1.getLowestPrice)(i).price.amount, 3);
713
- if (!!associatedPromos.length) {
714
- for (var _i = 0, associatedPromos_1 = associatedPromos; _i < associatedPromos_1.length; _i++) {
715
- var promo = associatedPromos_1[_i];
716
- if (!!!promo.amount_removed)
717
- continue;
718
- if ((0, exports.isPromoAPercentage)(promo, { defaultToPercent: true })) {
719
- servicesAndFeesTotal -= (0, round_1.default)((promo.amount_removed / 100) * (i.qte * (0, products_1.getLowestPrice)(i).price.amount), 3);
720
- }
721
- else {
722
- servicesAndFeesTotal -= promo.amount_removed * i.qte;
723
- }
724
- }
725
- }
726
- });
727
- return servicesAndFeesTotal;
728
- };
729
- exports.getOnlyServicesAndFeesSubtotal = getOnlyServicesAndFeesSubtotal;
730
- var _checkIfRuleAppliesToCart = function (rule, appliesTo, cart) {
731
- var _a;
732
- var todayDate = (0, moment_1.default)().toDate();
733
- var ruleCondition = (_a = rule.condition) !== null && _a !== void 0 ? _a : IDiscountRule_1.RuleConditionEnum.AND;
734
- switch (rule.field) {
735
- case IDiscountRule_1.RuleFieldEnum.CART_TOTAL:
736
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
737
- return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, cart.subtotal)];
738
- }));
739
- case IDiscountRule_1.RuleFieldEnum.CART_ITEM_TOTAL:
740
- var totalCartItems_1 = (0, sumBy_1.default)(cart.items, function (item) { return item.qte; });
741
- if (!!appliesTo.check_other_items_category) {
742
- var correspondingCartItems = cart.items.filter(function (item) {
743
- if (!!item.tier_pricing && !!item.tier_pricing.length) {
744
- return (!!item.tier_pricing[0].check_other_items_category &&
745
- item.tier_pricing[0].check_other_items_category === appliesTo.check_other_items_category);
746
- }
747
- return false;
748
- });
749
- totalCartItems_1 = (0, sumBy_1.default)(correspondingCartItems, function (item) {
750
- var amountInBox = 1;
751
- var qte = item.qte;
752
- if (!!item.attributes['8OUv9qj0aDbiLOovd4dp']) {
753
- amountInBox = Number(item.attributes['8OUv9qj0aDbiLOovd4dp']);
754
- }
755
- return amountInBox * qte;
756
- });
757
- }
758
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
759
- return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, totalCartItems_1)];
760
- }));
761
- case IDiscountRule_1.RuleFieldEnum.CART_ITEM:
762
- if (!!cart) {
763
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
764
- if (ruleDetail.operator === 'contains') {
765
- return [ruleCondition, ruleDetail.value.every(function (v) { return !!cart.items.some(function (item) { return item.sku === v; }); })];
766
- }
767
- return [ruleCondition, !!!cart.items.find(function (item) { return !!ruleDetail.value.find(function (v) { return v === item.sku; }); })];
768
- }));
769
- }
770
- case IDiscountRule_1.RuleFieldEnum.CUSTOMER:
771
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
772
- return [ruleCondition, cart.customer_id === ruleDetail.value[0]];
773
- }));
774
- case IDiscountRule_1.RuleFieldEnum.CUSTOMER_TYPE:
775
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
776
- if (ruleDetail.operator === '!=') {
777
- return [
778
- ruleCondition,
779
- (!!cart.customer_info && !!!cart.customer_info.pro_title) ||
780
- (!!cart.customer_info &&
781
- !!cart.customer_info.pro_title &&
782
- !!!ruleDetail.value.includes(cart.customer_info.pro_title))
783
- ];
784
- }
785
- return [
786
- ruleCondition,
787
- !!cart.customer_info &&
788
- !!cart.customer_info.pro_title &&
789
- !!ruleDetail.value.includes(cart.customer_info.pro_title)
790
- ];
791
- }));
792
- case IDiscountRule_1.RuleFieldEnum.DATE:
793
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
794
- return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, todayDate)];
795
- }));
796
- case IDiscountRule_1.RuleFieldEnum.WEEKDAY:
797
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
798
- return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, todayDate)];
799
- }));
800
- case IDiscountRule_1.RuleFieldEnum.CART_PLATFORM:
801
- var cartPlatform_1 = !![Cart_1.CartTypeEnum.POS, Cart_1.CartTypeEnum.POS_TRANSACTIONNAL].includes(cart.cart_type)
802
- ? Cart_1.CartTypeEnum.POS
803
- : Cart_1.CartTypeEnum.WEB;
804
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
805
- return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, cartPlatform_1)];
806
- }));
807
- case IDiscountRule_1.RuleFieldEnum.CART_TYPE:
808
- var cartType_1 = cart.cart_content_type === Cart_1.CartContentTypeEnum.MIXED
809
- ? Cart_1.CartContentTypeEnum.MIXED
810
- : !!(0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.INSTALLATION, cart)
811
- ? cart_2.CartGeneralTypeEnum.INSTALLATION
812
- : (0, cart_1.getCartType)(cart);
813
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
814
- var result = (0, exports.getResultRuleDetail)(ruleDetail, cartType_1);
815
- for (var _i = 0, _a = ruleDetail.value; _i < _a.length; _i++) {
816
- var value = _a[_i];
817
- if (value === cart_2.CartGeneralTypeEnum.GRASS && cartType_1 === cart_2.CartGeneralTypeEnum.INSTALLATION)
818
- result = true;
819
- }
820
- return [ruleCondition, result];
821
- }));
822
- case IDiscountRule_1.RuleFieldEnum.CART_ITEM_CATEGORIES:
823
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
824
- var result = ruleDetail.operator !== 'contains';
825
- for (var _i = 0, _a = cart.items; _i < _a.length; _i++) {
826
- var i = _a[_i];
827
- var categorySlugsToCheck = (0, exports.getItemCategorySlugArray)(i.categories);
828
- if (!!categorySlugsToCheck.length) {
829
- for (var _b = 0, _c = ruleDetail.value; _b < _c.length; _b++) {
830
- var ruleValue = _c[_b];
831
- if (!!categorySlugsToCheck.includes(ruleValue))
832
- result = ruleDetail.operator !== 'contains' ? false : true;
833
- }
834
- }
835
- }
836
- return [ruleCondition, result];
837
- }));
838
- case IDiscountRule_1.RuleFieldEnum.ORDER_DAY:
839
- var order_day_day_1 = !!cart.shipping_payload && !!cart.shipping_payload.delivery_or_pickup_date
840
- ? cart.shipping_payload.delivery_or_pickup_date
841
- : '';
842
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
843
- return [ruleCondition, !!order_day_day_1 ? (0, exports.getResultRuleDetail)(ruleDetail, (0, moment_1.default)(order_day_day_1).day()) : false];
844
- }));
845
- case IDiscountRule_1.RuleFieldEnum.ORDER_TYPE:
846
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
847
- return [
848
- ruleCondition,
849
- !!cart.is_pickup
850
- ? ruleDetail.operator === '=='
851
- ? !!ruleDetail.value.includes('pickup')
852
- : !!!ruleDetail.value.includes('pickup')
853
- : ruleDetail.operator === '=='
854
- ? !!ruleDetail.value.includes('shipping')
855
- : !!!ruleDetail.value.includes('shipping')
856
- ];
857
- }));
858
- case IDiscountRule_1.RuleFieldEnum.PAYMENT_METHOD:
859
- if (cart.custom_payment_type &&
860
- cart.custom_payment_type.method == Cart_1.CustomPaymentTypeEnum.INCENTIVE) {
861
- return [ruleCondition, true];
862
- }
863
- var paymentTypesToCompare_1 = !!cart.custom_payment_type
864
- ? [cart.custom_payment_type.method]
865
- : !!cart.payment_details && cart.payment_details.length
866
- ? cart.payment_details.map(function (p) { return p.method; })
867
- : !!cart.paid_by
868
- ? [cart.paid_by]
869
- : [];
870
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
871
- var result = ruleDetail.operator == 'contains'
872
- ? paymentTypesToCompare_1.some(function (type) { return ruleDetail.value.includes(type); })
873
- : !paymentTypesToCompare_1.every(function (type) { return ruleDetail.value.includes(type); });
874
- return [ruleCondition, result];
875
- }));
876
- case IDiscountRule_1.RuleFieldEnum.CUSTOMER_TERMS_CODE:
877
- var customerTermsCode = (0, object_1.recursiveCheckObject)(cart, 'customer_info.terms_code');
878
- var customerPrevTermsCode = (0, object_1.recursiveCheckObject)(cart, 'customer_info.previous_terms_code');
879
- var trueTermsCode = customerTermsCode == 'HOLD' ? 'HOLD' : customerPrevTermsCode !== null && customerPrevTermsCode !== void 0 ? customerPrevTermsCode : customerTermsCode;
880
- var termsCodeToCheck_1 = !!!trueTermsCode
881
- ? undefined
882
- : data_2.allCodesForHold.includes(trueTermsCode)
883
- ? 'HOLD'
884
- : data_2.allCodesForPSL.includes(trueTermsCode)
885
- ? 'P.S.L'
886
- : 'NET30';
887
- return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
888
- var operator = ruleDetail.operator;
889
- if (!!!termsCodeToCheck_1)
890
- return [IDiscountRule_1.RuleConditionEnum.AND, operator == '!='];
891
- return [
892
- ruleCondition,
893
- operator == '=='
894
- ? ruleDetail.value.includes(termsCodeToCheck_1)
895
- : !ruleDetail.value.includes(termsCodeToCheck_1)
896
- ];
897
- }));
898
- default:
899
- return [IDiscountRule_1.RuleConditionEnum.AND, true];
900
- }
901
- };
902
- var _checkRuleApplicationArray = function (checkedRulesApplicationArray) {
903
- return ((checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(IDiscountRule_1.RuleConditionEnum.OR) !== -1; }) &&
904
- checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(true) !== -1; })) ||
905
- (checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(IDiscountRule_1.RuleConditionEnum.AND) !== -1; }) &&
906
- !checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(false) !== -1; })));
907
- };
908
- var checkIfCouldApplyIncentivePromo = function (cartData, skipCheckFor) {
909
- if (skipCheckFor === void 0) { skipCheckFor = []; }
910
- var afterTaxesPromo = cartData.discount_rules.find(function (d) {
911
- return !d.draft &&
912
- (d.result.action == IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES ||
913
- d.result.action == IDiscountRule_1.ResultActionEnum.AMOUNT_AFTER_TAXES);
914
- });
915
- if (!!!afterTaxesPromo)
916
- return false;
917
- if (!!!afterTaxesPromo.rules || afterTaxesPromo.rules.length == 0)
918
- return true;
919
- var appliesTo = afterTaxesPromo.appliesTo;
920
- var canApply = afterTaxesPromo.rules.map(function (r) {
921
- if (r.field && skipCheckFor.includes(r.field))
922
- return [IDiscountRule_1.RuleConditionEnum.AND, true];
923
- return _checkIfRuleAppliesToCart(r, appliesTo, cartData);
924
- });
925
- return _checkRuleApplicationArray(canApply);
926
- };
927
- exports.checkIfCouldApplyIncentivePromo = checkIfCouldApplyIncentivePromo;
928
- var getAfterTaxesPromosTotalAmount = function (cartData, checkDiscountRules) {
929
- var currentSubtotal = cartData.subtotal;
930
- var afterTaxesPromo = (0, exports.getAfterTaxesPromoInCart)(cartData, checkDiscountRules);
931
- var totalAmountForAfterTaxesPromos = 0;
932
- if (!!afterTaxesPromo && !!afterTaxesPromo.amount_removed) {
933
- if ((0, exports.isPromoAPercentage)(afterTaxesPromo, { includePaymentIncentiveInCheck: true })) {
934
- totalAmountForAfterTaxesPromos += currentSubtotal * (afterTaxesPromo.amount_removed / 100);
935
- }
936
- else {
937
- totalAmountForAfterTaxesPromos += afterTaxesPromo.amount_removed;
938
- }
939
- }
940
- return totalAmountForAfterTaxesPromos;
941
- };
942
- exports.getAfterTaxesPromosTotalAmount = getAfterTaxesPromosTotalAmount;
943
- var getAfterTaxesPromoInCart = function (cartData, checkDiscountRules) {
944
- var _a;
945
- var cartPromos = (_a = (0, exports.getCartPromo)(cartData)) !== null && _a !== void 0 ? _a : [];
946
- var incentivePromo = cartPromos.find(function (p) { return p.applies_to === Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES; });
947
- var discountIncentive = (0, exports.getPaymentIncentiveDiscount)(cartData.discount_rules);
948
- if (!!checkDiscountRules &&
949
- !!discountIncentive &&
950
- (!!!incentivePromo || discountIncentive.result.action_value != incentivePromo.amount_removed)) {
951
- incentivePromo = (0, exports.getStandardCartPromoFromDiscount)(cartData, discountIncentive);
952
- }
953
- return incentivePromo;
954
- };
955
- exports.getAfterTaxesPromoInCart = getAfterTaxesPromoInCart;
956
- var getPaymentIncentiveDiscountInfo = function (cartData) {
957
- var appliesToPaymentTypes = undefined;
958
- var paymentIncentiveDiscount = (0, exports.getPaymentIncentiveDiscount)(cartData.discount_rules);
959
- if (!!!paymentIncentiveDiscount)
960
- return;
961
- var ruleForPaymentType = (paymentIncentiveDiscount.rules || []).find(function (rule) { return rule.field == IDiscountRule_1.RuleFieldEnum.PAYMENT_METHOD; });
962
- if (!!ruleForPaymentType) {
963
- appliesToPaymentTypes = {
964
- amount: (0, toNumber_1.default)(paymentIncentiveDiscount.result.action_value),
965
- isPercent: (0, exports.isPromoAPercentage)(paymentIncentiveDiscount, { includePaymentIncentiveInCheck: true }),
966
- paymentTypes: (0, flatten_1.default)(ruleForPaymentType.ruleDetails.map(function (d) { return (0, flatten_1.default)(d.value); }))
967
- };
968
- }
969
- return appliesToPaymentTypes;
970
- };
971
- exports.getPaymentIncentiveDiscountInfo = getPaymentIncentiveDiscountInfo;
972
- var getPaymentIncentiveDiscount = function (discountRules) {
973
- if (!!!discountRules)
974
- return;
975
- var paymentIncentiveDiscount = discountRules.find(function (d) {
976
- return !!d.result.action &&
977
- [IDiscountRule_1.ResultActionEnum.AMOUNT_AFTER_TAXES, IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES].includes(d.result.action);
978
- });
979
- return paymentIncentiveDiscount;
980
- };
981
- exports.getPaymentIncentiveDiscount = getPaymentIncentiveDiscount;
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
26
+ if (ar || !(i in from)) {
27
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
28
+ ar[i] = from[i];
29
+ }
30
+ }
31
+ return to.concat(ar || Array.prototype.slice.call(from));
32
+ };
33
+ var __importDefault = (this && this.__importDefault) || function (mod) {
34
+ return (mod && mod.__esModule) ? mod : { "default": mod };
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.getPaymentIncentiveDiscount = exports.getPaymentIncentiveDiscountInfo = exports.getAfterTaxesPromoInCart = exports.getAfterTaxesPromosTotalAmount = exports.checkIfCouldApplyIncentivePromo = exports.getOnlyServicesAndFeesSubtotal = exports.getStandardCartPromoFromDiscount = exports.applyDiscountToCart = exports.getItemCategorySlugArray = exports.getResultAppliedDiscountSkus = exports.getSkuArrayForPromo = exports.applyDiscountToPrice = exports.applyDiscountRulesOnProduct = exports.getNewDiscountPriceFromTierPricing = exports.applyTierPricing = exports.getTierPricingToApply = exports.checkPromoCodeEligibility = exports.getCartPromoType = exports.checkAttributes = exports.getResultRuleDetail = exports.shouldApplyRuleToDeclination = exports.getAppliedAmountsForSubtotalPromosOnCart = exports.getCartPromosByAppliesTo = exports.getSubtotalWithoutProductPromos = exports.isPromoAPercentage = exports.shouldCheckPromoCode = exports.getCartPromo = void 0;
38
+ var IDiscountRule_1 = require("../Interfaces/Rules/IDiscountRule");
39
+ var Cart_1 = require("../Interfaces/Cart");
40
+ var flatten_1 = __importDefault(require("lodash/flatten"));
41
+ var round_1 = __importDefault(require("lodash/round"));
42
+ var sumBy_1 = __importDefault(require("lodash/sumBy"));
43
+ var toNumber_1 = __importDefault(require("lodash/toNumber"));
44
+ var orderBy_1 = __importDefault(require("lodash/orderBy"));
45
+ var locale_1 = require("./locale");
46
+ var currency_1 = require("./currency");
47
+ var moment_1 = __importDefault(require("moment"));
48
+ var data_1 = require("./data");
49
+ var products_1 = require("./products");
50
+ var cart_1 = require("../rules/GR/utils/cart");
51
+ var cart_2 = require("../rules/GR/interfaces/cart");
52
+ var object_1 = require("./object");
53
+ var data_2 = require("../rules/GR/constants/data");
54
+ var g2_1 = require("../rules/GR/utils/g2");
55
+ var getCartPromo = function (cartData) {
56
+ if (!!!cartData.cart_promo_applied && !!!cartData.cart_promos_applied)
57
+ return;
58
+ return !!cartData.cart_promo_applied
59
+ ? [cartData.cart_promo_applied]
60
+ : !!cartData.cart_promos_applied
61
+ ? cartData.cart_promos_applied
62
+ : [];
63
+ };
64
+ exports.getCartPromo = getCartPromo;
65
+ var shouldCheckPromoCode = function (cartData) {
66
+ return ((!!cartData.cart_promos_applied && !!cartData.cart_promos_applied.some(function (p) { return p.promo_code; })) ||
67
+ (!!cartData.cart_promo_applied && !!cartData.cart_promo_applied.promo_code));
68
+ };
69
+ exports.shouldCheckPromoCode = shouldCheckPromoCode;
70
+ var isPromoAPercentage = function (promo, options) {
71
+ if (options === void 0) { options = {}; }
72
+ var promoPercentOptions = [
73
+ IDiscountRule_1.ResultActionEnum.PERCENT,
74
+ IDiscountRule_1.ResultActionEnum.PERCENT_CATEGORY,
75
+ IDiscountRule_1.ResultActionEnum.PERCENT_SKU
76
+ ];
77
+ if (options.includePaymentIncentiveInCheck)
78
+ promoPercentOptions.push(IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES);
79
+ var propertyToCheck = (0, object_1.recursiveCheckObject)(promo, 'result.action') || (0, object_1.recursiveCheckObject)(promo, 'amount_unit');
80
+ if (!!!propertyToCheck && options.defaultToPercent)
81
+ propertyToCheck = IDiscountRule_1.ResultActionEnum.PERCENT;
82
+ return !!propertyToCheck && promoPercentOptions.includes(propertyToCheck);
83
+ };
84
+ exports.isPromoAPercentage = isPromoAPercentage;
85
+ var getSubtotalWithoutProductPromos = function (cartData, itemPromos) {
86
+ var currentSubtotal = cartData.subtotalWithoutPromotions || cartData.subtotal;
87
+ var allProductSubtotalAmounts = (0, sumBy_1.default)(itemPromos, function (i) {
88
+ return !!(0, data_1.getPromoTotalAmount)(cartData.items, i, 'number')
89
+ ? (0, data_1.getPromoTotalAmount)(cartData.items, i, 'number')
90
+ : 0;
91
+ });
92
+ return currentSubtotal - allProductSubtotalAmounts;
93
+ };
94
+ exports.getSubtotalWithoutProductPromos = getSubtotalWithoutProductPromos;
95
+ var getCartPromosByAppliesTo = function (cartData) {
96
+ var appliedPromos = (0, exports.getCartPromo)(cartData) || [];
97
+ var subtotalPromos = appliedPromos.filter(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.SUBTOTAL; });
98
+ var itemPromos = appliedPromos.filter(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.PRODUCT; });
99
+ var afterTaxesPromos = appliedPromos.filter(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES; });
100
+ return {
101
+ subtotal: subtotalPromos,
102
+ items: itemPromos,
103
+ afterTaxes: afterTaxesPromos
104
+ };
105
+ };
106
+ exports.getCartPromosByAppliesTo = getCartPromosByAppliesTo;
107
+ var getAppliedAmountsForSubtotalPromosOnCart = function (cartData) {
108
+ var activePromos = (0, exports.getCartPromosByAppliesTo)(cartData);
109
+ var currentSubtotal = (0, exports.getSubtotalWithoutProductPromos)(cartData, activePromos.items);
110
+ var promoAmounts = {};
111
+ for (var _i = 0, _a = activePromos.subtotal.filter(function (p) { return !!p.discount_id; }); _i < _a.length; _i++) {
112
+ var promo = _a[_i];
113
+ if (!!!promo.amount_removed)
114
+ continue;
115
+ var amountRemoved = promo.amount_removed;
116
+ var serviceAndFeesTotal = (0, exports.getOnlyServicesAndFeesSubtotal)(cartData, activePromos.items);
117
+ if ((0, exports.isPromoAPercentage)(promo, { defaultToPercent: true })) {
118
+ if (!!promo.exclude_services_and_fees) {
119
+ amountRemoved = (0, round_1.default)((promo.amount_removed / 100) * (currentSubtotal - serviceAndFeesTotal), 3);
120
+ }
121
+ else {
122
+ amountRemoved = (0, round_1.default)((promo.amount_removed / 100) * currentSubtotal, 3);
123
+ }
124
+ }
125
+ promoAmounts[promo.discount_id] = amountRemoved;
126
+ currentSubtotal -= amountRemoved;
127
+ }
128
+ return promoAmounts;
129
+ };
130
+ exports.getAppliedAmountsForSubtotalPromosOnCart = getAppliedAmountsForSubtotalPromosOnCart;
131
+ var shouldApplyRuleToDeclination = function (discount_rule, declination) {
132
+ if (!!!discount_rule.rules || !!!discount_rule.rules.length)
133
+ return true;
134
+ var currentDiscountMap = discount_rule.rules.map(function (rule) {
135
+ var todayDate = (0, moment_1.default)().format('YYYY-MM-DD');
136
+ switch (rule.field) {
137
+ case IDiscountRule_1.RuleFieldEnum.PRODUCT_PRICE:
138
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
139
+ return [rule.condition, (0, exports.getResultRuleDetail)(ruleDetail, declination.price.regular.amount)];
140
+ }));
141
+ case IDiscountRule_1.RuleFieldEnum.SKU:
142
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
143
+ return [rule.condition, (0, exports.getResultRuleDetail)(ruleDetail, declination.sku)];
144
+ }));
145
+ case IDiscountRule_1.RuleFieldEnum.DECLINATION:
146
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
147
+ return [rule.condition, declination.sku === ruleDetail.value[0]];
148
+ }));
149
+ case IDiscountRule_1.RuleFieldEnum.DATE:
150
+ case IDiscountRule_1.RuleFieldEnum.WEEKDAY:
151
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
152
+ return [rule.condition, (0, exports.getResultRuleDetail)(ruleDetail, (0, moment_1.default)(todayDate).toDate())];
153
+ }));
154
+ case IDiscountRule_1.RuleFieldEnum.ATTRIBUTE:
155
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
156
+ return [rule.condition, (0, exports.checkAttributes)(ruleDetail, declination.attributes)];
157
+ }));
158
+ default:
159
+ return [IDiscountRule_1.RuleConditionEnum.AND, true];
160
+ }
161
+ });
162
+ return _checkRuleApplicationArray(currentDiscountMap);
163
+ };
164
+ exports.shouldApplyRuleToDeclination = shouldApplyRuleToDeclination;
165
+ var getResultRuleDetail = function (ruleDetail, cartValue, log) {
166
+ var ruleRespected = false;
167
+ var isDate = false;
168
+ try {
169
+ var amountValue = void 0;
170
+ var amountValue2 = void 0;
171
+ switch (true) {
172
+ case typeof cartValue === 'number':
173
+ if (ruleDetail.operator === 'between') {
174
+ amountValue = Number(ruleDetail.value[0].toString().replace(',', '.')) || [];
175
+ amountValue2 = Number(ruleDetail.value[1].toString().replace(',', '.')) || [];
176
+ }
177
+ else {
178
+ amountValue = ruleDetail.value.map(function (v) { return Number(v.toString().replace(',', '.')); }) || [];
179
+ amountValue2 = 0 || [];
180
+ }
181
+ break;
182
+ case typeof cartValue === 'string' && !!!moment_1.default.isDate((0, data_1.formatDate)(cartValue)):
183
+ if (ruleDetail.operator === 'between') {
184
+ amountValue = ruleDetail.value[0] || [];
185
+ amountValue2 = ruleDetail.value[1] || [];
186
+ }
187
+ else {
188
+ amountValue2 = [];
189
+ amountValue = ruleDetail.value || [];
190
+ }
191
+ break;
192
+ default:
193
+ if (!!log)
194
+ console.log('HERE!');
195
+ cartValue = (0, data_1.formatDate)(cartValue);
196
+ if (typeof ruleDetail.value[0] === 'number') {
197
+ if ((0, moment_1.default)(cartValue).isValid())
198
+ cartValue = (0, moment_1.default)(cartValue).day();
199
+ amountValue = ruleDetail.value || [];
200
+ }
201
+ else {
202
+ isDate = true;
203
+ amountValue = (0, moment_1.default)(ruleDetail.value[0]);
204
+ if (!!ruleDetail.value[1] && moment_1.default.isDate(ruleDetail.value[1])) {
205
+ amountValue2 = (0, moment_1.default)(ruleDetail.value[1]);
206
+ }
207
+ else {
208
+ amountValue2 = (0, moment_1.default)();
209
+ }
210
+ switch (ruleDetail.operator) {
211
+ case '==':
212
+ ruleRespected = amountValue.isSame((0, moment_1.default)(cartValue), 'date');
213
+ break;
214
+ case '!=':
215
+ ruleRespected = !!!amountValue.isSame((0, moment_1.default)(cartValue), 'date');
216
+ break;
217
+ case '<=':
218
+ ruleRespected = (0, moment_1.default)(cartValue).isSameOrBefore(amountValue, 'date');
219
+ break;
220
+ case '>=':
221
+ ruleRespected = (0, moment_1.default)(cartValue).isSameOrAfter(amountValue, 'date');
222
+ break;
223
+ case '<':
224
+ ruleRespected = (0, moment_1.default)(cartValue).isBefore(amountValue, 'date');
225
+ break;
226
+ case '>':
227
+ ruleRespected = (0, moment_1.default)(cartValue).isAfter(amountValue, 'date');
228
+ break;
229
+ case 'between':
230
+ ruleRespected = (0, moment_1.default)(cartValue).isBetween(amountValue, amountValue2, 'date', '[]');
231
+ break;
232
+ case 'contains':
233
+ default:
234
+ ruleRespected = false;
235
+ }
236
+ }
237
+ }
238
+ if (!!!isDate) {
239
+ if (!Array.isArray(amountValue) && ruleDetail.operator !== 'between') {
240
+ amountValue = [amountValue];
241
+ }
242
+ switch (ruleDetail.operator) {
243
+ case '==':
244
+ ruleRespected = !!amountValue.some(function (v) { return v === cartValue; });
245
+ break;
246
+ case '!=':
247
+ ruleRespected = !!amountValue.some(function (v) { return v !== cartValue; });
248
+ break;
249
+ case '<=':
250
+ ruleRespected = !!amountValue.some(function (v) { return cartValue <= v; });
251
+ break;
252
+ case '>=':
253
+ ruleRespected = !!amountValue.some(function (v) { return cartValue >= v; });
254
+ break;
255
+ case '<':
256
+ ruleRespected = !!amountValue.some(function (v) { return cartValue < v; });
257
+ break;
258
+ case '>':
259
+ ruleRespected = !!amountValue.some(function (v) { return cartValue > v; });
260
+ break;
261
+ case 'between':
262
+ ruleRespected = cartValue > amountValue && cartValue < amountValue2;
263
+ break;
264
+ case 'contains':
265
+ ruleRespected = !!amountValue.some(function (v) { return cartValue.toString().indexOf(v.toString()) !== -1; });
266
+ break;
267
+ case 'contains-not':
268
+ ruleRespected = !!!amountValue.some(function (v) { return cartValue.toString().indexOf(v.toString()) !== -1; });
269
+ break;
270
+ }
271
+ }
272
+ }
273
+ catch (error) {
274
+ console.log(error.toString());
275
+ }
276
+ return ruleRespected;
277
+ };
278
+ exports.getResultRuleDetail = getResultRuleDetail;
279
+ var checkAttributes = function (attributeAndValues, arrDeclinationAttributes) {
280
+ var parentAttributeID = attributeAndValues.value[0].parentAttribute;
281
+ var attributeValues = attributeAndValues.value[0].attributeOptions;
282
+ var operator = attributeAndValues.operator;
283
+ var matchingAttributes = false;
284
+ var _loop_1 = function (declinationAttribute) {
285
+ if (!!matchingAttributes)
286
+ return { value: true };
287
+ if (declinationAttribute.attribute_id !== parentAttributeID)
288
+ return "continue";
289
+ if (!!declinationAttribute.values) {
290
+ matchingAttributes =
291
+ operator === '=='
292
+ ? attributeValues.some(function (attr) { return declinationAttribute.values.some(function (value) { return value.slug === attr; }); })
293
+ : !!!attributeValues.some(function (attr) { return declinationAttribute.values.some(function (value) { return value.slug === attr; }); });
294
+ }
295
+ };
296
+ for (var _i = 0, arrDeclinationAttributes_1 = arrDeclinationAttributes; _i < arrDeclinationAttributes_1.length; _i++) {
297
+ var declinationAttribute = arrDeclinationAttributes_1[_i];
298
+ var state_1 = _loop_1(declinationAttribute);
299
+ if (typeof state_1 === "object")
300
+ return state_1.value;
301
+ }
302
+ return matchingAttributes;
303
+ };
304
+ exports.checkAttributes = checkAttributes;
305
+ var getCartPromoType = function (discount) {
306
+ return !!discount.result.action
307
+ ? discount.result.action === IDiscountRule_1.ResultActionEnum.GET
308
+ ? Cart_1.CartPromoAppliesToEnum.ITEMS
309
+ : [IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, IDiscountRule_1.ResultActionEnum.FLATERATE_SHIPPING].includes(discount.result.action)
310
+ ? Cart_1.CartPromoAppliesToEnum.SHIPPING
311
+ : [
312
+ IDiscountRule_1.ResultActionEnum.AMOUNT_SKU,
313
+ IDiscountRule_1.ResultActionEnum.PERCENT_SKU,
314
+ IDiscountRule_1.ResultActionEnum.AMOUNT_CATEGORY,
315
+ IDiscountRule_1.ResultActionEnum.PERCENT_CATEGORY
316
+ ].includes(discount.result.action)
317
+ ? Cart_1.CartPromoAppliesToEnum.PRODUCT
318
+ : [IDiscountRule_1.ResultActionEnum.AMOUNT_AFTER_TAXES, IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES].includes(discount.result.action)
319
+ ? Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES
320
+ : Cart_1.CartPromoAppliesToEnum.SUBTOTAL
321
+ : Cart_1.CartPromoAppliesToEnum.SUBTOTAL;
322
+ };
323
+ exports.getCartPromoType = getCartPromoType;
324
+ var checkPromoCodeEligibility = function (cart, promoCode) {
325
+ var _a;
326
+ var currentDiscountMap = [];
327
+ var promoType = (0, exports.getCartPromoType)(promoCode);
328
+ var currentPromos = (_a = (0, exports.getCartPromo)(cart)) !== null && _a !== void 0 ? _a : [];
329
+ if (promoType == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES &&
330
+ currentPromos.some(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES; })) {
331
+ return false;
332
+ }
333
+ if (promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING && (!!cart.is_pickup || !!!cart.shipping_selected)) {
334
+ return false;
335
+ }
336
+ if (promoType === Cart_1.CartPromoAppliesToEnum.PRODUCT &&
337
+ (!!promoCode.result.action_sku || !!promoCode.result.action_categories)) {
338
+ var itemsWherePromoApplicable = (0, exports.getResultAppliedDiscountSkus)(cart.items, promoCode);
339
+ if (!!!itemsWherePromoApplicable.length)
340
+ return false;
341
+ }
342
+ var rules = promoCode.rules;
343
+ if (!!promoCode.noExtraRules || !!!rules || !!!rules.length)
344
+ return true;
345
+ currentDiscountMap = rules.map(function (rule) { return _checkIfRuleAppliesToCart(rule, promoCode.appliesTo, cart); });
346
+ return _checkRuleApplicationArray(currentDiscountMap);
347
+ };
348
+ exports.checkPromoCodeEligibility = checkPromoCodeEligibility;
349
+ var getTierPricingToApply = function (tierPricingToCheck, qte) {
350
+ if (!!!tierPricingToCheck)
351
+ return;
352
+ return tierPricingToCheck.find(function (tp) { return (0, toNumber_1.default)(tp.from) <= qte && (!!!tp.to || (0, toNumber_1.default)(tp.to) >= qte); });
353
+ };
354
+ exports.getTierPricingToApply = getTierPricingToApply;
355
+ var applyTierPricing = function (discountRule, price, space, decimals) {
356
+ if (!!!discountRule.rules || !!!discountRule.rules.length)
357
+ return [];
358
+ if (!!discountRule.draft)
359
+ return [];
360
+ var rule = discountRule.rules.find(function (_rule) {
361
+ return _rule.field === IDiscountRule_1.RuleFieldEnum.QUANTITY && _rule.ruleDetails.find(function (detail) { return detail.operator === 'between'; });
362
+ });
363
+ if (!!!rule)
364
+ return [];
365
+ var details = rule.ruleDetails.find(function (detail) { return detail.operator === 'between'; });
366
+ if (!!!details)
367
+ return [];
368
+ return [
369
+ {
370
+ from: !!!details.value[1] || !!!(0, toNumber_1.default)(details.value[1])
371
+ ? details.value[0]
372
+ : (0, toNumber_1.default)(details.value[0]) < (0, toNumber_1.default)(details.value[1])
373
+ ? details.value[0]
374
+ : details.value[1],
375
+ to: !!!details.value[1] || !!!(0, toNumber_1.default)(details.value[1])
376
+ ? 0
377
+ : (0, toNumber_1.default)(details.value[0]) > (0, toNumber_1.default)(details.value[1])
378
+ ? details.value[0]
379
+ : details.value[1],
380
+ price: (0, currency_1.calculateAmountByCurrencyAllDetails)(space, space.preferences.default.currency(), (0, round_1.default)((0, exports.applyDiscountToPrice)(Number(price), discountRule.result), !!decimals ? decimals : 2)),
381
+ check_attribute_value: !!discountRule.appliesTo.check_attribute_value
382
+ ? discountRule.appliesTo.check_attribute_value
383
+ : '',
384
+ check_other_items_category: !!discountRule.appliesTo.check_other_items_category
385
+ ? discountRule.appliesTo.check_other_items_category
386
+ : '',
387
+ name: discountRule.name
388
+ }
389
+ ];
390
+ };
391
+ exports.applyTierPricing = applyTierPricing;
392
+ var getNewDiscountPriceFromTierPricing = function (item, setOriginalPrice, originalDecli) {
393
+ var tierPricingToApply = (0, exports.getTierPricingToApply)(item.tier_pricing, item.qte);
394
+ var currentDiscountPrice = item.discount_price;
395
+ var currentIsTierPricing = !!currentDiscountPrice && currentDiscountPrice.price_type === 'tierpricing';
396
+ var originalDiscountAmount = !!currentDiscountPrice ? currentDiscountPrice.original_amount : null;
397
+ var prevDiscountPrice = null;
398
+ if (!!currentIsTierPricing && typeof originalDiscountAmount === 'number') {
399
+ var price_type = currentDiscountPrice.price_type, original_amount = currentDiscountPrice.original_amount, rest = __rest(currentDiscountPrice, ["price_type", "original_amount"]);
400
+ prevDiscountPrice = __assign(__assign({}, rest), { amount: original_amount });
401
+ }
402
+ if (!!!tierPricingToApply) {
403
+ if (!!setOriginalPrice && !!currentDiscountPrice) {
404
+ var amountToSet = item.regular_price.amount;
405
+ if (!!originalDecli) {
406
+ var calculatedPrice = (0, products_1.getLowestPrice)(__assign(__assign({}, originalDecli), { qte: item.qte }));
407
+ amountToSet = calculatedPrice.price.amount;
408
+ }
409
+ return __assign(__assign({}, currentDiscountPrice), { original_amount: !!originalDecli ? amountToSet : item.regular_price.amount });
410
+ }
411
+ return !!currentIsTierPricing ? prevDiscountPrice : currentDiscountPrice !== null && currentDiscountPrice !== void 0 ? currentDiscountPrice : null;
412
+ }
413
+ if (!!setOriginalPrice && !!currentDiscountPrice) {
414
+ return __assign(__assign({}, currentDiscountPrice), { original_amount: tierPricingToApply.price.amount });
415
+ }
416
+ return __assign(__assign(__assign({}, tierPricingToApply.price), { price_type: 'tierpricing' }), (!!currentDiscountPrice
417
+ ? {
418
+ original_amount: typeof originalDiscountAmount === 'number' ? originalDiscountAmount : currentDiscountPrice.amount
419
+ }
420
+ : {}));
421
+ };
422
+ exports.getNewDiscountPriceFromTierPricing = getNewDiscountPriceFromTierPricing;
423
+ var applyDiscountRulesOnProduct = function (discount_rules, amount, space) {
424
+ if (!!!discount_rules || !!!discount_rules.length)
425
+ return undefined;
426
+ var discountIndex = 0;
427
+ var allPromo = discount_rules.filter(function (discount_rule) { return discount_rule.discountRule_type !== 'tier-pricing'; });
428
+ var current_promo_price = Number(amount);
429
+ for (var _i = 0, allPromo_1 = allPromo; _i < allPromo_1.length; _i++) {
430
+ var discount = allPromo_1[_i];
431
+ if (discountIndex > 0 && !discount.is_stackable)
432
+ break;
433
+ var amountToRemove = (0, exports.isPromoAPercentage)(discount)
434
+ ? (Number(discount.result.action_value) / 100) * current_promo_price
435
+ : Number(discount.result.action_value);
436
+ current_promo_price -= amountToRemove;
437
+ discountIndex++;
438
+ }
439
+ var spaceProductPrefs = space.preferences.products.get();
440
+ var allowNegativePrices = !!spaceProductPrefs && !!spaceProductPrefs.allow_negative_prices;
441
+ return current_promo_price === Number(amount)
442
+ ? undefined
443
+ : current_promo_price < 0 && !!!allowNegativePrices
444
+ ? 0
445
+ : current_promo_price;
446
+ };
447
+ exports.applyDiscountRulesOnProduct = applyDiscountRulesOnProduct;
448
+ var applyDiscountToPrice = function (initial, discountResultObj) {
449
+ return discountResultObj.action === 'amount'
450
+ ? initial - Number(discountResultObj.action_value)
451
+ : initial * (1 - Number(discountResultObj.action_value) / 100);
452
+ };
453
+ exports.applyDiscountToPrice = applyDiscountToPrice;
454
+ var getSkuArrayForPromo = function (valueToConvert) {
455
+ if (!!Array.isArray(valueToConvert))
456
+ return valueToConvert;
457
+ return [valueToConvert];
458
+ };
459
+ exports.getSkuArrayForPromo = getSkuArrayForPromo;
460
+ var getResultAppliedDiscountSkus = function (cartItems, promoToCheck) {
461
+ var _a, _b, _c;
462
+ var action = (_a = promoToCheck.result.action) !== null && _a !== void 0 ? _a : '';
463
+ var skuArray = (0, exports.getSkuArrayForPromo)((_b = promoToCheck.result.action_sku) !== null && _b !== void 0 ? _b : []);
464
+ var categoryArray = (_c = promoToCheck.result.action_categories) !== null && _c !== void 0 ? _c : [];
465
+ var productsToApplyPromo = cartItems
466
+ .filter(function (item) {
467
+ if (!!['amount_category', 'percent_category'].includes(action)) {
468
+ var categorySlugsToCheck_1 = (0, exports.getItemCategorySlugArray)(item.categories);
469
+ return categoryArray.some(function (cat) { return categorySlugsToCheck_1.includes(cat); });
470
+ }
471
+ return skuArray.includes(item.sku);
472
+ })
473
+ .map(function (item) { return item.sku; });
474
+ return productsToApplyPromo;
475
+ };
476
+ exports.getResultAppliedDiscountSkus = getResultAppliedDiscountSkus;
477
+ var getItemCategorySlugArray = function (itemCategories) {
478
+ if (!!!itemCategories)
479
+ return [];
480
+ var orderedByLevel = (0, orderBy_1.default)(Object.entries(itemCategories), function (_a) {
481
+ var key = _a[0], _value = _a[1];
482
+ return key;
483
+ });
484
+ var lastLevelCategory = !!orderedByLevel.length ? orderedByLevel[orderedByLevel.length - 1][1] : '';
485
+ return lastLevelCategory.split(' > ');
486
+ };
487
+ exports.getItemCategorySlugArray = getItemCategorySlugArray;
488
+ var applyDiscountToCart = function (cart, isMultiPromo, forceShipping, forcedPromos) {
489
+ var _a;
490
+ if (forceShipping === void 0) { forceShipping = false; }
491
+ var discountRules = !!forcedPromos
492
+ ? ((_a = cart.discount_rules) !== null && _a !== void 0 ? _a : []).filter(function (d) {
493
+ return (!!d.created && (0, moment_1.default)((0, data_1.formatDate)(d.created)).isBefore((0, moment_1.default)((0, data_1.formatDate)(cart.paid_at)))) ||
494
+ (!!d.promo_code && !!d.promo_code.code) ||
495
+ !!!d.created;
496
+ })
497
+ : cart.discount_rules;
498
+ if (!!!discountRules || !!!discountRules.length) {
499
+ return __assign(__assign(__assign({}, cart), (!!cart.cart_promo_applied ? { cart_promo_applied: null } : {})), (!!cart.cart_promos_applied ? { cart_promos_applied: null } : {}));
500
+ }
501
+ var newCart = __assign(__assign(__assign({}, cart), (!!cart.cart_promo_applied &&
502
+ !!!discountRules.some(function (dr) { return dr.id === cart.cart_promo_applied.discount_id; })
503
+ ? { cart_promo_applied: null }
504
+ : {})), (!!cart.cart_promos_applied
505
+ ? {
506
+ cart_promos_applied: cart.cart_promos_applied.filter(function (promo) {
507
+ return discountRules.some(function (dr) { return dr.id === promo.discount_id; });
508
+ })
509
+ }
510
+ : {}));
511
+ var checkIfCanAddPromo = function (promoToCheck) {
512
+ var currentPromos = newCart.cart_promos_applied;
513
+ if (!!!currentPromos || !!!currentPromos.length)
514
+ return true;
515
+ var currentPromosHasPromo = !!currentPromos.some(function (e) { return e.discount_id === promoToCheck.id; });
516
+ if (!!currentPromosHasPromo)
517
+ return false;
518
+ if (!!isMultiPromo) {
519
+ return !!promoToCheck.is_stackable && !!currentPromos.every(function (x) { return !!x.stackable; });
520
+ }
521
+ return true;
522
+ };
523
+ var currentPromos = (0, exports.getCartPromo)(newCart);
524
+ if (!!currentPromos) {
525
+ var shouldRemovePromo_1 = [];
526
+ var shouldUpdatePromo_1 = [];
527
+ var _loop_2 = function (appliedPromo) {
528
+ if (appliedPromo.applies_to === Cart_1.CartPromoAppliesToEnum.PRODUCT && !!appliedPromo.item_given) {
529
+ var sameInCartDiscounts = discountRules.find(function (d) { return d.id == appliedPromo.discount_id; });
530
+ if (!!sameInCartDiscounts) {
531
+ var itemsWherePromoApplicable = (0, exports.getResultAppliedDiscountSkus)(cart.items, sameInCartDiscounts);
532
+ if (!!!itemsWherePromoApplicable.length && !!appliedPromo.discount_id) {
533
+ shouldRemovePromo_1.push(appliedPromo.discount_id);
534
+ }
535
+ else if (itemsWherePromoApplicable.length !== appliedPromo.item_given.length) {
536
+ shouldUpdatePromo_1.push(__assign(__assign({}, appliedPromo), { item_given: itemsWherePromoApplicable }));
537
+ }
538
+ }
539
+ }
540
+ };
541
+ for (var _i = 0, currentPromos_1 = currentPromos; _i < currentPromos_1.length; _i++) {
542
+ var appliedPromo = currentPromos_1[_i];
543
+ _loop_2(appliedPromo);
544
+ }
545
+ newCart = __assign(__assign({}, newCart), (!!newCart.cart_promos_applied
546
+ ? {
547
+ cart_promos_applied: newCart.cart_promos_applied
548
+ .filter(function (promo) { return !shouldRemovePromo_1.includes(promo.discount_id); })
549
+ .map(function (promo) {
550
+ if (!!!shouldUpdatePromo_1.length)
551
+ return promo;
552
+ var sameInUpdated = shouldUpdatePromo_1.find(function (p) { return p.discount_id == promo.discount_id; });
553
+ return sameInUpdated !== null && sameInUpdated !== void 0 ? sameInUpdated : promo;
554
+ })
555
+ }
556
+ : {}));
557
+ }
558
+ var _loop_3 = function (discount) {
559
+ if (!!discount.promo_code && !!discount.promo_code.code) {
560
+ var promoCodeInCart = (currentPromos || []).find(function (p) { return p.discount_id == discount.id; });
561
+ if (!!promoCodeInCart) {
562
+ var shouldStillApplyCode = (0, exports.checkPromoCodeEligibility)(newCart, discount);
563
+ if (!!!shouldStillApplyCode) {
564
+ newCart = __assign(__assign(__assign({}, newCart), (!!newCart.cart_promo_applied && newCart.cart_promo_applied.discount_id === discount.id
565
+ ? { cart_promo_applied: null }
566
+ : {})), (!!newCart.cart_promos_applied
567
+ ? {
568
+ cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
569
+ }
570
+ : {}));
571
+ }
572
+ }
573
+ return "continue";
574
+ }
575
+ var promoType = (0, exports.getCartPromoType)(discount);
576
+ var currentDiscountMap = [];
577
+ if (promoType == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES &&
578
+ ((0, exports.getCartPromo)(newCart) || []).some(function (p) { return p.applies_to == Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES && p.discount_id != discount.id; })) {
579
+ currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, false]];
580
+ }
581
+ else if (promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING &&
582
+ (!!cart.is_pickup || !!!cart.shipping_selected) &&
583
+ !!!forceShipping) {
584
+ currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, false]];
585
+ }
586
+ else if (!!!discount.rules || !!!discount.rules.length) {
587
+ currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, true]];
588
+ }
589
+ else if (!!discount.draft) {
590
+ currentDiscountMap = [[IDiscountRule_1.RuleConditionEnum.AND, true]];
591
+ }
592
+ else {
593
+ currentDiscountMap = discount.rules.map(function (rule) {
594
+ return _checkIfRuleAppliesToCart(rule, discount.appliesTo, cart);
595
+ });
596
+ }
597
+ if (_checkRuleApplicationArray(currentDiscountMap)) {
598
+ if (discount.draft) {
599
+ newCart = __assign(__assign(__assign({}, newCart), (!!newCart.cart_promo_applied && newCart.cart_promo_applied.discount_id === discount.id
600
+ ? { cart_promo_applied: null }
601
+ : {})), (!!newCart.cart_promos_applied
602
+ ? {
603
+ cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
604
+ }
605
+ : {}));
606
+ }
607
+ else {
608
+ if (promoType === Cart_1.CartPromoAppliesToEnum.PRODUCT &&
609
+ (!!discount.result.action_sku || !!discount.result.action_categories)) {
610
+ var productsToApplyPromo = (0, exports.getResultAppliedDiscountSkus)(cart.items, discount);
611
+ if (!!productsToApplyPromo.length) {
612
+ var newPromo = __assign({ promo_name: (0, locale_1.getLocaleOfDictionnary)(discount.name, cart.locale), applies_to: promoType, amount_removed: Number(discount.result.action_value), amount_unit: discount.result.action, item_given: productsToApplyPromo, item_given_amount: 0, free_shipping: discount.result.action === IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, flatrate_shipping: 0, stackable: discount.is_stackable, discount_id: discount.id, promo_code: !!discount.promo_code ? discount.promo_code.code : undefined }, (typeof discount.result.exclude_services_and_fees === 'boolean'
613
+ ? {
614
+ exclude_services_and_fees: discount.result.exclude_services_and_fees
615
+ }
616
+ : {}));
617
+ if (!!checkIfCanAddPromo(discount)) {
618
+ newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], (newCart.cart_promos_applied || []), true), [newPromo], false) });
619
+ }
620
+ }
621
+ else {
622
+ newCart = __assign(__assign(__assign({}, newCart), (!!newCart.cart_promo_applied && newCart.cart_promo_applied.discount_id === discount.id
623
+ ? { cart_promo_applied: null }
624
+ : {})), (!!newCart.cart_promos_applied
625
+ ? {
626
+ cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
627
+ }
628
+ : {}));
629
+ }
630
+ }
631
+ else {
632
+ var newPromo = __assign({ promo_name: (0, locale_1.getLocaleOfDictionnary)(discount.name, cart.locale), applies_to: promoType, amount_removed: promoType !== Cart_1.CartPromoAppliesToEnum.SHIPPING ? Number(discount.result.action_value) : 0, amount_unit: discount.result.action, item_given: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS ? discount.result.action_value.toString() : '', item_given_amount: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS && !!discount.result.action_qte
633
+ ? Number(discount.result.action_qte)
634
+ : 0, stackable: discount.is_stackable, discount_id: discount.id, free_shipping: discount.result.action === IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, flatrate_shipping: promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING &&
635
+ discount.result.action === IDiscountRule_1.ResultActionEnum.FLATERATE_SHIPPING
636
+ ? Number(discount.result.action_value)
637
+ : 0, promo_code: !!discount.promo_code ? discount.promo_code.code : undefined }, (typeof discount.result.exclude_services_and_fees === 'boolean'
638
+ ? {
639
+ exclude_services_and_fees: discount.result.exclude_services_and_fees
640
+ }
641
+ : {}));
642
+ if (!!checkIfCanAddPromo(discount)) {
643
+ newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], (newCart.cart_promos_applied || []), true), [newPromo], false) });
644
+ }
645
+ }
646
+ }
647
+ }
648
+ else {
649
+ newCart = __assign(__assign(__assign({}, newCart), (!!cart.cart_promo_applied && cart.cart_promo_applied.discount_id === discount.id
650
+ ? { cart_promo_applied: null }
651
+ : {})), (!!newCart.cart_promos_applied
652
+ ? {
653
+ cart_promos_applied: newCart.cart_promos_applied.filter(function (p) { return p.discount_id !== discount.id; })
654
+ }
655
+ : {}));
656
+ }
657
+ };
658
+ for (var _b = 0, discountRules_1 = discountRules; _b < discountRules_1.length; _b++) {
659
+ var discount = discountRules_1[_b];
660
+ _loop_3(discount);
661
+ }
662
+ if (!!newCart.cart_promos_applied && !!isMultiPromo) {
663
+ var shippingPromo = newCart.cart_promos_applied.filter(function (x) { return x.applies_to === Cart_1.CartPromoAppliesToEnum.SHIPPING; });
664
+ if (!!shippingPromo && !!shippingPromo.length) {
665
+ var flatPrice = 1000000;
666
+ var promo = 0;
667
+ for (var i = 0; i < shippingPromo.length; i++) {
668
+ if (shippingPromo[i].amount_unit === 'free_shipping') {
669
+ promo = i;
670
+ break;
671
+ }
672
+ if (!!shippingPromo[i].flatrate_shipping && shippingPromo[i].flatrate_shipping < flatPrice) {
673
+ promo = i;
674
+ flatPrice = shippingPromo[i].flatrate_shipping;
675
+ }
676
+ }
677
+ var promoSansShipping = newCart.cart_promos_applied.filter(function (x) { return x.applies_to !== Cart_1.CartPromoAppliesToEnum.SHIPPING; });
678
+ newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], promoSansShipping, true), [shippingPromo[promo]], false) });
679
+ }
680
+ }
681
+ if (!!forcedPromos && !!forcedPromos.length) {
682
+ var appliedPromos_1 = !!newCart.cart_promos_applied && !!newCart.cart_promos_applied.length
683
+ ? newCart.cart_promos_applied.map(function (p) { return p.discount_id; })
684
+ : [];
685
+ var newForcedPromos = forcedPromos.filter(function (f) { return !!!appliedPromos_1.includes(f.discount_id); });
686
+ newCart = __assign(__assign({}, newCart), { cart_promos_applied: __spreadArray(__spreadArray([], (!!newCart.cart_promos_applied && !!newCart.cart_promos_applied.length ? newCart.cart_promos_applied : []), true), newForcedPromos, true) });
687
+ }
688
+ return __assign(__assign({}, newCart), { free_shipping: !!newCart.cart_promos_applied
689
+ ? newCart.cart_promos_applied.some(function (p) { return !!p.free_shipping; })
690
+ : !!newCart.cart_promo_applied && newCart.cart_promo_applied.free_shipping });
691
+ };
692
+ exports.applyDiscountToCart = applyDiscountToCart;
693
+ var getStandardCartPromoFromDiscount = function (cart, discount) {
694
+ var promoType = (0, exports.getCartPromoType)(discount);
695
+ return __assign({ promo_name: (0, locale_1.getLocaleOfDictionnary)(discount.name, cart.locale), applies_to: promoType, amount_removed: promoType !== Cart_1.CartPromoAppliesToEnum.SHIPPING ? Number(discount.result.action_value) : 0, amount_unit: discount.result.action, item_given: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS ? discount.result.action_value.toString() : '', item_given_amount: promoType === Cart_1.CartPromoAppliesToEnum.ITEMS && !!discount.result.action_qte
696
+ ? Number(discount.result.action_qte)
697
+ : 0, stackable: discount.is_stackable, discount_id: discount.id, free_shipping: discount.result.action === IDiscountRule_1.ResultActionEnum.FREE_SHIPPING, flatrate_shipping: promoType === Cart_1.CartPromoAppliesToEnum.SHIPPING && discount.result.action === IDiscountRule_1.ResultActionEnum.FLATERATE_SHIPPING
698
+ ? Number(discount.result.action_value)
699
+ : 0, promo_code: !!discount.promo_code ? discount.promo_code.code : undefined }, (typeof discount.result.exclude_services_and_fees === 'boolean'
700
+ ? {
701
+ exclude_services_and_fees: discount.result.exclude_services_and_fees
702
+ }
703
+ : {}));
704
+ };
705
+ exports.getStandardCartPromoFromDiscount = getStandardCartPromoFromDiscount;
706
+ var getOnlyServicesAndFeesSubtotal = function (cartData, allCurrentAppliedToItemPromos) {
707
+ var servicesAndFeesTotal = 0;
708
+ cartData.items.forEach(function (i) {
709
+ if (!!!i.is_service || !!(0, g2_1.isEscompteSuppItem)(i.sku))
710
+ return;
711
+ var associatedPromos = allCurrentAppliedToItemPromos.filter(function (p) { var _a; return (0, exports.getSkuArrayForPromo)((_a = p.item_given) !== null && _a !== void 0 ? _a : []).includes(i.sku); });
712
+ servicesAndFeesTotal += (0, round_1.default)(i.qte * (0, products_1.getLowestPrice)(i).price.amount, 3);
713
+ if (!!associatedPromos.length) {
714
+ for (var _i = 0, associatedPromos_1 = associatedPromos; _i < associatedPromos_1.length; _i++) {
715
+ var promo = associatedPromos_1[_i];
716
+ if (!!!promo.amount_removed)
717
+ continue;
718
+ if ((0, exports.isPromoAPercentage)(promo, { defaultToPercent: true })) {
719
+ servicesAndFeesTotal -= (0, round_1.default)((promo.amount_removed / 100) * (i.qte * (0, products_1.getLowestPrice)(i).price.amount), 3);
720
+ }
721
+ else {
722
+ servicesAndFeesTotal -= promo.amount_removed * i.qte;
723
+ }
724
+ }
725
+ }
726
+ });
727
+ return servicesAndFeesTotal;
728
+ };
729
+ exports.getOnlyServicesAndFeesSubtotal = getOnlyServicesAndFeesSubtotal;
730
+ var _checkIfRuleAppliesToCart = function (rule, appliesTo, cart) {
731
+ var _a;
732
+ var todayDate = (0, moment_1.default)().toDate();
733
+ var ruleCondition = (_a = rule.condition) !== null && _a !== void 0 ? _a : IDiscountRule_1.RuleConditionEnum.AND;
734
+ switch (rule.field) {
735
+ case IDiscountRule_1.RuleFieldEnum.CART_TOTAL:
736
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
737
+ return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, cart.subtotal)];
738
+ }));
739
+ case IDiscountRule_1.RuleFieldEnum.CART_ITEM_TOTAL:
740
+ var totalCartItems_1 = (0, sumBy_1.default)(cart.items, function (item) { return item.qte; });
741
+ if (!!appliesTo.check_other_items_category) {
742
+ var correspondingCartItems = cart.items.filter(function (item) {
743
+ if (!!item.tier_pricing && !!item.tier_pricing.length) {
744
+ return (!!item.tier_pricing[0].check_other_items_category &&
745
+ item.tier_pricing[0].check_other_items_category === appliesTo.check_other_items_category);
746
+ }
747
+ return false;
748
+ });
749
+ totalCartItems_1 = (0, sumBy_1.default)(correspondingCartItems, function (item) {
750
+ var amountInBox = 1;
751
+ var qte = item.qte;
752
+ if (!!item.attributes['8OUv9qj0aDbiLOovd4dp']) {
753
+ amountInBox = Number(item.attributes['8OUv9qj0aDbiLOovd4dp']);
754
+ }
755
+ return amountInBox * qte;
756
+ });
757
+ }
758
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
759
+ return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, totalCartItems_1)];
760
+ }));
761
+ case IDiscountRule_1.RuleFieldEnum.CART_ITEM:
762
+ if (!!cart) {
763
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
764
+ if (ruleDetail.operator === 'contains') {
765
+ return [ruleCondition, ruleDetail.value.every(function (v) { return !!cart.items.some(function (item) { return item.sku === v; }); })];
766
+ }
767
+ return [ruleCondition, !!!cart.items.find(function (item) { return !!ruleDetail.value.find(function (v) { return v === item.sku; }); })];
768
+ }));
769
+ }
770
+ case IDiscountRule_1.RuleFieldEnum.CUSTOMER:
771
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
772
+ return [ruleCondition, cart.customer_id === ruleDetail.value[0]];
773
+ }));
774
+ case IDiscountRule_1.RuleFieldEnum.CUSTOMER_TYPE:
775
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
776
+ if (ruleDetail.operator === '!=') {
777
+ return [
778
+ ruleCondition,
779
+ (!!cart.customer_info && !!!cart.customer_info.pro_title) ||
780
+ (!!cart.customer_info &&
781
+ !!cart.customer_info.pro_title &&
782
+ !!!ruleDetail.value.includes(cart.customer_info.pro_title))
783
+ ];
784
+ }
785
+ return [
786
+ ruleCondition,
787
+ !!cart.customer_info &&
788
+ !!cart.customer_info.pro_title &&
789
+ !!ruleDetail.value.includes(cart.customer_info.pro_title)
790
+ ];
791
+ }));
792
+ case IDiscountRule_1.RuleFieldEnum.DATE:
793
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
794
+ return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, todayDate)];
795
+ }));
796
+ case IDiscountRule_1.RuleFieldEnum.WEEKDAY:
797
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
798
+ return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, todayDate)];
799
+ }));
800
+ case IDiscountRule_1.RuleFieldEnum.CART_PLATFORM:
801
+ var cartPlatform_1 = !![Cart_1.CartTypeEnum.POS, Cart_1.CartTypeEnum.POS_TRANSACTIONNAL].includes(cart.cart_type)
802
+ ? Cart_1.CartTypeEnum.POS
803
+ : Cart_1.CartTypeEnum.WEB;
804
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
805
+ return [ruleCondition, (0, exports.getResultRuleDetail)(ruleDetail, cartPlatform_1)];
806
+ }));
807
+ case IDiscountRule_1.RuleFieldEnum.CART_TYPE:
808
+ var cartType_1 = cart.cart_content_type === Cart_1.CartContentTypeEnum.MIXED
809
+ ? Cart_1.CartContentTypeEnum.MIXED
810
+ : !!(0, cart_1.checkIfCartContainsType)(cart_2.CartGeneralTypeEnum.INSTALLATION, cart)
811
+ ? cart_2.CartGeneralTypeEnum.INSTALLATION
812
+ : (0, cart_1.getCartType)(cart);
813
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
814
+ var result = (0, exports.getResultRuleDetail)(ruleDetail, cartType_1);
815
+ for (var _i = 0, _a = ruleDetail.value; _i < _a.length; _i++) {
816
+ var value = _a[_i];
817
+ if (value === cart_2.CartGeneralTypeEnum.GRASS && cartType_1 === cart_2.CartGeneralTypeEnum.INSTALLATION)
818
+ result = true;
819
+ }
820
+ return [ruleCondition, result];
821
+ }));
822
+ case IDiscountRule_1.RuleFieldEnum.CART_ITEM_CATEGORIES:
823
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
824
+ var result = ruleDetail.operator !== 'contains';
825
+ for (var _i = 0, _a = cart.items; _i < _a.length; _i++) {
826
+ var i = _a[_i];
827
+ var categorySlugsToCheck = (0, exports.getItemCategorySlugArray)(i.categories);
828
+ if (!!categorySlugsToCheck.length) {
829
+ for (var _b = 0, _c = ruleDetail.value; _b < _c.length; _b++) {
830
+ var ruleValue = _c[_b];
831
+ if (!!categorySlugsToCheck.includes(ruleValue))
832
+ result = ruleDetail.operator !== 'contains' ? false : true;
833
+ }
834
+ }
835
+ }
836
+ return [ruleCondition, result];
837
+ }));
838
+ case IDiscountRule_1.RuleFieldEnum.ORDER_DAY:
839
+ var order_day_day_1 = !!cart.shipping_payload && !!cart.shipping_payload.delivery_or_pickup_date
840
+ ? cart.shipping_payload.delivery_or_pickup_date
841
+ : '';
842
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
843
+ return [ruleCondition, !!order_day_day_1 ? (0, exports.getResultRuleDetail)(ruleDetail, (0, moment_1.default)(order_day_day_1).day()) : false];
844
+ }));
845
+ case IDiscountRule_1.RuleFieldEnum.ORDER_TYPE:
846
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
847
+ return [
848
+ ruleCondition,
849
+ !!cart.is_pickup
850
+ ? ruleDetail.operator === '=='
851
+ ? !!ruleDetail.value.includes('pickup')
852
+ : !!!ruleDetail.value.includes('pickup')
853
+ : ruleDetail.operator === '=='
854
+ ? !!ruleDetail.value.includes('shipping')
855
+ : !!!ruleDetail.value.includes('shipping')
856
+ ];
857
+ }));
858
+ case IDiscountRule_1.RuleFieldEnum.PAYMENT_METHOD:
859
+ if (cart.custom_payment_type &&
860
+ cart.custom_payment_type.method == Cart_1.CustomPaymentTypeEnum.INCENTIVE) {
861
+ return [ruleCondition, true];
862
+ }
863
+ var paymentTypesToCompare_1 = !!cart.custom_payment_type
864
+ ? [cart.custom_payment_type.method]
865
+ : !!cart.payment_details && cart.payment_details.length
866
+ ? cart.payment_details.map(function (p) { return p.method; })
867
+ : !!cart.paid_by
868
+ ? [cart.paid_by]
869
+ : [];
870
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
871
+ var result = ruleDetail.operator == 'contains'
872
+ ? paymentTypesToCompare_1.some(function (type) { return ruleDetail.value.includes(type); })
873
+ : !paymentTypesToCompare_1.every(function (type) { return ruleDetail.value.includes(type); });
874
+ return [ruleCondition, result];
875
+ }));
876
+ case IDiscountRule_1.RuleFieldEnum.CUSTOMER_TERMS_CODE:
877
+ var customerTermsCode = (0, object_1.recursiveCheckObject)(cart, 'customer_info.terms_code');
878
+ var customerPrevTermsCode = (0, object_1.recursiveCheckObject)(cart, 'customer_info.previous_terms_code');
879
+ var trueTermsCode = customerTermsCode == 'HOLD' ? 'HOLD' : customerPrevTermsCode !== null && customerPrevTermsCode !== void 0 ? customerPrevTermsCode : customerTermsCode;
880
+ var termsCodeToCheck_1 = !!!trueTermsCode
881
+ ? undefined
882
+ : data_2.allCodesForHold.includes(trueTermsCode)
883
+ ? 'HOLD'
884
+ : data_2.allCodesForPSL.includes(trueTermsCode)
885
+ ? 'P.S.L'
886
+ : 'NET30';
887
+ return (0, flatten_1.default)(rule.ruleDetails.map(function (ruleDetail) {
888
+ var operator = ruleDetail.operator;
889
+ if (!!!termsCodeToCheck_1)
890
+ return [IDiscountRule_1.RuleConditionEnum.AND, operator == '!='];
891
+ return [
892
+ ruleCondition,
893
+ operator == '=='
894
+ ? ruleDetail.value.includes(termsCodeToCheck_1)
895
+ : !ruleDetail.value.includes(termsCodeToCheck_1)
896
+ ];
897
+ }));
898
+ default:
899
+ return [IDiscountRule_1.RuleConditionEnum.AND, true];
900
+ }
901
+ };
902
+ var _checkRuleApplicationArray = function (checkedRulesApplicationArray) {
903
+ return ((checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(IDiscountRule_1.RuleConditionEnum.OR) !== -1; }) &&
904
+ checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(true) !== -1; })) ||
905
+ (checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(IDiscountRule_1.RuleConditionEnum.AND) !== -1; }) &&
906
+ !checkedRulesApplicationArray.some(function (option) { return !!option && option.indexOf(false) !== -1; })));
907
+ };
908
+ var checkIfCouldApplyIncentivePromo = function (cartData, skipCheckFor) {
909
+ if (skipCheckFor === void 0) { skipCheckFor = []; }
910
+ var afterTaxesPromo = cartData.discount_rules.find(function (d) {
911
+ return !d.draft &&
912
+ (d.result.action == IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES ||
913
+ d.result.action == IDiscountRule_1.ResultActionEnum.AMOUNT_AFTER_TAXES);
914
+ });
915
+ if (!!!afterTaxesPromo)
916
+ return false;
917
+ if (!!!afterTaxesPromo.rules || afterTaxesPromo.rules.length == 0)
918
+ return true;
919
+ var appliesTo = afterTaxesPromo.appliesTo;
920
+ var canApply = afterTaxesPromo.rules.map(function (r) {
921
+ if (r.field && skipCheckFor.includes(r.field))
922
+ return [IDiscountRule_1.RuleConditionEnum.AND, true];
923
+ return _checkIfRuleAppliesToCart(r, appliesTo, cartData);
924
+ });
925
+ return _checkRuleApplicationArray(canApply);
926
+ };
927
+ exports.checkIfCouldApplyIncentivePromo = checkIfCouldApplyIncentivePromo;
928
+ var getAfterTaxesPromosTotalAmount = function (cartData, checkDiscountRules) {
929
+ var currentSubtotal = cartData.subtotal;
930
+ var afterTaxesPromo = (0, exports.getAfterTaxesPromoInCart)(cartData, checkDiscountRules);
931
+ var totalAmountForAfterTaxesPromos = 0;
932
+ if (!!afterTaxesPromo && !!afterTaxesPromo.amount_removed) {
933
+ if ((0, exports.isPromoAPercentage)(afterTaxesPromo, { includePaymentIncentiveInCheck: true })) {
934
+ totalAmountForAfterTaxesPromos += currentSubtotal * (afterTaxesPromo.amount_removed / 100);
935
+ }
936
+ else {
937
+ totalAmountForAfterTaxesPromos += afterTaxesPromo.amount_removed;
938
+ }
939
+ }
940
+ return totalAmountForAfterTaxesPromos;
941
+ };
942
+ exports.getAfterTaxesPromosTotalAmount = getAfterTaxesPromosTotalAmount;
943
+ var getAfterTaxesPromoInCart = function (cartData, checkDiscountRules) {
944
+ var _a;
945
+ var cartPromos = (_a = (0, exports.getCartPromo)(cartData)) !== null && _a !== void 0 ? _a : [];
946
+ var incentivePromo = cartPromos.find(function (p) { return p.applies_to === Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES; });
947
+ var discountIncentive = (0, exports.getPaymentIncentiveDiscount)(cartData.discount_rules);
948
+ if (!!checkDiscountRules &&
949
+ !!discountIncentive &&
950
+ (!!!incentivePromo || discountIncentive.result.action_value != incentivePromo.amount_removed)) {
951
+ incentivePromo = (0, exports.getStandardCartPromoFromDiscount)(cartData, discountIncentive);
952
+ }
953
+ return incentivePromo;
954
+ };
955
+ exports.getAfterTaxesPromoInCart = getAfterTaxesPromoInCart;
956
+ var getPaymentIncentiveDiscountInfo = function (cartData) {
957
+ var appliesToPaymentTypes = undefined;
958
+ var paymentIncentiveDiscount = (0, exports.getPaymentIncentiveDiscount)(cartData.discount_rules);
959
+ if (!!!paymentIncentiveDiscount)
960
+ return;
961
+ var ruleForPaymentType = (paymentIncentiveDiscount.rules || []).find(function (rule) { return rule.field == IDiscountRule_1.RuleFieldEnum.PAYMENT_METHOD; });
962
+ if (!!ruleForPaymentType) {
963
+ appliesToPaymentTypes = {
964
+ amount: (0, toNumber_1.default)(paymentIncentiveDiscount.result.action_value),
965
+ isPercent: (0, exports.isPromoAPercentage)(paymentIncentiveDiscount, { includePaymentIncentiveInCheck: true }),
966
+ paymentTypes: (0, flatten_1.default)(ruleForPaymentType.ruleDetails.map(function (d) { return (0, flatten_1.default)(d.value); }))
967
+ };
968
+ }
969
+ return appliesToPaymentTypes;
970
+ };
971
+ exports.getPaymentIncentiveDiscountInfo = getPaymentIncentiveDiscountInfo;
972
+ var getPaymentIncentiveDiscount = function (discountRules) {
973
+ if (!!!discountRules)
974
+ return;
975
+ var paymentIncentiveDiscount = discountRules.find(function (d) {
976
+ return !!d.result.action &&
977
+ [IDiscountRule_1.ResultActionEnum.AMOUNT_AFTER_TAXES, IDiscountRule_1.ResultActionEnum.PERCENT_AFTER_TAXES].includes(d.result.action);
978
+ });
979
+ return paymentIncentiveDiscount;
980
+ };
981
+ exports.getPaymentIncentiveDiscount = getPaymentIncentiveDiscount;
982
982
  //# sourceMappingURL=discount.js.map