addio-admin-sdk 1.7.144 → 1.7.146
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.
- package/.babelrc +17 -17
- package/.env +15 -0
- package/.env.dev +14 -14
- package/.github/workflows/run_unit_test.yaml +48 -48
- package/addio-sdk-doc.md +1473 -1473
- package/changelog.md +564 -564
- package/dist/Interfaces/Address/index.d.ts +21 -21
- package/dist/Interfaces/Address/index.js +16 -16
- package/dist/Interfaces/Algolia/index.d.ts +177 -177
- package/dist/Interfaces/Algolia/index.js +2 -2
- package/dist/Interfaces/Attachement/index.d.ts +5 -5
- package/dist/Interfaces/Attachement/index.js +2 -2
- package/dist/Interfaces/Attribute/index.d.ts +53 -53
- package/dist/Interfaces/Attribute/index.js +10 -10
- package/dist/Interfaces/BGJob/index.d.ts +56 -56
- package/dist/Interfaces/BGJob/index.js +25 -25
- package/dist/Interfaces/BaseClass/index.d.ts +8 -8
- package/dist/Interfaces/BaseClass/index.js +2 -2
- package/dist/Interfaces/Blog/IBlogArticle.d.ts +18 -18
- package/dist/Interfaces/Blog/IBlogArticle.js +2 -2
- package/dist/Interfaces/Blog/IBlogAuthor.d.ts +7 -7
- package/dist/Interfaces/Blog/IBlogAuthor.js +2 -2
- package/dist/Interfaces/Blog/IBlogCategory.d.ts +9 -9
- package/dist/Interfaces/Blog/IBlogCategory.js +2 -2
- package/dist/Interfaces/Blog/IBlogComment.d.ts +13 -13
- package/dist/Interfaces/Blog/IBlogComment.js +2 -2
- package/dist/Interfaces/Blog/IBlogKeywords.d.ts +9 -9
- package/dist/Interfaces/Blog/IBlogKeywords.js +2 -2
- package/dist/Interfaces/Booking/index.d.ts +74 -74
- package/dist/Interfaces/Booking/index.js +17 -17
- package/dist/Interfaces/Brand/index.d.ts +15 -15
- package/dist/Interfaces/Brand/index.js +2 -2
- package/dist/Interfaces/CMS/index.d.ts +28 -28
- package/dist/Interfaces/CMS/index.js +5 -5
- package/dist/Interfaces/Cart/IElavonPayload.d.ts +93 -93
- package/dist/Interfaces/Cart/IElavonPayload.js +17 -17
- package/dist/Interfaces/Cart/IPandaPayload.d.ts +64 -64
- package/dist/Interfaces/Cart/IPandaPayload.js +18 -18
- package/dist/Interfaces/Cart/IPaymentCard.d.ts +22 -22
- package/dist/Interfaces/Cart/IPaymentCard.js +44 -44
- package/dist/Interfaces/Cart/IPaypalPayload.d.ts +9 -9
- package/dist/Interfaces/Cart/IPaypalPayload.js +2 -2
- package/dist/Interfaces/Cart/IPaysafePayload.d.ts +72 -72
- package/dist/Interfaces/Cart/IPaysafePayload.js +2 -2
- package/dist/Interfaces/Cart/IStripePayload.d.ts +66 -66
- package/dist/Interfaces/Cart/IStripePayload.js +2 -2
- package/dist/Interfaces/Cart/index.d.ts +444 -444
- package/dist/Interfaces/Cart/index.js +197 -197
- package/dist/Interfaces/CartReservedQuantities/index.d.ts +10 -10
- package/dist/Interfaces/CartReservedQuantities/index.js +2 -2
- package/dist/Interfaces/CashDrawers/index.d.ts +37 -37
- package/dist/Interfaces/CashDrawers/index.js +19 -19
- package/dist/Interfaces/Catalogue/index.d.ts +68 -68
- package/dist/Interfaces/Catalogue/index.js +37 -37
- package/dist/Interfaces/Category/index.d.ts +33 -33
- package/dist/Interfaces/Category/index.js +2 -2
- package/dist/Interfaces/Chart/index.d.ts +11 -11
- package/dist/Interfaces/Chart/index.js +2 -2
- package/dist/Interfaces/Class/index.d.ts +8 -8
- package/dist/Interfaces/Class/index.js +2 -2
- package/dist/Interfaces/Consent/index.d.ts +6 -6
- package/dist/Interfaces/Consent/index.js +2 -2
- package/dist/Interfaces/Context/IContextProps.d.ts +4 -4
- package/dist/Interfaces/Context/IContextProps.js +2 -2
- package/dist/Interfaces/Context/IContextState.d.ts +15 -15
- package/dist/Interfaces/Context/IContextState.js +2 -2
- package/dist/Interfaces/Customer/ICustomerBadge.d.ts +2 -2
- package/dist/Interfaces/Customer/ICustomerBadge.js +2 -2
- package/dist/Interfaces/Customer/ICustomerRating.d.ts +10 -10
- package/dist/Interfaces/Customer/ICustomerRating.js +2 -2
- package/dist/Interfaces/Customer/IStoreCredit.d.ts +13 -13
- package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
- package/dist/Interfaces/Customer/index.d.ts +104 -104
- package/dist/Interfaces/Customer/index.js +148 -148
- package/dist/Interfaces/Declination/index.d.ts +117 -117
- package/dist/Interfaces/Declination/index.js +66 -66
- package/dist/Interfaces/Document/index.d.ts +8 -8
- package/dist/Interfaces/Document/index.js +2 -2
- package/dist/Interfaces/Elastic/index.d.ts +89 -89
- package/dist/Interfaces/Elastic/index.js +2 -2
- package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.d.ts +11 -11
- package/dist/Interfaces/Email/CustomGR/I3DPrintEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.d.ts +15 -15
- package/dist/Interfaces/Email/CustomGR/IBorrowToolsEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/IPickupMaterialsEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.d.ts +36 -36
- package/dist/Interfaces/Email/CustomGR/IPreMeetingFormEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/ISponsorRequestEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/ITransportEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/ITransportEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.d.ts +12 -12
- package/dist/Interfaces/Email/CustomGR/ITransportQuoteEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.d.ts +16 -16
- package/dist/Interfaces/Email/CustomGR/IVegetalsEmail.js +2 -2
- package/dist/Interfaces/Email/CustomGR/IWishlistEmail.d.ts +15 -15
- package/dist/Interfaces/Email/CustomGR/IWishlistEmail.js +2 -2
- package/dist/Interfaces/Email/IAbandonnedCartEmail.d.ts +29 -29
- package/dist/Interfaces/Email/IAbandonnedCartEmail.js +2 -2
- package/dist/Interfaces/Email/IAccountConfirmationEmail.d.ts +22 -22
- package/dist/Interfaces/Email/IAccountConfirmationEmail.js +2 -2
- package/dist/Interfaces/Email/IApplicationEmail.d.ts +19 -19
- package/dist/Interfaces/Email/IApplicationEmail.js +2 -2
- package/dist/Interfaces/Email/IBackInStockEmail.d.ts +21 -21
- package/dist/Interfaces/Email/IBackInStockEmail.js +2 -2
- package/dist/Interfaces/Email/IContactEmail.d.ts +20 -20
- package/dist/Interfaces/Email/IContactEmail.js +2 -2
- package/dist/Interfaces/Email/ICustomerBookingAdminEmail.d.ts +15 -15
- package/dist/Interfaces/Email/ICustomerBookingAdminEmail.js +2 -2
- package/dist/Interfaces/Email/ICustomerBookingEmail.d.ts +14 -14
- package/dist/Interfaces/Email/ICustomerBookingEmail.js +2 -2
- package/dist/Interfaces/Email/IEmail.d.ts +20 -20
- package/dist/Interfaces/Email/IEmail.js +60 -60
- package/dist/Interfaces/Email/IOrderConfirmationEmail.d.ts +47 -47
- package/dist/Interfaces/Email/IOrderConfirmationEmail.js +2 -2
- package/dist/Interfaces/Email/IPasswordResetEmail.d.ts +17 -17
- package/dist/Interfaces/Email/IPasswordResetEmail.js +2 -2
- package/dist/Interfaces/Email/IPhotoShootEmail.d.ts +14 -14
- package/dist/Interfaces/Email/IPhotoShootEmail.js +2 -2
- package/dist/Interfaces/Email/IPickupConfirmation.d.ts +23 -23
- package/dist/Interfaces/Email/IPickupConfirmation.js +2 -2
- package/dist/Interfaces/Email/IShippingConfirmation.d.ts +23 -23
- package/dist/Interfaces/Email/IShippingConfirmation.js +2 -2
- package/dist/Interfaces/Email/IWelcomeEmail.d.ts +19 -19
- package/dist/Interfaces/Email/IWelcomeEmail.js +2 -2
- package/dist/Interfaces/ExportSchema/index.d.ts +7 -7
- package/dist/Interfaces/ExportSchema/index.js +2 -2
- package/dist/Interfaces/ExternalService/BaseExternalService.d.ts +12 -12
- package/dist/Interfaces/ExternalService/BaseExternalService.js +2 -2
- package/dist/Interfaces/ExternalService/ExternalProductsService.d.ts +4 -4
- package/dist/Interfaces/ExternalService/ExternalProductsService.js +2 -2
- package/dist/Interfaces/ExternalService/index.d.ts +9 -9
- package/dist/Interfaces/ExternalService/index.js +2 -2
- package/dist/Interfaces/FirstOrderTracking/index.d.ts +5 -5
- package/dist/Interfaces/FirstOrderTracking/index.js +2 -2
- package/dist/Interfaces/G2/index.d.ts +556 -556
- package/dist/Interfaces/G2/index.js +38 -38
- package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.d.ts +20 -20
- package/dist/Interfaces/Indexed/Product/IIndexedLastSavedProduct.js +2 -2
- package/dist/Interfaces/Indexed/Product/index.d.ts +105 -105
- package/dist/Interfaces/Indexed/Product/index.js +253 -253
- package/dist/Interfaces/Inventory/index.d.ts +19 -19
- package/dist/Interfaces/Inventory/index.js +8 -8
- package/dist/Interfaces/Invoice/index.d.ts +4 -4
- package/dist/Interfaces/Invoice/index.js +2 -2
- package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.d.ts +3 -3
- package/dist/Interfaces/MarketplacePublication/MarketplaceOrderData.js +2 -2
- package/dist/Interfaces/MarketplacePublication/index.d.ts +23 -23
- package/dist/Interfaces/MarketplacePublication/index.js +22 -22
- package/dist/Interfaces/Menu/index.d.ts +40 -40
- package/dist/Interfaces/Menu/index.js +16 -16
- package/dist/Interfaces/Note/index.d.ts +10 -10
- package/dist/Interfaces/Note/index.js +7 -7
- package/dist/Interfaces/Operations/ICreatedBy.d.ts +6 -6
- package/dist/Interfaces/Operations/ICreatedBy.js +2 -2
- package/dist/Interfaces/Operations/IUpdate.d.ts +5 -5
- package/dist/Interfaces/Operations/IUpdate.js +2 -2
- package/dist/Interfaces/Order/index.d.ts +4 -4
- package/dist/Interfaces/Order/index.js +2 -2
- package/dist/Interfaces/Org/IRelUser.d.ts +9 -9
- package/dist/Interfaces/Org/IRelUser.js +2 -2
- package/dist/Interfaces/Org/index.d.ts +29 -29
- package/dist/Interfaces/Org/index.js +12 -12
- package/dist/Interfaces/Payment/index.d.ts +26 -26
- package/dist/Interfaces/Payment/index.js +14 -14
- package/dist/Interfaces/Product/IAttributeFamily.d.ts +6 -6
- package/dist/Interfaces/Product/IAttributeFamily.js +2 -2
- package/dist/Interfaces/Product/IImportProduct.d.ts +42 -42
- package/dist/Interfaces/Product/IImportProduct.js +882 -882
- package/dist/Interfaces/Product/IInventoryItem.d.ts +74 -74
- package/dist/Interfaces/Product/IInventoryItem.js +38 -38
- package/dist/Interfaces/Product/IPricing.d.ts +177 -177
- package/dist/Interfaces/Product/IPricing.js +180 -180
- package/dist/Interfaces/Product/index.d.ts +138 -138
- package/dist/Interfaces/Product/index.js +64 -64
- package/dist/Interfaces/ProductAttribute/index.d.ts +11 -11
- package/dist/Interfaces/ProductAttribute/index.js +2 -2
- package/dist/Interfaces/PromiseToPurchase/BankType.d.ts +41 -41
- package/dist/Interfaces/PromiseToPurchase/BankType.js +41 -41
- package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.d.ts +33 -33
- package/dist/Interfaces/PromiseToPurchase/IIndexedBankUsed.js +15 -15
- package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.d.ts +19 -19
- package/dist/Interfaces/PromiseToPurchase/IIndexedCustomerPromiseToPurchase.js +2 -2
- package/dist/Interfaces/PromiseToPurchase/index.d.ts +50 -50
- package/dist/Interfaces/PromiseToPurchase/index.js +13 -13
- package/dist/Interfaces/PurchaseOrder/index.d.ts +17 -17
- package/dist/Interfaces/PurchaseOrder/index.js +2 -2
- package/dist/Interfaces/Query/IBrandQueryOptions.d.ts +11 -11
- package/dist/Interfaces/Query/IBrandQueryOptions.js +2 -2
- package/dist/Interfaces/Query/ICategoryQueryOptions.d.ts +11 -11
- package/dist/Interfaces/Query/ICategoryQueryOptions.js +2 -2
- package/dist/Interfaces/Query/IProductQueryOptions.d.ts +16 -16
- package/dist/Interfaces/Query/IProductQueryOptions.js +2 -2
- package/dist/Interfaces/Quote/index.d.ts +5 -5
- package/dist/Interfaces/Quote/index.js +2 -2
- package/dist/Interfaces/Refunds/index.d.ts +106 -106
- package/dist/Interfaces/Refunds/index.js +2 -2
- package/dist/Interfaces/Rules/IDiscountRule.d.ts +155 -155
- package/dist/Interfaces/Rules/IDiscountRule.js +114 -114
- package/dist/Interfaces/Schedule/index.d.ts +48 -48
- package/dist/Interfaces/Schedule/index.js +2 -2
- package/dist/Interfaces/Services/IAddServiceResponse.d.ts +4 -4
- package/dist/Interfaces/Services/IAddServiceResponse.js +2 -2
- package/dist/Interfaces/Services/IService.d.ts +16 -16
- package/dist/Interfaces/Services/IService.js +2 -2
- package/dist/Interfaces/Services/IServiceSecret.d.ts +8 -8
- package/dist/Interfaces/Services/IServiceSecret.js +2 -2
- package/dist/Interfaces/Shipping/Shipstation/carriers.d.ts +10 -10
- package/dist/Interfaces/Shipping/Shipstation/carriers.js +2 -2
- package/dist/Interfaces/Shipping/Shipstation/order.d.ts +227 -227
- package/dist/Interfaces/Shipping/Shipstation/order.js +2 -2
- package/dist/Interfaces/Shipping/Shipstation/quote.d.ts +31 -31
- package/dist/Interfaces/Shipping/Shipstation/quote.js +2 -2
- package/dist/Interfaces/Shipping/Shiptime/order.d.ts +54 -54
- package/dist/Interfaces/Shipping/Shiptime/order.js +71 -71
- package/dist/Interfaces/Shipping/Shiptime/quote.d.ts +111 -111
- package/dist/Interfaces/Shipping/Shiptime/quote.js +2 -2
- package/dist/Interfaces/Slider/GR.d.ts +114 -114
- package/dist/Interfaces/Slider/GR.js +271 -271
- package/dist/Interfaces/Slider/index.d.ts +30 -30
- package/dist/Interfaces/Slider/index.js +2 -2
- package/dist/Interfaces/Space/IExternalService.d.ts +53 -53
- package/dist/Interfaces/Space/IExternalService.js +44 -44
- package/dist/Interfaces/Space/IMember.d.ts +16 -16
- package/dist/Interfaces/Space/IMember.js +9 -9
- package/dist/Interfaces/Space/index.d.ts +407 -405
- package/dist/Interfaces/Space/index.js +174 -174
- package/dist/Interfaces/Space/index.js.map +1 -1
- package/dist/Interfaces/Specials/gr.d.ts +61 -61
- package/dist/Interfaces/Specials/gr.js +2 -2
- package/dist/Interfaces/StockNotification/index.d.ts +7 -7
- package/dist/Interfaces/StockNotification/index.js +2 -2
- package/dist/Interfaces/Store/index.d.ts +63 -63
- package/dist/Interfaces/Store/index.js +27 -27
- package/dist/Interfaces/Supplier/ICommand.d.ts +11 -11
- package/dist/Interfaces/Supplier/ICommand.js +2 -2
- package/dist/Interfaces/Supplier/index.d.ts +36 -36
- package/dist/Interfaces/Supplier/index.js +24 -24
- package/dist/Interfaces/TCG/index.d.ts +161 -161
- package/dist/Interfaces/TCG/index.js +54 -54
- package/dist/Interfaces/Tag/index.d.ts +18 -18
- package/dist/Interfaces/Tag/index.js +2 -2
- package/dist/Interfaces/Tax/index.d.ts +13 -13
- package/dist/Interfaces/Tax/index.js +2 -2
- package/dist/Interfaces/TransferRequest/index.d.ts +103 -103
- package/dist/Interfaces/TransferRequest/index.js +46 -46
- package/dist/Interfaces/Translation/index.d.ts +8 -8
- package/dist/Interfaces/Translation/index.js +5 -5
- package/dist/Interfaces/Update/index.d.ts +10 -10
- package/dist/Interfaces/Update/index.js +2 -2
- package/dist/Interfaces/User/IUser.d.ts +65 -65
- package/dist/Interfaces/User/IUser.js +8 -8
- package/dist/Interfaces/Version/index.d.ts +11 -11
- package/dist/Interfaces/Version/index.js +2 -2
- package/dist/Interfaces/Wishlist/index.d.ts +7 -7
- package/dist/Interfaces/Wishlist/index.js +2 -2
- package/dist/constants/Interfaces/IBaseApi.d.ts +15 -15
- package/dist/constants/Interfaces/IBaseApi.js +2 -2
- package/dist/constants/Interfaces/IEndpointResult.d.ts +9 -9
- package/dist/constants/Interfaces/IEndpointResult.js +2 -2
- package/dist/constants/enums.d.ts +6 -6
- package/dist/constants/enums.js +10 -10
- package/dist/constants/services.d.ts +2 -2
- package/dist/constants/services.js +117 -117
- package/dist/constants/version.d.ts +2 -2
- package/dist/constants/version.js +5 -5
- package/dist/index.d.ts +50 -50
- package/dist/index.js +266 -266
- package/dist/lib/Attribute/index.d.ts +14 -14
- package/dist/lib/Attribute/index.js +186 -186
- package/dist/lib/BGJob/index.d.ts +9 -9
- package/dist/lib/BGJob/index.js +216 -216
- package/dist/lib/BackgroundWorker/index.d.ts +34 -34
- package/dist/lib/BackgroundWorker/index.js +59 -59
- package/dist/lib/Blog/BlogArticle.d.ts +5 -5
- package/dist/lib/Blog/BlogArticle.js +10 -10
- package/dist/lib/Blog/BlogAuthor.d.ts +5 -5
- package/dist/lib/Blog/BlogAuthor.js +10 -10
- package/dist/lib/Blog/BlogCategory.d.ts +5 -5
- package/dist/lib/Blog/BlogCategory.js +10 -10
- package/dist/lib/Blog/BlogKeyword.d.ts +5 -5
- package/dist/lib/Blog/BlogKeyword.js +10 -10
- package/dist/lib/Booking/index.d.ts +85 -85
- package/dist/lib/Booking/index.js +596 -596
- package/dist/lib/Brand/index.d.ts +26 -26
- package/dist/lib/Brand/index.js +131 -131
- package/dist/lib/Cart/index.d.ts +335 -335
- package/dist/lib/Cart/index.js +3981 -3977
- package/dist/lib/Cart/index.js.map +1 -1
- package/dist/lib/CartReservedQuantities/index.d.ts +49 -49
- package/dist/lib/CartReservedQuantities/index.js +159 -159
- package/dist/lib/CashDrawerShift/index.d.ts +83 -83
- package/dist/lib/CashDrawerShift/index.js +205 -205
- package/dist/lib/Catalogue/index.d.ts +15 -15
- package/dist/lib/Catalogue/index.js +78 -78
- package/dist/lib/Category/index.d.ts +34 -34
- package/dist/lib/Category/index.js +230 -230
- package/dist/lib/Class/index.d.ts +16 -16
- package/dist/lib/Class/index.js +66 -66
- package/dist/lib/Consent/index.d.ts +4 -4
- package/dist/lib/Consent/index.js +29 -29
- package/dist/lib/Customer/index.d.ts +30 -30
- package/dist/lib/Customer/index.js +92 -92
- package/dist/lib/Declination/index.d.ts +9 -9
- package/dist/lib/Declination/index.js +26 -26
- package/dist/lib/Discount/index.d.ts +27 -27
- package/dist/lib/Discount/index.js +493 -493
- package/dist/lib/ElasticSearch/index.d.ts +13 -13
- package/dist/lib/ElasticSearch/index.js +50 -50
- package/dist/lib/Elavon/index.d.ts +18 -18
- package/dist/lib/Elavon/index.js +135 -135
- package/dist/lib/Email/AbandonedCartEmail.d.ts +16 -16
- package/dist/lib/Email/AbandonedCartEmail.js +24 -24
- package/dist/lib/Email/AccountConfirmationEmail.d.ts +19 -19
- package/dist/lib/Email/AccountConfirmationEmail.js +30 -30
- package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +16 -16
- package/dist/lib/Email/AdminOrderConfirmationEmail.js +24 -24
- package/dist/lib/Email/ApplicationEmail.d.ts +16 -16
- package/dist/lib/Email/ApplicationEmail.js +24 -24
- package/dist/lib/Email/BackInStockEmail.d.ts +16 -16
- package/dist/lib/Email/BackInStockEmail.js +24 -24
- package/dist/lib/Email/ContactEmail.d.ts +16 -16
- package/dist/lib/Email/ContactEmail.js +24 -24
- package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +16 -16
- package/dist/lib/Email/CustomerBookingAdminEmail.js +24 -24
- package/dist/lib/Email/CustomerBookingEmail.d.ts +16 -16
- package/dist/lib/Email/CustomerBookingEmail.js +24 -24
- package/dist/lib/Email/OrderConfirmationEmail.d.ts +16 -16
- package/dist/lib/Email/OrderConfirmationEmail.js +24 -24
- package/dist/lib/Email/OrderDenounciationEmail.d.ts +16 -16
- package/dist/lib/Email/OrderDenounciationEmail.js +24 -24
- package/dist/lib/Email/OrderSampleEmail.d.ts +16 -16
- package/dist/lib/Email/OrderSampleEmail.js +24 -24
- package/dist/lib/Email/OtherTypeEmails.d.ts +16 -16
- package/dist/lib/Email/OtherTypeEmails.js +27 -27
- package/dist/lib/Email/PasswordResetEmail.d.ts +16 -16
- package/dist/lib/Email/PasswordResetEmail.js +24 -24
- package/dist/lib/Email/PhotoShootEmail.d.ts +16 -16
- package/dist/lib/Email/PhotoShootEmail.js +24 -24
- package/dist/lib/Email/PickUpConfirmation.d.ts +16 -16
- package/dist/lib/Email/PickUpConfirmation.js +24 -24
- package/dist/lib/Email/ShippingConfirmation.d.ts +16 -16
- package/dist/lib/Email/ShippingConfirmation.js +24 -24
- package/dist/lib/Email/WelcomeEmail.d.ts +16 -16
- package/dist/lib/Email/WelcomeEmail.js +24 -24
- package/dist/lib/Email/index.d.ts +16 -16
- package/dist/lib/Email/index.js +31 -31
- package/dist/lib/ExternalService/Ebay.d.ts +74 -74
- package/dist/lib/ExternalService/Ebay.js +124 -124
- package/dist/lib/ExternalService/index.d.ts +5 -5
- package/dist/lib/ExternalService/index.js +10 -10
- package/dist/lib/FirstOrderTracking/index.d.ts +5 -5
- package/dist/lib/FirstOrderTracking/index.js +10 -10
- package/dist/lib/Indexed/IndexedCart.d.ts +13 -13
- package/dist/lib/Indexed/IndexedCart.js +91 -91
- package/dist/lib/Indexed/Product.d.ts +17 -17
- package/dist/lib/Indexed/Product.js +98 -98
- package/dist/lib/Inventory/index.d.ts +112 -112
- package/dist/lib/Inventory/index.js +492 -492
- package/dist/lib/Invoice/index.d.ts +16 -16
- package/dist/lib/Invoice/index.js +21 -21
- package/dist/lib/MarketplacePublication/index.d.ts +9 -9
- package/dist/lib/MarketplacePublication/index.js +426 -426
- package/dist/lib/Menu/index.d.ts +11 -11
- package/dist/lib/Menu/index.js +107 -107
- package/dist/lib/MongoDB/BaseAPI.d.ts +18 -18
- package/dist/lib/MongoDB/BaseAPI.js +200 -200
- package/dist/lib/Note/index.d.ts +4 -4
- package/dist/lib/Note/index.js +6 -6
- package/dist/lib/Order/index.d.ts +27 -27
- package/dist/lib/Order/index.js +56 -56
- package/dist/lib/Org/index.d.ts +68 -68
- package/dist/lib/Org/index.js +216 -216
- package/dist/lib/PandaPay/index.d.ts +16 -16
- package/dist/lib/PandaPay/index.js +176 -176
- package/dist/lib/Paysafe/index.d.ts +11 -11
- package/dist/lib/Paysafe/index.js +41 -41
- package/dist/lib/Product/index.d.ts +182 -182
- package/dist/lib/Product/index.js +847 -847
- package/dist/lib/ProductAttribute/index.d.ts +15 -15
- package/dist/lib/ProductAttribute/index.js +45 -45
- package/dist/lib/PromiseToPurchase/index.d.ts +109 -109
- package/dist/lib/PromiseToPurchase/index.js +343 -343
- package/dist/lib/PurchaseOrder/index.d.ts +20 -20
- package/dist/lib/PurchaseOrder/index.js +28 -28
- package/dist/lib/Queue/index.d.ts +40 -40
- package/dist/lib/Queue/index.js +254 -254
- package/dist/lib/Schedule/index.d.ts +5 -5
- package/dist/lib/Schedule/index.js +12 -12
- package/dist/lib/Service/Enum/ServiceEnum.d.ts +3 -3
- package/dist/lib/Service/Enum/ServiceEnum.js +7 -7
- package/dist/lib/Service/index.d.ts +13 -13
- package/dist/lib/Service/index.js +21 -21
- package/dist/lib/Shipment/index.d.ts +28 -28
- package/dist/lib/Shipment/index.js +370 -370
- package/dist/lib/Slider/index.d.ts +22 -22
- package/dist/lib/Slider/index.js +119 -119
- package/dist/lib/Space/index.d.ts +1150 -1150
- package/dist/lib/Space/index.js +5792 -5792
- package/dist/lib/StockNotification/index.d.ts +4 -4
- package/dist/lib/StockNotification/index.js +6 -6
- package/dist/lib/Store/index.d.ts +5 -5
- package/dist/lib/Store/index.js +12 -12
- package/dist/lib/Supplier/Command.d.ts +5 -5
- package/dist/lib/Supplier/Command.js +10 -10
- package/dist/lib/Supplier/index.d.ts +25 -25
- package/dist/lib/Supplier/index.js +27 -27
- package/dist/lib/Tags/index.d.ts +6 -6
- package/dist/lib/Tags/index.js +26 -26
- package/dist/lib/Tax/index.d.ts +8 -8
- package/dist/lib/Tax/index.js +54 -54
- package/dist/lib/TransferRequest/index.d.ts +290 -290
- package/dist/lib/TransferRequest/index.js +1026 -1026
- package/dist/lib/Update/index.d.ts +10 -10
- package/dist/lib/Update/index.js +22 -22
- package/dist/lib/User/index.d.ts +89 -89
- package/dist/lib/User/index.js +328 -328
- package/dist/lib/Wishlist/index.d.ts +5 -5
- package/dist/lib/Wishlist/index.js +10 -10
- package/dist/lib/base.d.ts +14 -14
- package/dist/lib/base.js +62 -62
- package/dist/lib/baseService.d.ts +17 -17
- package/dist/lib/baseService.js +69 -69
- package/dist/rules/GR/constants/data.d.ts +26 -26
- package/dist/rules/GR/constants/data.js +81 -81
- package/dist/rules/GR/constants/expedition.d.ts +4 -4
- package/dist/rules/GR/constants/expedition.js +9 -9
- package/dist/rules/GR/constants/products.d.ts +22 -22
- package/dist/rules/GR/constants/products.js +263 -263
- package/dist/rules/GR/interfaces/cart.d.ts +84 -84
- package/dist/rules/GR/interfaces/cart.js +41 -41
- package/dist/rules/GR/interfaces/data.d.ts +101 -101
- package/dist/rules/GR/interfaces/data.js +114 -114
- package/dist/rules/GR/interfaces/products.d.ts +61 -61
- package/dist/rules/GR/interfaces/products.js +10 -10
- package/dist/rules/GR/utils/cart.d.ts +95 -95
- package/dist/rules/GR/utils/cart.js +839 -836
- package/dist/rules/GR/utils/cart.js.map +1 -1
- package/dist/rules/GR/utils/data.d.ts +3 -3
- package/dist/rules/GR/utils/data.js +28 -28
- package/dist/rules/GR/utils/expedition.d.ts +140 -140
- package/dist/rules/GR/utils/expedition.js +2016 -2016
- package/dist/rules/GR/utils/g2.d.ts +209 -209
- package/dist/rules/GR/utils/g2.js +999 -999
- package/dist/rules/GR/utils/invoices.d.ts +51 -51
- package/dist/rules/GR/utils/invoices.js +215 -215
- package/dist/rules/GR/utils/products.d.ts +277 -277
- package/dist/rules/GR/utils/products.js +1350 -1350
- package/dist/rules/GR/utils/upsells.d.ts +111 -111
- package/dist/rules/GR/utils/upsells.js +215 -215
- package/dist/services/database/BaseProvider.d.ts +29 -29
- package/dist/services/database/BaseProvider.js +28 -28
- package/dist/services/database/BatchUtils.d.ts +14 -14
- package/dist/services/database/BatchUtils.js +43 -43
- package/dist/services/database/Config.d.ts +2 -2
- package/dist/services/database/Config.js +5 -5
- package/dist/services/database/DatabaseService.d.ts +125 -125
- package/dist/services/database/DatabaseService.js +237 -237
- package/dist/services/database/FirebaseProvider.d.ts +17 -17
- package/dist/services/database/FirebaseProvider.js +235 -235
- package/dist/services/database/NotFirebaseProvider.d.ts +49 -49
- package/dist/services/database/NotFirebaseProvider.js +262 -262
- package/dist/services/g2/G2OrderSlip.d.ts +49 -49
- package/dist/services/g2/G2OrderSlip.js +228 -228
- package/dist/services/g2/utils.d.ts +19 -19
- package/dist/services/g2/utils.js +953 -953
- package/dist/services/logs/index.d.ts +23 -23
- package/dist/services/logs/index.js +66 -66
- package/dist/services/marketplace/BaseMarketServiceClass.d.ts +52 -52
- package/dist/services/marketplace/BaseMarketServiceClass.js +111 -111
- package/dist/services/marketplace/CardtraderServiceClass.d.ts +17 -17
- package/dist/services/marketplace/CardtraderServiceClass.js +139 -139
- package/dist/services/marketplace/utils.d.ts +14 -14
- package/dist/services/marketplace/utils.js +29 -29
- package/dist/services/products/BaseClass.d.ts +50 -50
- package/dist/services/products/BaseClass.js +66 -66
- package/dist/services/products/TCGService.d.ts +32 -32
- package/dist/services/products/TCGService.js +555 -555
- package/dist/services/products/utils.d.ts +31 -31
- package/dist/services/products/utils.js +144 -144
- package/dist/utils/algolia.d.ts +46 -46
- package/dist/utils/algolia.js +21 -21
- package/dist/utils/anonymisation.d.ts +54 -54
- package/dist/utils/anonymisation.js +280 -280
- package/dist/utils/array.d.ts +5 -5
- package/dist/utils/array.js +14 -14
- package/dist/utils/aws.d.ts +36 -36
- package/dist/utils/aws.js +154 -154
- package/dist/utils/booking.d.ts +30 -30
- package/dist/utils/booking.js +127 -127
- package/dist/utils/cart.d.ts +259 -259
- package/dist/utils/cart.js +1145 -1145
- package/dist/utils/categories.d.ts +2 -2
- package/dist/utils/categories.js +54 -54
- package/dist/utils/cmv.d.ts +10 -10
- package/dist/utils/cmv.js +107 -107
- package/dist/utils/console.d.ts +6 -6
- package/dist/utils/console.js +59 -59
- package/dist/utils/context.d.ts +20 -20
- package/dist/utils/context.js +61 -61
- package/dist/utils/currency.d.ts +6 -6
- package/dist/utils/currency.js +91 -91
- package/dist/utils/data.d.ts +31 -31
- package/dist/utils/data.js +296 -296
- package/dist/utils/date.d.ts +1 -1
- package/dist/utils/date.js +16 -16
- package/dist/utils/dimensions.d.ts +3 -3
- package/dist/utils/dimensions.js +16 -16
- package/dist/utils/discount.d.ts +164 -164
- package/dist/utils/discount.js +1111 -1111
- package/dist/utils/errors.d.ts +113 -113
- package/dist/utils/errors.js +113 -113
- package/dist/utils/file-admin.d.ts +8 -8
- package/dist/utils/file-admin.js +39 -39
- package/dist/utils/file.d.ts +39 -39
- package/dist/utils/file.js +208 -208
- package/dist/utils/firebase-admin.d.ts +11 -11
- package/dist/utils/firebase-admin.js +73 -73
- package/dist/utils/firebase.d.ts +58 -58
- package/dist/utils/firebase.js +148 -148
- package/dist/utils/import.d.ts +1 -1
- package/dist/utils/import.js +21 -21
- package/dist/utils/inventories.d.ts +101 -101
- package/dist/utils/inventories.js +467 -467
- package/dist/utils/locale.d.ts +24 -24
- package/dist/utils/locale.js +89 -89
- package/dist/utils/mailchimp.d.ts +58 -58
- package/dist/utils/mailchimp.js +531 -531
- package/dist/utils/mathUtils.d.ts +17 -17
- package/dist/utils/mathUtils.js +324 -324
- package/dist/utils/mongodb.d.ts +1 -1
- package/dist/utils/mongodb.js +22 -22
- package/dist/utils/object.d.ts +32 -32
- package/dist/utils/object.js +133 -133
- package/dist/utils/payment.d.ts +10 -10
- package/dist/utils/payment.js +23 -23
- package/dist/utils/products.d.ts +39 -39
- package/dist/utils/products.js +195 -195
- package/dist/utils/promiseToPurchase.d.ts +88 -88
- package/dist/utils/promiseToPurchase.js +229 -229
- package/dist/utils/prosprsearch.d.ts +42 -42
- package/dist/utils/prosprsearch.js +216 -216
- package/dist/utils/refunds.d.ts +2 -2
- package/dist/utils/refunds.js +21 -21
- package/dist/utils/sdc.d.ts +10 -10
- package/dist/utils/sdc.js +1309 -1309
- package/dist/utils/searchIndexes.d.ts +58 -58
- package/dist/utils/searchIndexes.js +247 -247
- package/dist/utils/services.d.ts +42 -42
- package/dist/utils/services.js +409 -409
- package/dist/utils/shipment.d.ts +110 -110
- package/dist/utils/shipment.js +345 -345
- package/dist/utils/simpletexting.d.ts +2 -2
- package/dist/utils/simpletexting.js +45 -45
- package/dist/utils/sliders.d.ts +4 -4
- package/dist/utils/sliders.js +24 -24
- package/dist/utils/string.d.ts +16 -16
- package/dist/utils/string.js +192 -192
- package/dist/utils/tcgService.d.ts +74 -74
- package/dist/utils/tcgService.js +308 -308
- package/dist/utils/tools.d.ts +5 -5
- package/dist/utils/tools.js +13 -13
- package/dist/utils/transferRequests.d.ts +43 -43
- package/dist/utils/transferRequests.js +67 -67
- package/dist/utils/update.d.ts +7 -7
- package/dist/utils/update.js +137 -137
- package/dist/utils/weight.d.ts +3 -3
- package/dist/utils/weight.js +16 -16
- package/dist/utils/zones.d.ts +11 -11
- package/dist/utils/zones.js +218 -218
- package/package.json +107 -107
- package/publish.sh +143 -143
- package/readme.md +182 -182
|
@@ -1,494 +1,494 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const console_1 = require("../../utils/console");
|
|
7
|
-
const discount_1 = require("../../utils/discount");
|
|
8
|
-
const Space_1 = __importDefault(require("../Space"));
|
|
9
|
-
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
10
|
-
const baseService_1 = require("../baseService");
|
|
11
|
-
const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
|
|
12
|
-
const BatchUtils_1 = __importDefault(require("../../services/database/BatchUtils"));
|
|
13
|
-
/**
|
|
14
|
-
* Brand class
|
|
15
|
-
*/
|
|
16
|
-
class Discount extends baseService_1.BaseServiceClass {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(...arguments);
|
|
19
|
-
/**
|
|
20
|
-
* Get the discount properties
|
|
21
|
-
*/
|
|
22
|
-
this.data = () => this._data;
|
|
23
|
-
/**
|
|
24
|
-
* Spread discount rule to relative object (product, cart or user)
|
|
25
|
-
*/
|
|
26
|
-
this._spread = async () => {
|
|
27
|
-
(0, console_1.workingMessage)('Spreading...');
|
|
28
|
-
const associations = [];
|
|
29
|
-
try {
|
|
30
|
-
const association = await this._spreadTo(this.data().appliesTo.label);
|
|
31
|
-
associations.push(association);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
(0, console_1.errorMessage)(`Can't spread ${this.data().appliesTo.label}`);
|
|
35
|
-
throw error;
|
|
36
|
-
}
|
|
37
|
-
(0, console_1.workingMessage)('Done spreading!');
|
|
38
|
-
};
|
|
39
|
-
this._unspread = async (label) => {
|
|
40
|
-
(0, console_1.workingMessage)('Unspreading...');
|
|
41
|
-
console.log('dans le _unspread');
|
|
42
|
-
const associations = [];
|
|
43
|
-
try {
|
|
44
|
-
const association = await this._unspreadTo(!!label ? label : this.data().appliesTo.label);
|
|
45
|
-
associations.push(association);
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
(0, console_1.errorMessage)(`Can't unspread ${this.data().appliesTo.label}`);
|
|
49
|
-
throw error;
|
|
50
|
-
}
|
|
51
|
-
(0, console_1.workingMessage)('Done unspreading!');
|
|
52
|
-
};
|
|
53
|
-
this._spreadTo = async (typeOfSpread) => {
|
|
54
|
-
try {
|
|
55
|
-
switch (typeOfSpread) {
|
|
56
|
-
case 'allproducts':
|
|
57
|
-
return await this._spreadToProducts();
|
|
58
|
-
case 'product':
|
|
59
|
-
return await this._spreadToProduct();
|
|
60
|
-
case 'category':
|
|
61
|
-
return await this._spreadToProductCategories();
|
|
62
|
-
default:
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.log('error: ', error);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
this._unspreadTo = async (typeOfSpread) => {
|
|
71
|
-
console.log('dans le _unspreadTo: ', typeOfSpread);
|
|
72
|
-
switch (typeOfSpread) {
|
|
73
|
-
case 'allproducts':
|
|
74
|
-
return await this._unspreadToProducts();
|
|
75
|
-
case 'product':
|
|
76
|
-
return await this._unspreadToProduct();
|
|
77
|
-
case 'category':
|
|
78
|
-
console.log('calling unspread to Categories');
|
|
79
|
-
return await this._unspreadToCategories();
|
|
80
|
-
default:
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
this._unspreadToProducts = async () => {
|
|
85
|
-
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
86
|
-
throw new Error(`Can't access products collection to fetch all products`);
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
const allProducts = await this._fetchProductsByBatch({});
|
|
90
|
-
for (let products of (0, chunk_1.default)(allProducts, 100)) {
|
|
91
|
-
const batch = new BatchUtils_1.default();
|
|
92
|
-
for (const productSnap of products) {
|
|
93
|
-
if (!productSnap.exists)
|
|
94
|
-
continue;
|
|
95
|
-
const productData = productSnap.data;
|
|
96
|
-
if (!!!productData)
|
|
97
|
-
continue;
|
|
98
|
-
if (!!!productData.declinations)
|
|
99
|
-
continue;
|
|
100
|
-
if (!!!productData.declinations.length)
|
|
101
|
-
continue;
|
|
102
|
-
const declinations = productData.declinations;
|
|
103
|
-
try {
|
|
104
|
-
batch.set(productSnap.path, productSnap.id, {
|
|
105
|
-
declinations: declinations.map((_declination, _dIndex) => {
|
|
106
|
-
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
|
|
107
|
-
const newDiscountRules = _declination.discount_rules
|
|
108
|
-
.filter((_dr) => _dr.id !== this.data().id)
|
|
109
|
-
.filter((_dr) => !!_dr);
|
|
110
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
|
|
111
|
-
}
|
|
112
|
-
return _declination;
|
|
113
|
-
})
|
|
114
|
-
}, { merge: true });
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
// })
|
|
120
|
-
}
|
|
121
|
-
try {
|
|
122
|
-
await batch.commit();
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
(0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
|
|
126
|
-
throw error;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
throw error;
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
this._unspreadToProduct = async () => {
|
|
135
|
-
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
136
|
-
throw new Error(`Can't access products collection to fetch all products`);
|
|
137
|
-
}
|
|
138
|
-
const productSlug = this.data().appliesTo.value;
|
|
139
|
-
const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
|
|
140
|
-
if (!!!productSnap.length)
|
|
141
|
-
return;
|
|
142
|
-
const product = productSnap[0];
|
|
143
|
-
if (!product.exists)
|
|
144
|
-
return;
|
|
145
|
-
if (!!!product)
|
|
146
|
-
return;
|
|
147
|
-
const productData = product.data;
|
|
148
|
-
if (!!!productData)
|
|
149
|
-
return;
|
|
150
|
-
if (!!!productData.declinations)
|
|
151
|
-
return;
|
|
152
|
-
const declinations = productData.declinations;
|
|
153
|
-
try {
|
|
154
|
-
await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
|
|
155
|
-
declinations: declinations.map((_declination, _dIndex) => {
|
|
156
|
-
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
|
|
157
|
-
const newDiscountRules = _declination.discount_rules
|
|
158
|
-
.filter((_dr) => _dr.id !== this.data().id)
|
|
159
|
-
.filter((_dr) => !!_dr);
|
|
160
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
|
|
161
|
-
}
|
|
162
|
-
return _declination;
|
|
163
|
-
})
|
|
164
|
-
}, { merge: true });
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
throw error;
|
|
168
|
-
}
|
|
169
|
-
// })
|
|
170
|
-
};
|
|
171
|
-
this._spreadToProducts = async () => {
|
|
172
|
-
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
173
|
-
throw new Error(`Can't access products collection to fetch all products`);
|
|
174
|
-
}
|
|
175
|
-
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
176
|
-
if (!!!space)
|
|
177
|
-
return;
|
|
178
|
-
try {
|
|
179
|
-
const allProducts = await this._fetchProductsByBatch();
|
|
180
|
-
for (let products of (0, chunk_1.default)(allProducts, 100)) {
|
|
181
|
-
const batch = new BatchUtils_1.default();
|
|
182
|
-
for (const productSnap of products) {
|
|
183
|
-
if (!productSnap.exists)
|
|
184
|
-
continue;
|
|
185
|
-
const productData = productSnap.data;
|
|
186
|
-
if (!!!productData)
|
|
187
|
-
continue;
|
|
188
|
-
if (!!!productData.declinations)
|
|
189
|
-
continue;
|
|
190
|
-
if (!!!productData.declinations.length)
|
|
191
|
-
continue;
|
|
192
|
-
const declinations = productData.declinations;
|
|
193
|
-
const declinationsToAddDiscount = declinations
|
|
194
|
-
.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination))
|
|
195
|
-
.map((d) => d.sku);
|
|
196
|
-
const isSameSku = (sku) => {
|
|
197
|
-
return !!declinationsToAddDiscount.some((aSku) => !!aSku && !!sku && aSku.toLowerCase().trim() === sku.toLowerCase().trim());
|
|
198
|
-
};
|
|
199
|
-
// declinations.forEach((_, dIndex) => {
|
|
200
|
-
try {
|
|
201
|
-
batch.set(productSnap.path, productSnap.id, {
|
|
202
|
-
declinations: declinations.map((_declination, _dIndex) => {
|
|
203
|
-
// if (dIndex !== _dIndex) return _declination
|
|
204
|
-
if (_declination.discount_rules.some((_dr) => _dr.id === this.data().id))
|
|
205
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
|
|
206
|
-
.map((_dr) => {
|
|
207
|
-
if (_dr.id !== this.data().id)
|
|
208
|
-
return _dr;
|
|
209
|
-
if (!!isSameSku(_declination.sku)) {
|
|
210
|
-
if (!!!this.data().draft)
|
|
211
|
-
return this.data();
|
|
212
|
-
}
|
|
213
|
-
return undefined;
|
|
214
|
-
})
|
|
215
|
-
.filter((_dr) => !!_dr) });
|
|
216
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: [
|
|
217
|
-
..._declination.discount_rules,
|
|
218
|
-
...(!!isSameSku(_declination.sku) ? [this.data()] : [])
|
|
219
|
-
] });
|
|
220
|
-
})
|
|
221
|
-
}, { merge: true });
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
console.log('error dans le catch: ', error);
|
|
225
|
-
throw error;
|
|
226
|
-
}
|
|
227
|
-
// })
|
|
228
|
-
}
|
|
229
|
-
try {
|
|
230
|
-
await batch.commit();
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
(0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
|
|
234
|
-
throw error;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
console.log(`Batch is done`);
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
throw error;
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
this._spreadToProduct = async () => {
|
|
244
|
-
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
245
|
-
throw new Error(`Can't access products collection to fetch all products`);
|
|
246
|
-
}
|
|
247
|
-
const productSlug = this.data().appliesTo.value;
|
|
248
|
-
const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
|
|
249
|
-
if (!!!productSnap.length)
|
|
250
|
-
return;
|
|
251
|
-
const product = productSnap[0];
|
|
252
|
-
if (!product.exists)
|
|
253
|
-
return;
|
|
254
|
-
if (!!!product)
|
|
255
|
-
return;
|
|
256
|
-
const productData = product.data;
|
|
257
|
-
if (!!!productData)
|
|
258
|
-
return;
|
|
259
|
-
if (!!!productData.declinations)
|
|
260
|
-
return;
|
|
261
|
-
const declinations = productData.declinations;
|
|
262
|
-
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
263
|
-
if (!!!space)
|
|
264
|
-
return;
|
|
265
|
-
const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination));
|
|
266
|
-
// declinationsToAddDiscount.forEach((_, dIndex) => {
|
|
267
|
-
try {
|
|
268
|
-
await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
|
|
269
|
-
declinations: declinations.map((_declination, _dIndex) => {
|
|
270
|
-
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
|
|
271
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
|
|
272
|
-
.map((_dr) => {
|
|
273
|
-
if (_dr.id !== this.data().id)
|
|
274
|
-
return _dr;
|
|
275
|
-
if (!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
|
|
276
|
-
if (!!this.data().draft)
|
|
277
|
-
return undefined;
|
|
278
|
-
return this.data();
|
|
279
|
-
}
|
|
280
|
-
return undefined;
|
|
281
|
-
})
|
|
282
|
-
.filter((_dr) => !!_dr) });
|
|
283
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: [
|
|
284
|
-
..._declination.discount_rules,
|
|
285
|
-
...(!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
|
|
286
|
-
? [this.data()]
|
|
287
|
-
: [])
|
|
288
|
-
] });
|
|
289
|
-
})
|
|
290
|
-
}, { merge: true });
|
|
291
|
-
}
|
|
292
|
-
catch (error) {
|
|
293
|
-
throw error;
|
|
294
|
-
}
|
|
295
|
-
// })
|
|
296
|
-
};
|
|
297
|
-
this._spreadToProductCategories = async () => {
|
|
298
|
-
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
299
|
-
throw new Error(`Can't access products collection to fetch all products`);
|
|
300
|
-
}
|
|
301
|
-
const discountData = this.data();
|
|
302
|
-
if (!!!discountData)
|
|
303
|
-
return;
|
|
304
|
-
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
305
|
-
if (!!!space)
|
|
306
|
-
return;
|
|
307
|
-
try {
|
|
308
|
-
const allProducts = await this._fetchProductsByBatch({
|
|
309
|
-
queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
|
|
310
|
-
});
|
|
311
|
-
for (let products of (0, chunk_1.default)(allProducts, 20)) {
|
|
312
|
-
const batch = new BatchUtils_1.default();
|
|
313
|
-
for (const productSnap of products) {
|
|
314
|
-
if (!productSnap.exists)
|
|
315
|
-
continue;
|
|
316
|
-
const productData = productSnap.data;
|
|
317
|
-
if (!!!productData)
|
|
318
|
-
continue;
|
|
319
|
-
if (!!!productData.category)
|
|
320
|
-
continue;
|
|
321
|
-
if (!!!productData.declinations)
|
|
322
|
-
continue;
|
|
323
|
-
if (!!!productData.declinations.length)
|
|
324
|
-
continue;
|
|
325
|
-
const declinations = productData.declinations;
|
|
326
|
-
// Puisque l'option "produit parent" est seulement existant si catégorie est sélectionné,
|
|
327
|
-
// isoler les produits applicables ou qui ont la règle de prix déjà appliqué pour vérirication.
|
|
328
|
-
// Si non-appliquable, skip la vérification pour éviter une sauvegarde inutile du produit
|
|
329
|
-
if (!!discountData.rules && !!discountData.rules.length) {
|
|
330
|
-
const rulesOnProduct = discountData.rules.filter((rule) => rule.field === 'product');
|
|
331
|
-
if (!!rulesOnProduct.length) {
|
|
332
|
-
const isProductSlugFoundInADiscountRule = rulesOnProduct.some((rule) => rule.ruleDetails.some((ruleDetail) => {
|
|
333
|
-
return ruleDetail.operator == '=='
|
|
334
|
-
? ruleDetail.value.includes(productData.slug)
|
|
335
|
-
: !ruleDetail.value.includes(productData.slug);
|
|
336
|
-
}));
|
|
337
|
-
const isRuleCurrentlyAppliedToDeclinations = declinations.some((decli) => (decli.discount_rules || []).some((rule) => rule.id == discountData.id));
|
|
338
|
-
if (!isProductSlugFoundInADiscountRule && !isRuleCurrentlyAppliedToDeclinations)
|
|
339
|
-
continue;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination, productData.slug));
|
|
343
|
-
try {
|
|
344
|
-
batch.set(productSnap.path, productSnap.id, {
|
|
345
|
-
declinations: declinations.map((_declination, _dIndex) => {
|
|
346
|
-
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
|
|
347
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
|
|
348
|
-
.map((_dr) => {
|
|
349
|
-
if (_dr.id !== this.data().id)
|
|
350
|
-
return _dr;
|
|
351
|
-
if (!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
|
|
352
|
-
if (!!this.data().draft)
|
|
353
|
-
return undefined;
|
|
354
|
-
return this.data();
|
|
355
|
-
}
|
|
356
|
-
return undefined;
|
|
357
|
-
})
|
|
358
|
-
.filter((_dr) => !!_dr) });
|
|
359
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: [
|
|
360
|
-
..._declination.discount_rules,
|
|
361
|
-
...(!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
|
|
362
|
-
? [this.data()]
|
|
363
|
-
: [])
|
|
364
|
-
] });
|
|
365
|
-
})
|
|
366
|
-
}, { merge: true });
|
|
367
|
-
}
|
|
368
|
-
catch (error) {
|
|
369
|
-
throw error;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
try {
|
|
373
|
-
await batch.commit();
|
|
374
|
-
}
|
|
375
|
-
catch (error) {
|
|
376
|
-
(0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
|
|
377
|
-
throw error;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
catch (error) {
|
|
382
|
-
throw error;
|
|
383
|
-
}
|
|
384
|
-
};
|
|
385
|
-
this._unspreadToCategories = async () => {
|
|
386
|
-
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
387
|
-
console.log('path is /, returning');
|
|
388
|
-
throw new Error(`Can't access products collection to fetch all categories`);
|
|
389
|
-
}
|
|
390
|
-
const discountData = this.data();
|
|
391
|
-
if (!!!discountData) {
|
|
392
|
-
console.log('no discount data! Returning');
|
|
393
|
-
return;
|
|
394
|
-
}
|
|
395
|
-
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
396
|
-
if (!!!space) {
|
|
397
|
-
console.log('no space! returning');
|
|
398
|
-
return;
|
|
399
|
-
}
|
|
400
|
-
try {
|
|
401
|
-
const allProducts = await this._fetchProductsByBatch({
|
|
402
|
-
queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
|
|
403
|
-
});
|
|
404
|
-
if (!!!allProducts.length) {
|
|
405
|
-
console.log('no products with category found, returning!');
|
|
406
|
-
return;
|
|
407
|
-
}
|
|
408
|
-
for (let products of (0, chunk_1.default)(allProducts, 20)) {
|
|
409
|
-
const batch = new BatchUtils_1.default();
|
|
410
|
-
for (const productSnap of products) {
|
|
411
|
-
if (!productSnap.exists)
|
|
412
|
-
continue;
|
|
413
|
-
const productData = productSnap.data;
|
|
414
|
-
if (!!!productData)
|
|
415
|
-
continue;
|
|
416
|
-
if (!!!productData.category)
|
|
417
|
-
continue;
|
|
418
|
-
if (!!!productData.declinations)
|
|
419
|
-
continue;
|
|
420
|
-
if (!!!productData.declinations.length)
|
|
421
|
-
continue;
|
|
422
|
-
const declinations = productData.declinations;
|
|
423
|
-
// Vérifier si la règle de prix est déjà appliquée sur la déclinaison.
|
|
424
|
-
// Si non, skip la vérification pour éviter une sauvegarde superflue en BD.
|
|
425
|
-
const isRuleAlreadyInDecli = declinations.some((d) => (d.discount_rules || []).some((d) => d.id == discountData.id));
|
|
426
|
-
if (!isRuleAlreadyInDecli)
|
|
427
|
-
continue;
|
|
428
|
-
try {
|
|
429
|
-
batch.set(productSnap.path, productSnap.id, {
|
|
430
|
-
declinations: declinations.map((_declination, _dIndex) => {
|
|
431
|
-
if (!!_declination.discount_rules.some((_dr) => _dr.id === this.data().id)) {
|
|
432
|
-
const newDiscountRules = _declination.discount_rules
|
|
433
|
-
.filter((_dr) => _dr.id !== this.data().id)
|
|
434
|
-
.filter((_dr) => !!_dr);
|
|
435
|
-
return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
|
|
436
|
-
}
|
|
437
|
-
return _declination;
|
|
438
|
-
})
|
|
439
|
-
}, { merge: true });
|
|
440
|
-
}
|
|
441
|
-
catch (error) {
|
|
442
|
-
throw error;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
try {
|
|
446
|
-
await batch.commit();
|
|
447
|
-
}
|
|
448
|
-
catch (error) {
|
|
449
|
-
(0, console_1.errorMessage)(`Error while commiting products unspread: ${error} - ${JSON.stringify(error)}`);
|
|
450
|
-
throw error;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
catch (error) {
|
|
455
|
-
throw error;
|
|
456
|
-
}
|
|
457
|
-
};
|
|
458
|
-
this._fetchProductsByBatch = async (props) => {
|
|
459
|
-
let allProducts = [];
|
|
460
|
-
let lastID = '';
|
|
461
|
-
const fetchProductLimit = 50;
|
|
462
|
-
const fetchProducts = async (lastID) => {
|
|
463
|
-
const result = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), Object.assign(Object.assign({ orderBy: !!props && !!props.orderByField ? props.orderByField : 'id', limit: !!props && !!props.fetchLimit ? props.fetchLimit : 50 }, (!!lastID ? { startAfter: lastID } : {})), (!!props && !!props.queryToApply ? { query: props.queryToApply } : {})));
|
|
464
|
-
return result;
|
|
465
|
-
};
|
|
466
|
-
try {
|
|
467
|
-
while (true) {
|
|
468
|
-
const result = await fetchProducts(lastID);
|
|
469
|
-
allProducts.push(...result);
|
|
470
|
-
if (!!result.length) {
|
|
471
|
-
const lastEntryData = result[result.length - 1].data;
|
|
472
|
-
if (!!!lastEntryData || !!!lastEntryData.id) {
|
|
473
|
-
console.log('cannot continue checks for bulk fetch, last entry has no data or no id. Returning found entries up to this point.');
|
|
474
|
-
break;
|
|
475
|
-
}
|
|
476
|
-
lastID = lastEntryData.id;
|
|
477
|
-
}
|
|
478
|
-
if (result.length < fetchProductLimit)
|
|
479
|
-
break;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
catch (e) {
|
|
483
|
-
console.log('error on fetching products with category: ', e);
|
|
484
|
-
}
|
|
485
|
-
return allProducts;
|
|
486
|
-
};
|
|
487
|
-
//#region GETTERS
|
|
488
|
-
this.spread = this._spread;
|
|
489
|
-
this.unspread = this._unspread;
|
|
490
|
-
//#endregion
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
exports.default = Discount;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const console_1 = require("../../utils/console");
|
|
7
|
+
const discount_1 = require("../../utils/discount");
|
|
8
|
+
const Space_1 = __importDefault(require("../Space"));
|
|
9
|
+
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
10
|
+
const baseService_1 = require("../baseService");
|
|
11
|
+
const DatabaseService_1 = __importDefault(require("../../services/database/DatabaseService"));
|
|
12
|
+
const BatchUtils_1 = __importDefault(require("../../services/database/BatchUtils"));
|
|
13
|
+
/**
|
|
14
|
+
* Brand class
|
|
15
|
+
*/
|
|
16
|
+
class Discount extends baseService_1.BaseServiceClass {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
/**
|
|
20
|
+
* Get the discount properties
|
|
21
|
+
*/
|
|
22
|
+
this.data = () => this._data;
|
|
23
|
+
/**
|
|
24
|
+
* Spread discount rule to relative object (product, cart or user)
|
|
25
|
+
*/
|
|
26
|
+
this._spread = async () => {
|
|
27
|
+
(0, console_1.workingMessage)('Spreading...');
|
|
28
|
+
const associations = [];
|
|
29
|
+
try {
|
|
30
|
+
const association = await this._spreadTo(this.data().appliesTo.label);
|
|
31
|
+
associations.push(association);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
(0, console_1.errorMessage)(`Can't spread ${this.data().appliesTo.label}`);
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
(0, console_1.workingMessage)('Done spreading!');
|
|
38
|
+
};
|
|
39
|
+
this._unspread = async (label) => {
|
|
40
|
+
(0, console_1.workingMessage)('Unspreading...');
|
|
41
|
+
console.log('dans le _unspread');
|
|
42
|
+
const associations = [];
|
|
43
|
+
try {
|
|
44
|
+
const association = await this._unspreadTo(!!label ? label : this.data().appliesTo.label);
|
|
45
|
+
associations.push(association);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
(0, console_1.errorMessage)(`Can't unspread ${this.data().appliesTo.label}`);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
(0, console_1.workingMessage)('Done unspreading!');
|
|
52
|
+
};
|
|
53
|
+
this._spreadTo = async (typeOfSpread) => {
|
|
54
|
+
try {
|
|
55
|
+
switch (typeOfSpread) {
|
|
56
|
+
case 'allproducts':
|
|
57
|
+
return await this._spreadToProducts();
|
|
58
|
+
case 'product':
|
|
59
|
+
return await this._spreadToProduct();
|
|
60
|
+
case 'category':
|
|
61
|
+
return await this._spreadToProductCategories();
|
|
62
|
+
default:
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.log('error: ', error);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
this._unspreadTo = async (typeOfSpread) => {
|
|
71
|
+
console.log('dans le _unspreadTo: ', typeOfSpread);
|
|
72
|
+
switch (typeOfSpread) {
|
|
73
|
+
case 'allproducts':
|
|
74
|
+
return await this._unspreadToProducts();
|
|
75
|
+
case 'product':
|
|
76
|
+
return await this._unspreadToProduct();
|
|
77
|
+
case 'category':
|
|
78
|
+
console.log('calling unspread to Categories');
|
|
79
|
+
return await this._unspreadToCategories();
|
|
80
|
+
default:
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
this._unspreadToProducts = async () => {
|
|
85
|
+
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
86
|
+
throw new Error(`Can't access products collection to fetch all products`);
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const allProducts = await this._fetchProductsByBatch({});
|
|
90
|
+
for (let products of (0, chunk_1.default)(allProducts, 100)) {
|
|
91
|
+
const batch = new BatchUtils_1.default();
|
|
92
|
+
for (const productSnap of products) {
|
|
93
|
+
if (!productSnap.exists)
|
|
94
|
+
continue;
|
|
95
|
+
const productData = productSnap.data;
|
|
96
|
+
if (!!!productData)
|
|
97
|
+
continue;
|
|
98
|
+
if (!!!productData.declinations)
|
|
99
|
+
continue;
|
|
100
|
+
if (!!!productData.declinations.length)
|
|
101
|
+
continue;
|
|
102
|
+
const declinations = productData.declinations;
|
|
103
|
+
try {
|
|
104
|
+
batch.set(productSnap.path, productSnap.id, {
|
|
105
|
+
declinations: declinations.map((_declination, _dIndex) => {
|
|
106
|
+
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
|
|
107
|
+
const newDiscountRules = _declination.discount_rules
|
|
108
|
+
.filter((_dr) => _dr.id !== this.data().id)
|
|
109
|
+
.filter((_dr) => !!_dr);
|
|
110
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
|
|
111
|
+
}
|
|
112
|
+
return _declination;
|
|
113
|
+
})
|
|
114
|
+
}, { merge: true });
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
// })
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
await batch.commit();
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
(0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
this._unspreadToProduct = async () => {
|
|
135
|
+
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
136
|
+
throw new Error(`Can't access products collection to fetch all products`);
|
|
137
|
+
}
|
|
138
|
+
const productSlug = this.data().appliesTo.value;
|
|
139
|
+
const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
|
|
140
|
+
if (!!!productSnap.length)
|
|
141
|
+
return;
|
|
142
|
+
const product = productSnap[0];
|
|
143
|
+
if (!product.exists)
|
|
144
|
+
return;
|
|
145
|
+
if (!!!product)
|
|
146
|
+
return;
|
|
147
|
+
const productData = product.data;
|
|
148
|
+
if (!!!productData)
|
|
149
|
+
return;
|
|
150
|
+
if (!!!productData.declinations)
|
|
151
|
+
return;
|
|
152
|
+
const declinations = productData.declinations;
|
|
153
|
+
try {
|
|
154
|
+
await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
|
|
155
|
+
declinations: declinations.map((_declination, _dIndex) => {
|
|
156
|
+
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id)) {
|
|
157
|
+
const newDiscountRules = _declination.discount_rules
|
|
158
|
+
.filter((_dr) => _dr.id !== this.data().id)
|
|
159
|
+
.filter((_dr) => !!_dr);
|
|
160
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
|
|
161
|
+
}
|
|
162
|
+
return _declination;
|
|
163
|
+
})
|
|
164
|
+
}, { merge: true });
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
// })
|
|
170
|
+
};
|
|
171
|
+
this._spreadToProducts = async () => {
|
|
172
|
+
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
173
|
+
throw new Error(`Can't access products collection to fetch all products`);
|
|
174
|
+
}
|
|
175
|
+
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
176
|
+
if (!!!space)
|
|
177
|
+
return;
|
|
178
|
+
try {
|
|
179
|
+
const allProducts = await this._fetchProductsByBatch();
|
|
180
|
+
for (let products of (0, chunk_1.default)(allProducts, 100)) {
|
|
181
|
+
const batch = new BatchUtils_1.default();
|
|
182
|
+
for (const productSnap of products) {
|
|
183
|
+
if (!productSnap.exists)
|
|
184
|
+
continue;
|
|
185
|
+
const productData = productSnap.data;
|
|
186
|
+
if (!!!productData)
|
|
187
|
+
continue;
|
|
188
|
+
if (!!!productData.declinations)
|
|
189
|
+
continue;
|
|
190
|
+
if (!!!productData.declinations.length)
|
|
191
|
+
continue;
|
|
192
|
+
const declinations = productData.declinations;
|
|
193
|
+
const declinationsToAddDiscount = declinations
|
|
194
|
+
.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination))
|
|
195
|
+
.map((d) => d.sku);
|
|
196
|
+
const isSameSku = (sku) => {
|
|
197
|
+
return !!declinationsToAddDiscount.some((aSku) => !!aSku && !!sku && aSku.toLowerCase().trim() === sku.toLowerCase().trim());
|
|
198
|
+
};
|
|
199
|
+
// declinations.forEach((_, dIndex) => {
|
|
200
|
+
try {
|
|
201
|
+
batch.set(productSnap.path, productSnap.id, {
|
|
202
|
+
declinations: declinations.map((_declination, _dIndex) => {
|
|
203
|
+
// if (dIndex !== _dIndex) return _declination
|
|
204
|
+
if (_declination.discount_rules.some((_dr) => _dr.id === this.data().id))
|
|
205
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
|
|
206
|
+
.map((_dr) => {
|
|
207
|
+
if (_dr.id !== this.data().id)
|
|
208
|
+
return _dr;
|
|
209
|
+
if (!!isSameSku(_declination.sku)) {
|
|
210
|
+
if (!!!this.data().draft)
|
|
211
|
+
return this.data();
|
|
212
|
+
}
|
|
213
|
+
return undefined;
|
|
214
|
+
})
|
|
215
|
+
.filter((_dr) => !!_dr) });
|
|
216
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: [
|
|
217
|
+
..._declination.discount_rules,
|
|
218
|
+
...(!!isSameSku(_declination.sku) ? [this.data()] : [])
|
|
219
|
+
] });
|
|
220
|
+
})
|
|
221
|
+
}, { merge: true });
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
console.log('error dans le catch: ', error);
|
|
225
|
+
throw error;
|
|
226
|
+
}
|
|
227
|
+
// })
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
await batch.commit();
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
(0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
console.log(`Batch is done`);
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
this._spreadToProduct = async () => {
|
|
244
|
+
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
245
|
+
throw new Error(`Can't access products collection to fetch all products`);
|
|
246
|
+
}
|
|
247
|
+
const productSlug = this.data().appliesTo.value;
|
|
248
|
+
const productSnap = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), { query: [{ field: 'slug', operator: '==', value: productSlug }] });
|
|
249
|
+
if (!!!productSnap.length)
|
|
250
|
+
return;
|
|
251
|
+
const product = productSnap[0];
|
|
252
|
+
if (!product.exists)
|
|
253
|
+
return;
|
|
254
|
+
if (!!!product)
|
|
255
|
+
return;
|
|
256
|
+
const productData = product.data;
|
|
257
|
+
if (!!!productData)
|
|
258
|
+
return;
|
|
259
|
+
if (!!!productData.declinations)
|
|
260
|
+
return;
|
|
261
|
+
const declinations = productData.declinations;
|
|
262
|
+
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
263
|
+
if (!!!space)
|
|
264
|
+
return;
|
|
265
|
+
const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination));
|
|
266
|
+
// declinationsToAddDiscount.forEach((_, dIndex) => {
|
|
267
|
+
try {
|
|
268
|
+
await DatabaseService_1.default.saveDocument(product.path, product.id, product.timestamp, {
|
|
269
|
+
declinations: declinations.map((_declination, _dIndex) => {
|
|
270
|
+
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
|
|
271
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
|
|
272
|
+
.map((_dr) => {
|
|
273
|
+
if (_dr.id !== this.data().id)
|
|
274
|
+
return _dr;
|
|
275
|
+
if (!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
|
|
276
|
+
if (!!this.data().draft)
|
|
277
|
+
return undefined;
|
|
278
|
+
return this.data();
|
|
279
|
+
}
|
|
280
|
+
return undefined;
|
|
281
|
+
})
|
|
282
|
+
.filter((_dr) => !!_dr) });
|
|
283
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: [
|
|
284
|
+
..._declination.discount_rules,
|
|
285
|
+
...(!!declinationsToAddDiscount.some((decliDiscount) => decliDiscount.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
|
|
286
|
+
? [this.data()]
|
|
287
|
+
: [])
|
|
288
|
+
] });
|
|
289
|
+
})
|
|
290
|
+
}, { merge: true });
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
throw error;
|
|
294
|
+
}
|
|
295
|
+
// })
|
|
296
|
+
};
|
|
297
|
+
this._spreadToProductCategories = async () => {
|
|
298
|
+
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
299
|
+
throw new Error(`Can't access products collection to fetch all products`);
|
|
300
|
+
}
|
|
301
|
+
const discountData = this.data();
|
|
302
|
+
if (!!!discountData)
|
|
303
|
+
return;
|
|
304
|
+
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
305
|
+
if (!!!space)
|
|
306
|
+
return;
|
|
307
|
+
try {
|
|
308
|
+
const allProducts = await this._fetchProductsByBatch({
|
|
309
|
+
queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
|
|
310
|
+
});
|
|
311
|
+
for (let products of (0, chunk_1.default)(allProducts, 20)) {
|
|
312
|
+
const batch = new BatchUtils_1.default();
|
|
313
|
+
for (const productSnap of products) {
|
|
314
|
+
if (!productSnap.exists)
|
|
315
|
+
continue;
|
|
316
|
+
const productData = productSnap.data;
|
|
317
|
+
if (!!!productData)
|
|
318
|
+
continue;
|
|
319
|
+
if (!!!productData.category)
|
|
320
|
+
continue;
|
|
321
|
+
if (!!!productData.declinations)
|
|
322
|
+
continue;
|
|
323
|
+
if (!!!productData.declinations.length)
|
|
324
|
+
continue;
|
|
325
|
+
const declinations = productData.declinations;
|
|
326
|
+
// Puisque l'option "produit parent" est seulement existant si catégorie est sélectionné,
|
|
327
|
+
// isoler les produits applicables ou qui ont la règle de prix déjà appliqué pour vérirication.
|
|
328
|
+
// Si non-appliquable, skip la vérification pour éviter une sauvegarde inutile du produit
|
|
329
|
+
if (!!discountData.rules && !!discountData.rules.length) {
|
|
330
|
+
const rulesOnProduct = discountData.rules.filter((rule) => rule.field === 'product');
|
|
331
|
+
if (!!rulesOnProduct.length) {
|
|
332
|
+
const isProductSlugFoundInADiscountRule = rulesOnProduct.some((rule) => rule.ruleDetails.some((ruleDetail) => {
|
|
333
|
+
return ruleDetail.operator == '=='
|
|
334
|
+
? ruleDetail.value.includes(productData.slug)
|
|
335
|
+
: !ruleDetail.value.includes(productData.slug);
|
|
336
|
+
}));
|
|
337
|
+
const isRuleCurrentlyAppliedToDeclinations = declinations.some((decli) => (decli.discount_rules || []).some((rule) => rule.id == discountData.id));
|
|
338
|
+
if (!isProductSlugFoundInADiscountRule && !isRuleCurrentlyAppliedToDeclinations)
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
const declinationsToAddDiscount = declinations.filter((declination) => !!(0, discount_1.shouldApplyRuleToDeclination)(this.data(), declination, productData.slug));
|
|
343
|
+
try {
|
|
344
|
+
batch.set(productSnap.path, productSnap.id, {
|
|
345
|
+
declinations: declinations.map((_declination, _dIndex) => {
|
|
346
|
+
if (!!_declination.discount_rules.find((_dr) => _dr.id === this.data().id))
|
|
347
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: _declination.discount_rules
|
|
348
|
+
.map((_dr) => {
|
|
349
|
+
if (_dr.id !== this.data().id)
|
|
350
|
+
return _dr;
|
|
351
|
+
if (!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())) {
|
|
352
|
+
if (!!this.data().draft)
|
|
353
|
+
return undefined;
|
|
354
|
+
return this.data();
|
|
355
|
+
}
|
|
356
|
+
return undefined;
|
|
357
|
+
})
|
|
358
|
+
.filter((_dr) => !!_dr) });
|
|
359
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: [
|
|
360
|
+
..._declination.discount_rules,
|
|
361
|
+
...(!!declinationsToAddDiscount.some((__declination) => __declination.sku.toLowerCase().trim() === _declination.sku.toLowerCase().trim())
|
|
362
|
+
? [this.data()]
|
|
363
|
+
: [])
|
|
364
|
+
] });
|
|
365
|
+
})
|
|
366
|
+
}, { merge: true });
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
throw error;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
try {
|
|
373
|
+
await batch.commit();
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
(0, console_1.errorMessage)(`Error while commiting products spread: ${error} - ${JSON.stringify(error)}`);
|
|
377
|
+
throw error;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
throw error;
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
this._unspreadToCategories = async () => {
|
|
386
|
+
if (DatabaseService_1.default.getPathParent(this._collection.path) == '/') {
|
|
387
|
+
console.log('path is /, returning');
|
|
388
|
+
throw new Error(`Can't access products collection to fetch all categories`);
|
|
389
|
+
}
|
|
390
|
+
const discountData = this.data();
|
|
391
|
+
if (!!!discountData) {
|
|
392
|
+
console.log('no discount data! Returning');
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const space = await Space_1.default.getCurrentSpaceWithRef(this._collection.path, this._user);
|
|
396
|
+
if (!!!space) {
|
|
397
|
+
console.log('no space! returning');
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
try {
|
|
401
|
+
const allProducts = await this._fetchProductsByBatch({
|
|
402
|
+
queryToApply: [{ field: 'category', operator: '==', value: discountData.appliesTo.value }]
|
|
403
|
+
});
|
|
404
|
+
if (!!!allProducts.length) {
|
|
405
|
+
console.log('no products with category found, returning!');
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
for (let products of (0, chunk_1.default)(allProducts, 20)) {
|
|
409
|
+
const batch = new BatchUtils_1.default();
|
|
410
|
+
for (const productSnap of products) {
|
|
411
|
+
if (!productSnap.exists)
|
|
412
|
+
continue;
|
|
413
|
+
const productData = productSnap.data;
|
|
414
|
+
if (!!!productData)
|
|
415
|
+
continue;
|
|
416
|
+
if (!!!productData.category)
|
|
417
|
+
continue;
|
|
418
|
+
if (!!!productData.declinations)
|
|
419
|
+
continue;
|
|
420
|
+
if (!!!productData.declinations.length)
|
|
421
|
+
continue;
|
|
422
|
+
const declinations = productData.declinations;
|
|
423
|
+
// Vérifier si la règle de prix est déjà appliquée sur la déclinaison.
|
|
424
|
+
// Si non, skip la vérification pour éviter une sauvegarde superflue en BD.
|
|
425
|
+
const isRuleAlreadyInDecli = declinations.some((d) => (d.discount_rules || []).some((d) => d.id == discountData.id));
|
|
426
|
+
if (!isRuleAlreadyInDecli)
|
|
427
|
+
continue;
|
|
428
|
+
try {
|
|
429
|
+
batch.set(productSnap.path, productSnap.id, {
|
|
430
|
+
declinations: declinations.map((_declination, _dIndex) => {
|
|
431
|
+
if (!!_declination.discount_rules.some((_dr) => _dr.id === this.data().id)) {
|
|
432
|
+
const newDiscountRules = _declination.discount_rules
|
|
433
|
+
.filter((_dr) => _dr.id !== this.data().id)
|
|
434
|
+
.filter((_dr) => !!_dr);
|
|
435
|
+
return Object.assign(Object.assign({}, _declination), { discount_rules: newDiscountRules });
|
|
436
|
+
}
|
|
437
|
+
return _declination;
|
|
438
|
+
})
|
|
439
|
+
}, { merge: true });
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
throw error;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
try {
|
|
446
|
+
await batch.commit();
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
(0, console_1.errorMessage)(`Error while commiting products unspread: ${error} - ${JSON.stringify(error)}`);
|
|
450
|
+
throw error;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
catch (error) {
|
|
455
|
+
throw error;
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
this._fetchProductsByBatch = async (props) => {
|
|
459
|
+
let allProducts = [];
|
|
460
|
+
let lastID = '';
|
|
461
|
+
const fetchProductLimit = 50;
|
|
462
|
+
const fetchProducts = async (lastID) => {
|
|
463
|
+
const result = await DatabaseService_1.default.getDocuments(DatabaseService_1.default.addToPath(DatabaseService_1.default.getPathParent(this._collection.path), 'products'), Object.assign(Object.assign({ orderBy: !!props && !!props.orderByField ? props.orderByField : 'id', limit: !!props && !!props.fetchLimit ? props.fetchLimit : 50 }, (!!lastID ? { startAfter: lastID } : {})), (!!props && !!props.queryToApply ? { query: props.queryToApply } : {})));
|
|
464
|
+
return result;
|
|
465
|
+
};
|
|
466
|
+
try {
|
|
467
|
+
while (true) {
|
|
468
|
+
const result = await fetchProducts(lastID);
|
|
469
|
+
allProducts.push(...result);
|
|
470
|
+
if (!!result.length) {
|
|
471
|
+
const lastEntryData = result[result.length - 1].data;
|
|
472
|
+
if (!!!lastEntryData || !!!lastEntryData.id) {
|
|
473
|
+
console.log('cannot continue checks for bulk fetch, last entry has no data or no id. Returning found entries up to this point.');
|
|
474
|
+
break;
|
|
475
|
+
}
|
|
476
|
+
lastID = lastEntryData.id;
|
|
477
|
+
}
|
|
478
|
+
if (result.length < fetchProductLimit)
|
|
479
|
+
break;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
catch (e) {
|
|
483
|
+
console.log('error on fetching products with category: ', e);
|
|
484
|
+
}
|
|
485
|
+
return allProducts;
|
|
486
|
+
};
|
|
487
|
+
//#region GETTERS
|
|
488
|
+
this.spread = this._spread;
|
|
489
|
+
this.unspread = this._unspread;
|
|
490
|
+
//#endregion
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
exports.default = Discount;
|
|
494
494
|
//# sourceMappingURL=index.js.map
|