addio-admin-sdk 1.7.21 → 1.7.22

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