addio-admin-sdk 1.6.13 → 1.6.14

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