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,468 +1,468 @@
|
|
|
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
|
-
exports.getSpaceUnitsToUseForContext = exports.checkIfStoreHasInventory = exports.checkIfItemIsUnavailableForStore = exports.getAvailableSellUnitQuantity = exports.convertQtyFromSellUnit = exports.getQty = exports.getConvertedUnitQuantity = exports.getGroupedByBetonProducts = exports.getAttrStringForItem = exports.getAttributesToShow = exports.getUnitShortDict = exports.unitShortDict = exports.unitDict = exports.orderByAccessoires = exports.orderByBeton = exports.checkWebInventoryForType = void 0;
|
|
7
|
-
const flatten_1 = __importDefault(require("lodash/flatten"));
|
|
8
|
-
const groupBy_1 = __importDefault(require("lodash/groupBy"));
|
|
9
|
-
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
10
|
-
const sumBy_1 = __importDefault(require("lodash/sumBy"));
|
|
11
|
-
const toNumber_1 = __importDefault(require("lodash/toNumber"));
|
|
12
|
-
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
13
|
-
const IInventoryItem_1 = require("../Interfaces/Product/IInventoryItem");
|
|
14
|
-
const data_1 = require("../rules/GR/interfaces/data");
|
|
15
|
-
const locale_1 = require("./locale");
|
|
16
|
-
const products_1 = require("../rules/GR/utils/products");
|
|
17
|
-
const round_1 = __importDefault(require("lodash/round"));
|
|
18
|
-
const object_1 = require("./object");
|
|
19
|
-
const checkWebInventoryForType = (inventories, currentWebInventory, type) => {
|
|
20
|
-
const canSellOnline = inventories.filter((i) => i.can_sell_online);
|
|
21
|
-
if (!!!canSellOnline.length)
|
|
22
|
-
return;
|
|
23
|
-
return Object.assign(Object.assign({}, (!!currentWebInventory ? currentWebInventory : (0, IInventoryItem_1.getDefaultInventoryQuantities)())), { [type]: (0, sumBy_1.default)(canSellOnline, (i) => (0, toNumber_1.default)(i.qty[type] || 0)) });
|
|
24
|
-
};
|
|
25
|
-
exports.checkWebInventoryForType = checkWebInventoryForType;
|
|
26
|
-
exports.orderByBeton = [
|
|
27
|
-
'NkLD1rmnGiFZpJA1w6js.moderne',
|
|
28
|
-
'NkLD1rmnGiFZpJA1w6js.traditionnel',
|
|
29
|
-
'NkLD1rmnGiFZpJA1w6js.permeable',
|
|
30
|
-
'oWzANqTldrV1McGzBAU2.moderne',
|
|
31
|
-
'oWzANqTldrV1McGzBAU2.traditionnel',
|
|
32
|
-
'9jgHOxtMVSC1QTs1d9NX',
|
|
33
|
-
'IbCDQBYaPmC125hBlr2j',
|
|
34
|
-
'ptd8lA1kUTsWdyufNGjh',
|
|
35
|
-
'mVjg7x05H1hizbet2xsv',
|
|
36
|
-
'xOQPwedYjSYavS0FJlaE',
|
|
37
|
-
'axEbPjUTnk64S5kRlfh6',
|
|
38
|
-
'WS0n2jiEtoYMSId78GCZ',
|
|
39
|
-
'87HSMsPuUBm5XEUfreu1',
|
|
40
|
-
'j0aJi1eyJwLabcpaPn6a',
|
|
41
|
-
'Q1rCiYAOvadUXAITj47i' // mursDeBlocArchitecturaux
|
|
42
|
-
];
|
|
43
|
-
exports.orderByAccessoires = [
|
|
44
|
-
'KrjSKiXHXa4MrRJIopJO',
|
|
45
|
-
'3uA7YFYwBVRYS8382JKB',
|
|
46
|
-
'shmXowMw563z07Gr1k3d',
|
|
47
|
-
'YZa62rG0LOnC9WKG8BRE',
|
|
48
|
-
'OkeEqkF6QLNoFbzCgpdJ',
|
|
49
|
-
'k2XN5GeN4PRxtbpj4BFk',
|
|
50
|
-
'uDyyPN1IZGhivbV2hXiy',
|
|
51
|
-
'G0xkLTH1XbFBgGGRm6Of',
|
|
52
|
-
'GPFBURGlRFtAzaj5v6vr',
|
|
53
|
-
'QXbBm82HL3vRc7GBjPYQ',
|
|
54
|
-
'XijBekSz3MPAzACFSKUk',
|
|
55
|
-
'meLuoK1SVeqUoo0bWvdz' // engraisGazon
|
|
56
|
-
];
|
|
57
|
-
exports.unitDict = {
|
|
58
|
-
p2: { fr: 'Pieds Carrés', en: 'Square Feet' },
|
|
59
|
-
pal: { fr: 'Palette', en: 'Pallet' },
|
|
60
|
-
rg: { fr: 'Rangs', en: 'Row' },
|
|
61
|
-
ensemble: { fr: 'Ensemble', en: 'Kit' },
|
|
62
|
-
pl: { fr: 'Pieds linéaires', en: 'Linear feet' },
|
|
63
|
-
mcx: { fr: 'Morceaux', en: 'Pieces' },
|
|
64
|
-
unite: { fr: 'Unités', en: 'Units' },
|
|
65
|
-
sac: { fr: 'Sac', en: 'Bag' },
|
|
66
|
-
vg3: { fr: 'Verge cube', en: 'Cubic yard' },
|
|
67
|
-
demipalsm: { fr: 'Demi-palette (petite)', en: 'Half-pallet (small)' },
|
|
68
|
-
demipallg: { fr: 'Demi-palette (lg)', en: 'Half-pallet (lg)' },
|
|
69
|
-
tonne: { fr: 'Tonne', en: 'Ton' },
|
|
70
|
-
roul: { fr: 'Rouleau', en: 'Roll' },
|
|
71
|
-
bte: { fr: 'Boîte', en: 'Box' },
|
|
72
|
-
pqt: { fr: 'Paquet', en: 'Bundle' },
|
|
73
|
-
'': { fr: 'Unités', en: 'Units' }
|
|
74
|
-
};
|
|
75
|
-
exports.unitShortDict = {
|
|
76
|
-
p2: { fr: 'pi²', en: 'pi²' },
|
|
77
|
-
pal: { fr: 'pal.', en: 'pal.' },
|
|
78
|
-
rg: { fr: 'rg', en: 'row' },
|
|
79
|
-
ensemble: { fr: 'ens.', en: 'kit' },
|
|
80
|
-
pl: { fr: 'pL', en: 'linear feet' },
|
|
81
|
-
mcx: { fr: 'mcx', en: 'piece' },
|
|
82
|
-
unite: { fr: 'unité', en: 'unit' },
|
|
83
|
-
sac: { fr: 'sac', en: 'bag' },
|
|
84
|
-
vg3: { fr: 'vg³', en: 'yd³' },
|
|
85
|
-
demipalsm: { fr: 'Demi-pal. (petite)', en: 'Half-pal. (sm)' },
|
|
86
|
-
demipallg: { fr: 'Demi-pal. (lg)', en: 'Half-pal. (lg)' },
|
|
87
|
-
tonne: { fr: 'tonne', en: 'ton' },
|
|
88
|
-
roul: { fr: 'roul.', en: 'roll' },
|
|
89
|
-
bte: { fr: 'bte', en: 'box' },
|
|
90
|
-
pqt: { fr: 'pqt', en: 'bundle' },
|
|
91
|
-
'': { fr: 'unité', en: 'unit' }
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Returns the dictionnary containing the shortened version of unit labels in multiple languages
|
|
95
|
-
* @param {string} slug The slug for which we want to get the shortened dictionnary
|
|
96
|
-
* @param {string[]} returnUnitForSlugs An array of slugs that we want to return a default dictionnary for, in this case the unit dictionnary for unit
|
|
97
|
-
* @returns {ILang} The dictionnary containing the shortened unit label in multiple languages
|
|
98
|
-
*/
|
|
99
|
-
const getUnitShortDict = (slug, returnUnitForSlugs) => {
|
|
100
|
-
try {
|
|
101
|
-
if (!!returnUnitForSlugs && !!returnUnitForSlugs.includes(slug)) {
|
|
102
|
-
return exports.unitShortDict['unite'];
|
|
103
|
-
}
|
|
104
|
-
const res = exports.unitShortDict[slug];
|
|
105
|
-
if (!!!res)
|
|
106
|
-
return { fr: slug, en: slug };
|
|
107
|
-
return res;
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
console.log(err);
|
|
111
|
-
return { fr: slug, en: slug };
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
exports.getUnitShortDict = getUnitShortDict;
|
|
115
|
-
const getOrganizedIndexedDecliAttributes = (decli) => {
|
|
116
|
-
return (0, flatten_1.default)(Object.entries(decli.attributes).map((attrArr) => {
|
|
117
|
-
const newArray = !!!attrArr[1] ? [] : attrArr[1].map((aValue) => `${attrArr[0]}.${aValue}`);
|
|
118
|
-
return (0, flatten_1.default)(newArray);
|
|
119
|
-
}));
|
|
120
|
-
};
|
|
121
|
-
const getAttributesToShow = (currentItems) => {
|
|
122
|
-
const allAttributesPerItem = currentItems.map((item) => !!Array.isArray(item.attributes) ? item.attributes : getOrganizedIndexedDecliAttributes(item));
|
|
123
|
-
const allAttributes = (0, uniq_1.default)((0, flatten_1.default)(allAttributesPerItem));
|
|
124
|
-
const group = (0, groupBy_1.default)(allAttributes, (a) => a.split('.')[0]);
|
|
125
|
-
const parentAttributesToShow = Object.entries(group)
|
|
126
|
-
.map((g) => {
|
|
127
|
-
let attrToShow = undefined;
|
|
128
|
-
// Remove spécific attributes from the list
|
|
129
|
-
if ([
|
|
130
|
-
data_1.AttributesIdEnumGR.AVAILABILITY,
|
|
131
|
-
data_1.AttributesIdEnumGR.TYPE,
|
|
132
|
-
data_1.AttributesIdEnumGR.MARKETING,
|
|
133
|
-
data_1.AttributesIdEnumGR.COLOR_GROUP,
|
|
134
|
-
data_1.AttributesIdEnumGR.VENTE_MIXTE,
|
|
135
|
-
data_1.AttributesIdEnumGR.TYPE_UTILISATION_BETON
|
|
136
|
-
].includes(g[0])) {
|
|
137
|
-
return attrToShow;
|
|
138
|
-
}
|
|
139
|
-
// Check if the attribute values present in the item list are the same for all items. If so, remove from list
|
|
140
|
-
if (g[1].length > 1) {
|
|
141
|
-
const allItemsContainAllAttr = allAttributesPerItem.every((itemAttributes) => {
|
|
142
|
-
const sameAttr = itemAttributes.filter((attr) => attr.includes(g[0]));
|
|
143
|
-
if (!!!sameAttr)
|
|
144
|
-
return false;
|
|
145
|
-
return sameAttr.length === g[1].length && sameAttr.every((attr) => g[1].includes(attr));
|
|
146
|
-
});
|
|
147
|
-
// if not all items contain all attribute values, add to attributes to show
|
|
148
|
-
if (!!!allItemsContainAllAttr) {
|
|
149
|
-
attrToShow = g[0];
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return attrToShow;
|
|
153
|
-
})
|
|
154
|
-
.filter((v) => !!v);
|
|
155
|
-
return parentAttributesToShow;
|
|
156
|
-
};
|
|
157
|
-
exports.getAttributesToShow = getAttributesToShow;
|
|
158
|
-
const attrToShowInItem = (item, attributesToShow) => {
|
|
159
|
-
const itemAttributes = Array.isArray(item.attributes)
|
|
160
|
-
? item.attributes
|
|
161
|
-
: getOrganizedIndexedDecliAttributes(item);
|
|
162
|
-
return itemAttributes
|
|
163
|
-
.map((a) => {
|
|
164
|
-
if (attributesToShow.find((attr_id) => attr_id === a.split('.')[0])) {
|
|
165
|
-
return a;
|
|
166
|
-
}
|
|
167
|
-
return;
|
|
168
|
-
})
|
|
169
|
-
.filter((v) => !!v);
|
|
170
|
-
};
|
|
171
|
-
const attrString = (attrToShow, attributes, locale) => {
|
|
172
|
-
const valuesArray = (0, orderBy_1.default)(attrToShow, (a) => a.split('.')[0] === 'Sy9GlMjUcqUkvKeqLuSz' ? 'AAA' : a.split('.')[0][0]).map((attr) => {
|
|
173
|
-
const attribute = attributes.find((a) => a.id === attr.split('.')[0]);
|
|
174
|
-
if (!!!attribute)
|
|
175
|
-
return '';
|
|
176
|
-
const attributeValue = attribute.values.find((a) => a.slug === attr.split('.')[1]);
|
|
177
|
-
if (!!!attributeValue)
|
|
178
|
-
return '';
|
|
179
|
-
return (0, locale_1.getLocaleOfDictionnary)(attributeValue.value, locale);
|
|
180
|
-
});
|
|
181
|
-
return valuesArray.join(' - ');
|
|
182
|
-
};
|
|
183
|
-
const getAttrStringForItem = (inventoryItem, attributesToShow, attributes, locale = 'fr') => {
|
|
184
|
-
const attrToShow = attrToShowInItem(inventoryItem, attributesToShow);
|
|
185
|
-
const attrStr = attrString(attrToShow, attributes, locale);
|
|
186
|
-
return attrStr;
|
|
187
|
-
};
|
|
188
|
-
exports.getAttrStringForItem = getAttrStringForItem;
|
|
189
|
-
const getGroupedByBetonProducts = (arrBeton, categories) => {
|
|
190
|
-
return (0, groupBy_1.default)(arrBeton, (item) => {
|
|
191
|
-
const categorySlugLvl0 = !!item.categories ? item.categories['lvl0'] : '';
|
|
192
|
-
const categorySlugLvl1 = !!item.categories && !!item.categories['lvl1'] ? item.categories['lvl1'].split(' > ')[1] : '';
|
|
193
|
-
const categorySlugLvl2 = !!item.categories && !!item.categories['lvl2'] ? item.categories['lvl2'].split(' > ')[2] : '';
|
|
194
|
-
const lvl0CategoryId = !!categorySlugLvl0 && categories.some((c) => c.slug === categorySlugLvl0)
|
|
195
|
-
? categories.find((c) => c.slug === categorySlugLvl0).id
|
|
196
|
-
: '';
|
|
197
|
-
const lvl1CategoryId = !!categorySlugLvl1 && categories.some((c) => c.slug === categorySlugLvl1)
|
|
198
|
-
? categories.find((c) => c.slug === categorySlugLvl1).id
|
|
199
|
-
: '';
|
|
200
|
-
const lvl2CategoryId = !!categorySlugLvl2 && categories.some((c) => c.slug === categorySlugLvl2)
|
|
201
|
-
? categories.find((c) => c.slug === categorySlugLvl2).id
|
|
202
|
-
: '';
|
|
203
|
-
const sameCategoryId = !!lvl2CategoryId && !!exports.orderByBeton.some((order) => order.includes(lvl2CategoryId))
|
|
204
|
-
? lvl2CategoryId
|
|
205
|
-
: !!lvl1CategoryId && !!exports.orderByBeton.some((order) => order.includes(lvl1CategoryId))
|
|
206
|
-
? lvl1CategoryId
|
|
207
|
-
: !!lvl0CategoryId && !!exports.orderByBeton.some((order) => order.includes(lvl0CategoryId))
|
|
208
|
-
? lvl0CategoryId
|
|
209
|
-
: '';
|
|
210
|
-
const attrDict = Object.entries(item.attributes);
|
|
211
|
-
const foundAttr = attrDict.find((attr) => attr[0] === data_1.AttributesIdEnumGR.STYLE);
|
|
212
|
-
const foundSameCat = !!exports.orderByBeton.some((order) => order.includes(`${sameCategoryId}.`));
|
|
213
|
-
const styleAttribute = foundSameCat && foundAttr ? foundAttr[1][0] : '';
|
|
214
|
-
return !!!sameCategoryId && !!!styleAttribute
|
|
215
|
-
? 'zzzzzzz'
|
|
216
|
-
: `${sameCategoryId}${!!styleAttribute ? '.' + styleAttribute : ''}`;
|
|
217
|
-
});
|
|
218
|
-
};
|
|
219
|
-
exports.getGroupedByBetonProducts = getGroupedByBetonProducts;
|
|
220
|
-
/**
|
|
221
|
-
* Convert a given quantity to either inventory of sale unit, using an item's unit array.
|
|
222
|
-
* @param otherUnits The item's possible units array
|
|
223
|
-
* @param qte The quantity to convert
|
|
224
|
-
* @param convertTo The unit type for conversion.
|
|
225
|
-
* @param roundResult Optionnal. If result should be rounded. Checks if unit supports decimals (if so, rounds to 2 decimals. Else, rounds to 0).
|
|
226
|
-
*/
|
|
227
|
-
const getConvertedUnitQuantity = (otherUnits, qte, convertTo, roundResult) => {
|
|
228
|
-
if (!!!otherUnits)
|
|
229
|
-
return qte;
|
|
230
|
-
const sellUnit = otherUnits.find((unit) => unit.is_sale_unit);
|
|
231
|
-
if (!!!sellUnit)
|
|
232
|
-
return qte;
|
|
233
|
-
let inventoryUnit = otherUnits.find((unit) => unit.is_inventory_unit);
|
|
234
|
-
if (!!!inventoryUnit)
|
|
235
|
-
inventoryUnit = otherUnits.find((unit) => unit.fitting_unit == 1);
|
|
236
|
-
if (!!!inventoryUnit)
|
|
237
|
-
return qte;
|
|
238
|
-
if (inventoryUnit.unit_slug === sellUnit.unit_slug)
|
|
239
|
-
return qte;
|
|
240
|
-
if (convertTo === 'sale_unit') {
|
|
241
|
-
const calculated = qte * (1 / (sellUnit.fitting_unit || 1));
|
|
242
|
-
if (!roundResult)
|
|
243
|
-
return calculated;
|
|
244
|
-
return (0, round_1.default)(calculated, (0, products_1.productUnitSupportsDecimals)(sellUnit.unit_slug) ? 2 : 0);
|
|
245
|
-
}
|
|
246
|
-
const calculated = qte * (sellUnit.fitting_unit || 1);
|
|
247
|
-
if (!roundResult)
|
|
248
|
-
return calculated;
|
|
249
|
-
return (0, round_1.default)(calculated, (0, products_1.productUnitSupportsDecimals)(inventoryUnit.unit_slug) ? 2 : 0);
|
|
250
|
-
};
|
|
251
|
-
exports.getConvertedUnitQuantity = getConvertedUnitQuantity;
|
|
252
|
-
/**
|
|
253
|
-
* Constructs object with detailled inventory quantities by unit (based on other_units for product)
|
|
254
|
-
* @param otherUnits
|
|
255
|
-
* @param inventoryQuantity
|
|
256
|
-
* @param options.showNegativeInventory - Optionnal
|
|
257
|
-
* @param options.unitSlugsToCheck - Optionnal. If provided, only checks for provided units.
|
|
258
|
-
* @param options.log - Ooptionnal. If true, logs found data at each step to browser
|
|
259
|
-
* @returns A key-value object where the key is the unit slug, and the value contains the calculated amount for unit, the fitting unit ratio, and if is the "smallest" unit, the true slug of the corresponding unit
|
|
260
|
-
*/
|
|
261
|
-
const getQty = (otherUnits, inventoryQuantity, unitSlugsToCheck, options = {}) => {
|
|
262
|
-
let qtyUnits = {};
|
|
263
|
-
let calculatedUnits = [];
|
|
264
|
-
const unitsToCheck = unitSlugsToCheck || [
|
|
265
|
-
{ slug: 'pal', roundToOneQte: true },
|
|
266
|
-
{ slug: 'unite', roundToOneQte: false }
|
|
267
|
-
];
|
|
268
|
-
if (options.log)
|
|
269
|
-
console.log('qtyUnits at beggining: ', Object.assign({}, qtyUnits), 'otherunits here: ', otherUnits);
|
|
270
|
-
const isNegativeQty = inventoryQuantity < 0 && !!options.showNegativeInventory;
|
|
271
|
-
// If negative quantities should be shown, we still need to calculate quantities with positive values to get correct other unit quantites
|
|
272
|
-
// Quantities will be "reset" to negative later in the function
|
|
273
|
-
if (!!isNegativeQty)
|
|
274
|
-
inventoryQuantity = inventoryQuantity * -1;
|
|
275
|
-
if (!!!otherUnits ||
|
|
276
|
-
!!!otherUnits.length ||
|
|
277
|
-
!!otherUnits
|
|
278
|
-
.filter((other_unit) => other_unit.unit_slug !== 'booking')
|
|
279
|
-
.every((other_unit) => !!!other_unit.fitting_unit)) {
|
|
280
|
-
qtyUnits['unite'] = {
|
|
281
|
-
value: inventoryQuantity * (!!isNegativeQty ? -1 : 1),
|
|
282
|
-
fitting_unit: 1
|
|
283
|
-
};
|
|
284
|
-
return qtyUnits;
|
|
285
|
-
}
|
|
286
|
-
const orderedOtherUnits = (0, orderBy_1.default)(otherUnits, 'fitting_unit', 'desc');
|
|
287
|
-
const calculateRest = (currentRest, currentValue, fittingUnit) => {
|
|
288
|
-
let rest = 0;
|
|
289
|
-
if (currentValue < 1) {
|
|
290
|
-
rest = currentRest;
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
const calculatedRest = (currentRest % (fittingUnit || 1)) * (currentRest > 0 ? 1 : -1);
|
|
294
|
-
rest = calculatedRest < 0.001 ? 0 : calculatedRest;
|
|
295
|
-
}
|
|
296
|
-
return rest;
|
|
297
|
-
};
|
|
298
|
-
let rest = inventoryQuantity;
|
|
299
|
-
if (options.log)
|
|
300
|
-
console.log('rest at start: ', rest, ', orderedUnits: ', orderedOtherUnits);
|
|
301
|
-
// NEW - Now loops on all units and returns values for equivalent found in unitsToCheck array + inventory Unit for product if not already included
|
|
302
|
-
for (let unit of orderedOtherUnits) {
|
|
303
|
-
const slug = unit.unit_slug;
|
|
304
|
-
if (options.log)
|
|
305
|
-
console.log('checking for unit: ', slug);
|
|
306
|
-
const isInventoryUnit = unit.is_inventory_unit || (orderedOtherUnits.every((u) => !u.is_inventory_unit) && unit.fitting_unit == 1);
|
|
307
|
-
let inUnitsToCheck = unitsToCheck.find((u) => u.slug == slug);
|
|
308
|
-
const alreadyInArray = calculatedUnits.some((u) => u.slug == slug || u.fittingUnit == unit.fitting_unit);
|
|
309
|
-
if (options.log)
|
|
310
|
-
console.log('slug: ', slug, ', inUnitsToCheck: ', inUnitsToCheck, ', isInventoryUnit: ', isInventoryUnit);
|
|
311
|
-
// Only continue check for unit if :
|
|
312
|
-
// - equivalent unit not already in calculated values array
|
|
313
|
-
// - unit found in units to check OR is inventory unit for product
|
|
314
|
-
// - fitting unit for unit is a valid number
|
|
315
|
-
if (!alreadyInArray && (!!inUnitsToCheck || isInventoryUnit) && !!unit.fitting_unit) {
|
|
316
|
-
const shouldRoundToOne = !!inUnitsToCheck && inUnitsToCheck.roundToOneQte;
|
|
317
|
-
const value = rest / (unit.fitting_unit || 1);
|
|
318
|
-
// Unit label in new objet is either :
|
|
319
|
-
// - the label "unite" if unit is inventory unit and should use generic label option
|
|
320
|
-
// - else the unit's "normal" slug
|
|
321
|
-
const unitLabelToUpdate = isInventoryUnit && !options.returnTrueUnitSlug && !shouldRoundToOne ? 'unite' : slug;
|
|
322
|
-
qtyUnits[unitLabelToUpdate] = Object.assign({ value: _getQtyValue(value, unit.fitting_unit === 1, isNegativeQty), fitting_unit: unit.fitting_unit || 1, is_inventory_unit: isInventoryUnit }, (isInventoryUnit && !options.returnTrueUnitSlug && !shouldRoundToOne ? { true_unit: slug } : {}));
|
|
323
|
-
if (!!options.log) {
|
|
324
|
-
console.log('_getQtyValue ', _getQtyValue(value, unit.fitting_unit === 1, isNegativeQty));
|
|
325
|
-
console.log(`qtyUnits after ${slug}: `, Object.assign({}, qtyUnits));
|
|
326
|
-
}
|
|
327
|
-
// Calculate rest from new value remove for current unit
|
|
328
|
-
rest = calculateRest(rest, value, unit.fitting_unit);
|
|
329
|
-
if (options.log) {
|
|
330
|
-
console.log('rest calculated: ', rest);
|
|
331
|
-
console.log('shouldRoundToOne: ', shouldRoundToOne);
|
|
332
|
-
}
|
|
333
|
-
// If unit has property roundToOneQte, and the left over rest quantity is equivalent to one unit of current uni
|
|
334
|
-
// Add 1 quantity to value for current unit, and set rest to 0 (no need to loop in next unit!)
|
|
335
|
-
if (shouldRoundToOne) {
|
|
336
|
-
let restToCheck = !(0, products_1.productUnitSupportsDecimals)(slug) ? (0, round_1.default)(rest) : rest;
|
|
337
|
-
if (options.log)
|
|
338
|
-
console.log('value: ', value, ', rest & restToCheck: ', rest, restToCheck);
|
|
339
|
-
if (value > 1 && restToCheck == unit.fitting_unit) {
|
|
340
|
-
qtyUnits[unitLabelToUpdate]['value'] = qtyUnits[unitLabelToUpdate].value + (!!isNegativeQty ? -1 : 1);
|
|
341
|
-
rest = 0;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
if (options.log) {
|
|
345
|
-
console.log(`rest after ${slug}: `, rest);
|
|
346
|
-
console.log(`qtyUnits after round to one check`, Object.assign({}, qtyUnits));
|
|
347
|
-
}
|
|
348
|
-
// Push unit values to calculated unit array to keep track and check for "doubled" unit values in later loops
|
|
349
|
-
calculatedUnits.push({ slug: slug, fittingUnit: unit.fitting_unit });
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
return qtyUnits;
|
|
353
|
-
};
|
|
354
|
-
exports.getQty = getQty;
|
|
355
|
-
/**
|
|
356
|
-
* Calculates inventory unit quantity for function getQty
|
|
357
|
-
* @param value
|
|
358
|
-
* @param isUnitFittingUnit
|
|
359
|
-
* @param isNegativeQty
|
|
360
|
-
*/
|
|
361
|
-
const _getQtyValue = (value, _isUnitFittingUnit, isNegativeQty) => {
|
|
362
|
-
if (value < 1)
|
|
363
|
-
return 0;
|
|
364
|
-
const roundedValue = Math.floor((0, round_1.default)(value, 5));
|
|
365
|
-
return roundedValue * (!!isNegativeQty ? -1 : 1);
|
|
366
|
-
};
|
|
367
|
-
const convertQtyFromSellUnit = (allUnits, sellUnitQty, convertToUnitSlug) => {
|
|
368
|
-
if (!!!allUnits)
|
|
369
|
-
return sellUnitQty;
|
|
370
|
-
const sellUnit = allUnits.find((u) => !!u.is_sale_unit);
|
|
371
|
-
const convertToUnit = allUnits.find((u) => u.unit_slug === convertToUnitSlug);
|
|
372
|
-
if (!!!sellUnit)
|
|
373
|
-
return sellUnitQty;
|
|
374
|
-
if (!!!convertToUnit)
|
|
375
|
-
return sellUnitQty;
|
|
376
|
-
if (sellUnit.unit_slug === convertToUnit.unit_slug)
|
|
377
|
-
return sellUnitQty;
|
|
378
|
-
return (sellUnitQty * (sellUnit.fitting_unit || 1)) / (convertToUnit.fitting_unit || 1);
|
|
379
|
-
};
|
|
380
|
-
exports.convertQtyFromSellUnit = convertQtyFromSellUnit;
|
|
381
|
-
/**
|
|
382
|
-
* Returns the quantities available for a product based on the current store branch.
|
|
383
|
-
*
|
|
384
|
-
* @param {IInventoryItem} [inventory] - The inventoryItem to check
|
|
385
|
-
* @param {string | null | undefined} [currentSucc] - The current store's slug
|
|
386
|
-
* @param {IFilledDimensionUnits[] | undefined} [otherUnits] - The item's other_units
|
|
387
|
-
* @param {IIndexedProduct | ICartItem} [product] - The item to check
|
|
388
|
-
* @param {boolean} [roundQty] - Wether we want to round to qty string or not
|
|
389
|
-
* @returns {{value: number|string, unit:string}} - The string representation of the available quantity or 'Non disponible' if there's no inventory available.
|
|
390
|
-
*/
|
|
391
|
-
const getAvailableSellUnitQuantity = (inventory, currentSucc, otherUnits, product, roundQty = true) => {
|
|
392
|
-
if (!!!currentSucc || !!!otherUnits)
|
|
393
|
-
return { value: '', unit: '' };
|
|
394
|
-
const saleUnit = otherUnits.find((u) => !!u.is_sale_unit);
|
|
395
|
-
const storeInv = inventory.inventories.find((i) => i.store_id === currentSucc);
|
|
396
|
-
if (!!(0, products_1.checkIfProductIsOfType)(product, 'vrac') && !!storeInv) {
|
|
397
|
-
const available = !!!storeInv.unavailable_in_store;
|
|
398
|
-
return { value: !!available ? 'Disponible' : 'Non-disponible', unit: '' };
|
|
399
|
-
}
|
|
400
|
-
else {
|
|
401
|
-
if (!!inventory.is_infinite_stock || !!product.is_service || !!!storeInv)
|
|
402
|
-
return { value: 'Disponible', unit: '' };
|
|
403
|
-
let invValue = storeInv.qty.available;
|
|
404
|
-
if (invValue < 0)
|
|
405
|
-
invValue = 0;
|
|
406
|
-
const sellUnitValue = (0, exports.getConvertedUnitQuantity)(otherUnits, invValue, 'sale_unit');
|
|
407
|
-
let convertedValue;
|
|
408
|
-
if (!!roundQty) {
|
|
409
|
-
convertedValue = sellUnitValue.toFixed(!!saleUnit && !!(0, products_1.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0);
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
convertedValue = sellUnitValue.toString();
|
|
413
|
-
}
|
|
414
|
-
const unit = (0, products_1.getUnitLabelWithSlug)(!!saleUnit ? saleUnit.unit_slug : 'unite', 'fr', true, ['booking']);
|
|
415
|
-
return { value: convertedValue, unit };
|
|
416
|
-
}
|
|
417
|
-
};
|
|
418
|
-
exports.getAvailableSellUnitQuantity = getAvailableSellUnitQuantity;
|
|
419
|
-
/**
|
|
420
|
-
* Returns true or false depending on if an item is unavailable for a specific store
|
|
421
|
-
*
|
|
422
|
-
* @param {number} [qte] - The quantity of the item to check in the store's inventory
|
|
423
|
-
* @param {IIndexedProduct | ICartItem} [product] - The item
|
|
424
|
-
* @param {IFilledDimensionUnits[] | undefined} [otherUnits] - The item's otherUnits
|
|
425
|
-
* @param {IInventoryItem | undefined} [inventoryItem] - The inventoryItem for the store to check
|
|
426
|
-
* @param {string | null} [storeId] - The id of the store to check
|
|
427
|
-
* @returns {boolean} - True if the item is unavailable for that store, or false if it's available
|
|
428
|
-
*/
|
|
429
|
-
const checkIfItemIsUnavailableForStore = (qte, product, otherUnits, inventoryItem, storeID) => {
|
|
430
|
-
if (!!!inventoryItem ||
|
|
431
|
-
!!inventoryItem.is_infinite_stock ||
|
|
432
|
-
!!product.is_service ||
|
|
433
|
-
!!product.is_sample ||
|
|
434
|
-
!!(0, products_1.checkIfProductIsOfType)(product, 'vrac'))
|
|
435
|
-
return false;
|
|
436
|
-
const availableSellUnitQty = (0, exports.getAvailableSellUnitQuantity)(inventoryItem, storeID, otherUnits, product, false).value;
|
|
437
|
-
if (!!isNaN(parseFloat(availableSellUnitQty)))
|
|
438
|
-
return false;
|
|
439
|
-
return qte > parseFloat(availableSellUnitQty);
|
|
440
|
-
};
|
|
441
|
-
exports.checkIfItemIsUnavailableForStore = checkIfItemIsUnavailableForStore;
|
|
442
|
-
/**
|
|
443
|
-
* Does the store have an inventory
|
|
444
|
-
* @param store Store info
|
|
445
|
-
* @returns True if the store has an inventory, false otherwise
|
|
446
|
-
*/
|
|
447
|
-
const checkIfStoreHasInventory = (store) => {
|
|
448
|
-
return !store.no_inventory_for_store;
|
|
449
|
-
};
|
|
450
|
-
exports.checkIfStoreHasInventory = checkIfStoreHasInventory;
|
|
451
|
-
/**
|
|
452
|
-
* Gets units to use in specific context for a specified space. Returns the condensed version with the unit's slug and if leftover unit quantities should be rounded to 1 in inventory calculatios
|
|
453
|
-
* @param spaceData
|
|
454
|
-
* @param context
|
|
455
|
-
*/
|
|
456
|
-
const getSpaceUnitsToUseForContext = (spaceData, context) => {
|
|
457
|
-
const spaceUnits = (0, object_1.recursiveCheckObject)(spaceData, 'transport_preferences.dimension_units') || [];
|
|
458
|
-
return spaceUnits
|
|
459
|
-
.filter((u) => context == 'transfers'
|
|
460
|
-
? !!(0, object_1.recursiveCheckObject)(u, 'use_for.transfer_request_management')
|
|
461
|
-
: !!(0, object_1.recursiveCheckObject)(u, 'use_for.detailed_inventory_management'))
|
|
462
|
-
.map((u) => ({
|
|
463
|
-
slug: u.slug,
|
|
464
|
-
roundToOneQte: !!(0, object_1.recursiveCheckObject)(u, 'specifics.should_round_to_one_unit_in_calculations')
|
|
465
|
-
}));
|
|
466
|
-
};
|
|
467
|
-
exports.getSpaceUnitsToUseForContext = getSpaceUnitsToUseForContext;
|
|
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
|
+
exports.getSpaceUnitsToUseForContext = exports.checkIfStoreHasInventory = exports.checkIfItemIsUnavailableForStore = exports.getAvailableSellUnitQuantity = exports.convertQtyFromSellUnit = exports.getQty = exports.getConvertedUnitQuantity = exports.getGroupedByBetonProducts = exports.getAttrStringForItem = exports.getAttributesToShow = exports.getUnitShortDict = exports.unitShortDict = exports.unitDict = exports.orderByAccessoires = exports.orderByBeton = exports.checkWebInventoryForType = void 0;
|
|
7
|
+
const flatten_1 = __importDefault(require("lodash/flatten"));
|
|
8
|
+
const groupBy_1 = __importDefault(require("lodash/groupBy"));
|
|
9
|
+
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
10
|
+
const sumBy_1 = __importDefault(require("lodash/sumBy"));
|
|
11
|
+
const toNumber_1 = __importDefault(require("lodash/toNumber"));
|
|
12
|
+
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
13
|
+
const IInventoryItem_1 = require("../Interfaces/Product/IInventoryItem");
|
|
14
|
+
const data_1 = require("../rules/GR/interfaces/data");
|
|
15
|
+
const locale_1 = require("./locale");
|
|
16
|
+
const products_1 = require("../rules/GR/utils/products");
|
|
17
|
+
const round_1 = __importDefault(require("lodash/round"));
|
|
18
|
+
const object_1 = require("./object");
|
|
19
|
+
const checkWebInventoryForType = (inventories, currentWebInventory, type) => {
|
|
20
|
+
const canSellOnline = inventories.filter((i) => i.can_sell_online);
|
|
21
|
+
if (!!!canSellOnline.length)
|
|
22
|
+
return;
|
|
23
|
+
return Object.assign(Object.assign({}, (!!currentWebInventory ? currentWebInventory : (0, IInventoryItem_1.getDefaultInventoryQuantities)())), { [type]: (0, sumBy_1.default)(canSellOnline, (i) => (0, toNumber_1.default)(i.qty[type] || 0)) });
|
|
24
|
+
};
|
|
25
|
+
exports.checkWebInventoryForType = checkWebInventoryForType;
|
|
26
|
+
exports.orderByBeton = [
|
|
27
|
+
'NkLD1rmnGiFZpJA1w6js.moderne',
|
|
28
|
+
'NkLD1rmnGiFZpJA1w6js.traditionnel',
|
|
29
|
+
'NkLD1rmnGiFZpJA1w6js.permeable',
|
|
30
|
+
'oWzANqTldrV1McGzBAU2.moderne',
|
|
31
|
+
'oWzANqTldrV1McGzBAU2.traditionnel',
|
|
32
|
+
'9jgHOxtMVSC1QTs1d9NX',
|
|
33
|
+
'IbCDQBYaPmC125hBlr2j',
|
|
34
|
+
'ptd8lA1kUTsWdyufNGjh',
|
|
35
|
+
'mVjg7x05H1hizbet2xsv',
|
|
36
|
+
'xOQPwedYjSYavS0FJlaE',
|
|
37
|
+
'axEbPjUTnk64S5kRlfh6',
|
|
38
|
+
'WS0n2jiEtoYMSId78GCZ',
|
|
39
|
+
'87HSMsPuUBm5XEUfreu1',
|
|
40
|
+
'j0aJi1eyJwLabcpaPn6a',
|
|
41
|
+
'Q1rCiYAOvadUXAITj47i' // mursDeBlocArchitecturaux
|
|
42
|
+
];
|
|
43
|
+
exports.orderByAccessoires = [
|
|
44
|
+
'KrjSKiXHXa4MrRJIopJO',
|
|
45
|
+
'3uA7YFYwBVRYS8382JKB',
|
|
46
|
+
'shmXowMw563z07Gr1k3d',
|
|
47
|
+
'YZa62rG0LOnC9WKG8BRE',
|
|
48
|
+
'OkeEqkF6QLNoFbzCgpdJ',
|
|
49
|
+
'k2XN5GeN4PRxtbpj4BFk',
|
|
50
|
+
'uDyyPN1IZGhivbV2hXiy',
|
|
51
|
+
'G0xkLTH1XbFBgGGRm6Of',
|
|
52
|
+
'GPFBURGlRFtAzaj5v6vr',
|
|
53
|
+
'QXbBm82HL3vRc7GBjPYQ',
|
|
54
|
+
'XijBekSz3MPAzACFSKUk',
|
|
55
|
+
'meLuoK1SVeqUoo0bWvdz' // engraisGazon
|
|
56
|
+
];
|
|
57
|
+
exports.unitDict = {
|
|
58
|
+
p2: { fr: 'Pieds Carrés', en: 'Square Feet' },
|
|
59
|
+
pal: { fr: 'Palette', en: 'Pallet' },
|
|
60
|
+
rg: { fr: 'Rangs', en: 'Row' },
|
|
61
|
+
ensemble: { fr: 'Ensemble', en: 'Kit' },
|
|
62
|
+
pl: { fr: 'Pieds linéaires', en: 'Linear feet' },
|
|
63
|
+
mcx: { fr: 'Morceaux', en: 'Pieces' },
|
|
64
|
+
unite: { fr: 'Unités', en: 'Units' },
|
|
65
|
+
sac: { fr: 'Sac', en: 'Bag' },
|
|
66
|
+
vg3: { fr: 'Verge cube', en: 'Cubic yard' },
|
|
67
|
+
demipalsm: { fr: 'Demi-palette (petite)', en: 'Half-pallet (small)' },
|
|
68
|
+
demipallg: { fr: 'Demi-palette (lg)', en: 'Half-pallet (lg)' },
|
|
69
|
+
tonne: { fr: 'Tonne', en: 'Ton' },
|
|
70
|
+
roul: { fr: 'Rouleau', en: 'Roll' },
|
|
71
|
+
bte: { fr: 'Boîte', en: 'Box' },
|
|
72
|
+
pqt: { fr: 'Paquet', en: 'Bundle' },
|
|
73
|
+
'': { fr: 'Unités', en: 'Units' }
|
|
74
|
+
};
|
|
75
|
+
exports.unitShortDict = {
|
|
76
|
+
p2: { fr: 'pi²', en: 'pi²' },
|
|
77
|
+
pal: { fr: 'pal.', en: 'pal.' },
|
|
78
|
+
rg: { fr: 'rg', en: 'row' },
|
|
79
|
+
ensemble: { fr: 'ens.', en: 'kit' },
|
|
80
|
+
pl: { fr: 'pL', en: 'linear feet' },
|
|
81
|
+
mcx: { fr: 'mcx', en: 'piece' },
|
|
82
|
+
unite: { fr: 'unité', en: 'unit' },
|
|
83
|
+
sac: { fr: 'sac', en: 'bag' },
|
|
84
|
+
vg3: { fr: 'vg³', en: 'yd³' },
|
|
85
|
+
demipalsm: { fr: 'Demi-pal. (petite)', en: 'Half-pal. (sm)' },
|
|
86
|
+
demipallg: { fr: 'Demi-pal. (lg)', en: 'Half-pal. (lg)' },
|
|
87
|
+
tonne: { fr: 'tonne', en: 'ton' },
|
|
88
|
+
roul: { fr: 'roul.', en: 'roll' },
|
|
89
|
+
bte: { fr: 'bte', en: 'box' },
|
|
90
|
+
pqt: { fr: 'pqt', en: 'bundle' },
|
|
91
|
+
'': { fr: 'unité', en: 'unit' }
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Returns the dictionnary containing the shortened version of unit labels in multiple languages
|
|
95
|
+
* @param {string} slug The slug for which we want to get the shortened dictionnary
|
|
96
|
+
* @param {string[]} returnUnitForSlugs An array of slugs that we want to return a default dictionnary for, in this case the unit dictionnary for unit
|
|
97
|
+
* @returns {ILang} The dictionnary containing the shortened unit label in multiple languages
|
|
98
|
+
*/
|
|
99
|
+
const getUnitShortDict = (slug, returnUnitForSlugs) => {
|
|
100
|
+
try {
|
|
101
|
+
if (!!returnUnitForSlugs && !!returnUnitForSlugs.includes(slug)) {
|
|
102
|
+
return exports.unitShortDict['unite'];
|
|
103
|
+
}
|
|
104
|
+
const res = exports.unitShortDict[slug];
|
|
105
|
+
if (!!!res)
|
|
106
|
+
return { fr: slug, en: slug };
|
|
107
|
+
return res;
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
console.log(err);
|
|
111
|
+
return { fr: slug, en: slug };
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
exports.getUnitShortDict = getUnitShortDict;
|
|
115
|
+
const getOrganizedIndexedDecliAttributes = (decli) => {
|
|
116
|
+
return (0, flatten_1.default)(Object.entries(decli.attributes).map((attrArr) => {
|
|
117
|
+
const newArray = !!!attrArr[1] ? [] : attrArr[1].map((aValue) => `${attrArr[0]}.${aValue}`);
|
|
118
|
+
return (0, flatten_1.default)(newArray);
|
|
119
|
+
}));
|
|
120
|
+
};
|
|
121
|
+
const getAttributesToShow = (currentItems) => {
|
|
122
|
+
const allAttributesPerItem = currentItems.map((item) => !!Array.isArray(item.attributes) ? item.attributes : getOrganizedIndexedDecliAttributes(item));
|
|
123
|
+
const allAttributes = (0, uniq_1.default)((0, flatten_1.default)(allAttributesPerItem));
|
|
124
|
+
const group = (0, groupBy_1.default)(allAttributes, (a) => a.split('.')[0]);
|
|
125
|
+
const parentAttributesToShow = Object.entries(group)
|
|
126
|
+
.map((g) => {
|
|
127
|
+
let attrToShow = undefined;
|
|
128
|
+
// Remove spécific attributes from the list
|
|
129
|
+
if ([
|
|
130
|
+
data_1.AttributesIdEnumGR.AVAILABILITY,
|
|
131
|
+
data_1.AttributesIdEnumGR.TYPE,
|
|
132
|
+
data_1.AttributesIdEnumGR.MARKETING,
|
|
133
|
+
data_1.AttributesIdEnumGR.COLOR_GROUP,
|
|
134
|
+
data_1.AttributesIdEnumGR.VENTE_MIXTE,
|
|
135
|
+
data_1.AttributesIdEnumGR.TYPE_UTILISATION_BETON
|
|
136
|
+
].includes(g[0])) {
|
|
137
|
+
return attrToShow;
|
|
138
|
+
}
|
|
139
|
+
// Check if the attribute values present in the item list are the same for all items. If so, remove from list
|
|
140
|
+
if (g[1].length > 1) {
|
|
141
|
+
const allItemsContainAllAttr = allAttributesPerItem.every((itemAttributes) => {
|
|
142
|
+
const sameAttr = itemAttributes.filter((attr) => attr.includes(g[0]));
|
|
143
|
+
if (!!!sameAttr)
|
|
144
|
+
return false;
|
|
145
|
+
return sameAttr.length === g[1].length && sameAttr.every((attr) => g[1].includes(attr));
|
|
146
|
+
});
|
|
147
|
+
// if not all items contain all attribute values, add to attributes to show
|
|
148
|
+
if (!!!allItemsContainAllAttr) {
|
|
149
|
+
attrToShow = g[0];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return attrToShow;
|
|
153
|
+
})
|
|
154
|
+
.filter((v) => !!v);
|
|
155
|
+
return parentAttributesToShow;
|
|
156
|
+
};
|
|
157
|
+
exports.getAttributesToShow = getAttributesToShow;
|
|
158
|
+
const attrToShowInItem = (item, attributesToShow) => {
|
|
159
|
+
const itemAttributes = Array.isArray(item.attributes)
|
|
160
|
+
? item.attributes
|
|
161
|
+
: getOrganizedIndexedDecliAttributes(item);
|
|
162
|
+
return itemAttributes
|
|
163
|
+
.map((a) => {
|
|
164
|
+
if (attributesToShow.find((attr_id) => attr_id === a.split('.')[0])) {
|
|
165
|
+
return a;
|
|
166
|
+
}
|
|
167
|
+
return;
|
|
168
|
+
})
|
|
169
|
+
.filter((v) => !!v);
|
|
170
|
+
};
|
|
171
|
+
const attrString = (attrToShow, attributes, locale) => {
|
|
172
|
+
const valuesArray = (0, orderBy_1.default)(attrToShow, (a) => a.split('.')[0] === 'Sy9GlMjUcqUkvKeqLuSz' ? 'AAA' : a.split('.')[0][0]).map((attr) => {
|
|
173
|
+
const attribute = attributes.find((a) => a.id === attr.split('.')[0]);
|
|
174
|
+
if (!!!attribute)
|
|
175
|
+
return '';
|
|
176
|
+
const attributeValue = attribute.values.find((a) => a.slug === attr.split('.')[1]);
|
|
177
|
+
if (!!!attributeValue)
|
|
178
|
+
return '';
|
|
179
|
+
return (0, locale_1.getLocaleOfDictionnary)(attributeValue.value, locale);
|
|
180
|
+
});
|
|
181
|
+
return valuesArray.join(' - ');
|
|
182
|
+
};
|
|
183
|
+
const getAttrStringForItem = (inventoryItem, attributesToShow, attributes, locale = 'fr') => {
|
|
184
|
+
const attrToShow = attrToShowInItem(inventoryItem, attributesToShow);
|
|
185
|
+
const attrStr = attrString(attrToShow, attributes, locale);
|
|
186
|
+
return attrStr;
|
|
187
|
+
};
|
|
188
|
+
exports.getAttrStringForItem = getAttrStringForItem;
|
|
189
|
+
const getGroupedByBetonProducts = (arrBeton, categories) => {
|
|
190
|
+
return (0, groupBy_1.default)(arrBeton, (item) => {
|
|
191
|
+
const categorySlugLvl0 = !!item.categories ? item.categories['lvl0'] : '';
|
|
192
|
+
const categorySlugLvl1 = !!item.categories && !!item.categories['lvl1'] ? item.categories['lvl1'].split(' > ')[1] : '';
|
|
193
|
+
const categorySlugLvl2 = !!item.categories && !!item.categories['lvl2'] ? item.categories['lvl2'].split(' > ')[2] : '';
|
|
194
|
+
const lvl0CategoryId = !!categorySlugLvl0 && categories.some((c) => c.slug === categorySlugLvl0)
|
|
195
|
+
? categories.find((c) => c.slug === categorySlugLvl0).id
|
|
196
|
+
: '';
|
|
197
|
+
const lvl1CategoryId = !!categorySlugLvl1 && categories.some((c) => c.slug === categorySlugLvl1)
|
|
198
|
+
? categories.find((c) => c.slug === categorySlugLvl1).id
|
|
199
|
+
: '';
|
|
200
|
+
const lvl2CategoryId = !!categorySlugLvl2 && categories.some((c) => c.slug === categorySlugLvl2)
|
|
201
|
+
? categories.find((c) => c.slug === categorySlugLvl2).id
|
|
202
|
+
: '';
|
|
203
|
+
const sameCategoryId = !!lvl2CategoryId && !!exports.orderByBeton.some((order) => order.includes(lvl2CategoryId))
|
|
204
|
+
? lvl2CategoryId
|
|
205
|
+
: !!lvl1CategoryId && !!exports.orderByBeton.some((order) => order.includes(lvl1CategoryId))
|
|
206
|
+
? lvl1CategoryId
|
|
207
|
+
: !!lvl0CategoryId && !!exports.orderByBeton.some((order) => order.includes(lvl0CategoryId))
|
|
208
|
+
? lvl0CategoryId
|
|
209
|
+
: '';
|
|
210
|
+
const attrDict = Object.entries(item.attributes);
|
|
211
|
+
const foundAttr = attrDict.find((attr) => attr[0] === data_1.AttributesIdEnumGR.STYLE);
|
|
212
|
+
const foundSameCat = !!exports.orderByBeton.some((order) => order.includes(`${sameCategoryId}.`));
|
|
213
|
+
const styleAttribute = foundSameCat && foundAttr ? foundAttr[1][0] : '';
|
|
214
|
+
return !!!sameCategoryId && !!!styleAttribute
|
|
215
|
+
? 'zzzzzzz'
|
|
216
|
+
: `${sameCategoryId}${!!styleAttribute ? '.' + styleAttribute : ''}`;
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
exports.getGroupedByBetonProducts = getGroupedByBetonProducts;
|
|
220
|
+
/**
|
|
221
|
+
* Convert a given quantity to either inventory of sale unit, using an item's unit array.
|
|
222
|
+
* @param otherUnits The item's possible units array
|
|
223
|
+
* @param qte The quantity to convert
|
|
224
|
+
* @param convertTo The unit type for conversion.
|
|
225
|
+
* @param roundResult Optionnal. If result should be rounded. Checks if unit supports decimals (if so, rounds to 2 decimals. Else, rounds to 0).
|
|
226
|
+
*/
|
|
227
|
+
const getConvertedUnitQuantity = (otherUnits, qte, convertTo, roundResult) => {
|
|
228
|
+
if (!!!otherUnits)
|
|
229
|
+
return qte;
|
|
230
|
+
const sellUnit = otherUnits.find((unit) => unit.is_sale_unit);
|
|
231
|
+
if (!!!sellUnit)
|
|
232
|
+
return qte;
|
|
233
|
+
let inventoryUnit = otherUnits.find((unit) => unit.is_inventory_unit);
|
|
234
|
+
if (!!!inventoryUnit)
|
|
235
|
+
inventoryUnit = otherUnits.find((unit) => unit.fitting_unit == 1);
|
|
236
|
+
if (!!!inventoryUnit)
|
|
237
|
+
return qte;
|
|
238
|
+
if (inventoryUnit.unit_slug === sellUnit.unit_slug)
|
|
239
|
+
return qte;
|
|
240
|
+
if (convertTo === 'sale_unit') {
|
|
241
|
+
const calculated = qte * (1 / (sellUnit.fitting_unit || 1));
|
|
242
|
+
if (!roundResult)
|
|
243
|
+
return calculated;
|
|
244
|
+
return (0, round_1.default)(calculated, (0, products_1.productUnitSupportsDecimals)(sellUnit.unit_slug) ? 2 : 0);
|
|
245
|
+
}
|
|
246
|
+
const calculated = qte * (sellUnit.fitting_unit || 1);
|
|
247
|
+
if (!roundResult)
|
|
248
|
+
return calculated;
|
|
249
|
+
return (0, round_1.default)(calculated, (0, products_1.productUnitSupportsDecimals)(inventoryUnit.unit_slug) ? 2 : 0);
|
|
250
|
+
};
|
|
251
|
+
exports.getConvertedUnitQuantity = getConvertedUnitQuantity;
|
|
252
|
+
/**
|
|
253
|
+
* Constructs object with detailled inventory quantities by unit (based on other_units for product)
|
|
254
|
+
* @param otherUnits
|
|
255
|
+
* @param inventoryQuantity
|
|
256
|
+
* @param options.showNegativeInventory - Optionnal
|
|
257
|
+
* @param options.unitSlugsToCheck - Optionnal. If provided, only checks for provided units.
|
|
258
|
+
* @param options.log - Ooptionnal. If true, logs found data at each step to browser
|
|
259
|
+
* @returns A key-value object where the key is the unit slug, and the value contains the calculated amount for unit, the fitting unit ratio, and if is the "smallest" unit, the true slug of the corresponding unit
|
|
260
|
+
*/
|
|
261
|
+
const getQty = (otherUnits, inventoryQuantity, unitSlugsToCheck, options = {}) => {
|
|
262
|
+
let qtyUnits = {};
|
|
263
|
+
let calculatedUnits = [];
|
|
264
|
+
const unitsToCheck = unitSlugsToCheck || [
|
|
265
|
+
{ slug: 'pal', roundToOneQte: true },
|
|
266
|
+
{ slug: 'unite', roundToOneQte: false }
|
|
267
|
+
];
|
|
268
|
+
if (options.log)
|
|
269
|
+
console.log('qtyUnits at beggining: ', Object.assign({}, qtyUnits), 'otherunits here: ', otherUnits);
|
|
270
|
+
const isNegativeQty = inventoryQuantity < 0 && !!options.showNegativeInventory;
|
|
271
|
+
// If negative quantities should be shown, we still need to calculate quantities with positive values to get correct other unit quantites
|
|
272
|
+
// Quantities will be "reset" to negative later in the function
|
|
273
|
+
if (!!isNegativeQty)
|
|
274
|
+
inventoryQuantity = inventoryQuantity * -1;
|
|
275
|
+
if (!!!otherUnits ||
|
|
276
|
+
!!!otherUnits.length ||
|
|
277
|
+
!!otherUnits
|
|
278
|
+
.filter((other_unit) => other_unit.unit_slug !== 'booking')
|
|
279
|
+
.every((other_unit) => !!!other_unit.fitting_unit)) {
|
|
280
|
+
qtyUnits['unite'] = {
|
|
281
|
+
value: inventoryQuantity * (!!isNegativeQty ? -1 : 1),
|
|
282
|
+
fitting_unit: 1
|
|
283
|
+
};
|
|
284
|
+
return qtyUnits;
|
|
285
|
+
}
|
|
286
|
+
const orderedOtherUnits = (0, orderBy_1.default)(otherUnits, 'fitting_unit', 'desc');
|
|
287
|
+
const calculateRest = (currentRest, currentValue, fittingUnit) => {
|
|
288
|
+
let rest = 0;
|
|
289
|
+
if (currentValue < 1) {
|
|
290
|
+
rest = currentRest;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
const calculatedRest = (currentRest % (fittingUnit || 1)) * (currentRest > 0 ? 1 : -1);
|
|
294
|
+
rest = calculatedRest < 0.001 ? 0 : calculatedRest;
|
|
295
|
+
}
|
|
296
|
+
return rest;
|
|
297
|
+
};
|
|
298
|
+
let rest = inventoryQuantity;
|
|
299
|
+
if (options.log)
|
|
300
|
+
console.log('rest at start: ', rest, ', orderedUnits: ', orderedOtherUnits);
|
|
301
|
+
// NEW - Now loops on all units and returns values for equivalent found in unitsToCheck array + inventory Unit for product if not already included
|
|
302
|
+
for (let unit of orderedOtherUnits) {
|
|
303
|
+
const slug = unit.unit_slug;
|
|
304
|
+
if (options.log)
|
|
305
|
+
console.log('checking for unit: ', slug);
|
|
306
|
+
const isInventoryUnit = unit.is_inventory_unit || (orderedOtherUnits.every((u) => !u.is_inventory_unit) && unit.fitting_unit == 1);
|
|
307
|
+
let inUnitsToCheck = unitsToCheck.find((u) => u.slug == slug);
|
|
308
|
+
const alreadyInArray = calculatedUnits.some((u) => u.slug == slug || u.fittingUnit == unit.fitting_unit);
|
|
309
|
+
if (options.log)
|
|
310
|
+
console.log('slug: ', slug, ', inUnitsToCheck: ', inUnitsToCheck, ', isInventoryUnit: ', isInventoryUnit);
|
|
311
|
+
// Only continue check for unit if :
|
|
312
|
+
// - equivalent unit not already in calculated values array
|
|
313
|
+
// - unit found in units to check OR is inventory unit for product
|
|
314
|
+
// - fitting unit for unit is a valid number
|
|
315
|
+
if (!alreadyInArray && (!!inUnitsToCheck || isInventoryUnit) && !!unit.fitting_unit) {
|
|
316
|
+
const shouldRoundToOne = !!inUnitsToCheck && inUnitsToCheck.roundToOneQte;
|
|
317
|
+
const value = rest / (unit.fitting_unit || 1);
|
|
318
|
+
// Unit label in new objet is either :
|
|
319
|
+
// - the label "unite" if unit is inventory unit and should use generic label option
|
|
320
|
+
// - else the unit's "normal" slug
|
|
321
|
+
const unitLabelToUpdate = isInventoryUnit && !options.returnTrueUnitSlug && !shouldRoundToOne ? 'unite' : slug;
|
|
322
|
+
qtyUnits[unitLabelToUpdate] = Object.assign({ value: _getQtyValue(value, unit.fitting_unit === 1, isNegativeQty), fitting_unit: unit.fitting_unit || 1, is_inventory_unit: isInventoryUnit }, (isInventoryUnit && !options.returnTrueUnitSlug && !shouldRoundToOne ? { true_unit: slug } : {}));
|
|
323
|
+
if (!!options.log) {
|
|
324
|
+
console.log('_getQtyValue ', _getQtyValue(value, unit.fitting_unit === 1, isNegativeQty));
|
|
325
|
+
console.log(`qtyUnits after ${slug}: `, Object.assign({}, qtyUnits));
|
|
326
|
+
}
|
|
327
|
+
// Calculate rest from new value remove for current unit
|
|
328
|
+
rest = calculateRest(rest, value, unit.fitting_unit);
|
|
329
|
+
if (options.log) {
|
|
330
|
+
console.log('rest calculated: ', rest);
|
|
331
|
+
console.log('shouldRoundToOne: ', shouldRoundToOne);
|
|
332
|
+
}
|
|
333
|
+
// If unit has property roundToOneQte, and the left over rest quantity is equivalent to one unit of current uni
|
|
334
|
+
// Add 1 quantity to value for current unit, and set rest to 0 (no need to loop in next unit!)
|
|
335
|
+
if (shouldRoundToOne) {
|
|
336
|
+
let restToCheck = !(0, products_1.productUnitSupportsDecimals)(slug) ? (0, round_1.default)(rest) : rest;
|
|
337
|
+
if (options.log)
|
|
338
|
+
console.log('value: ', value, ', rest & restToCheck: ', rest, restToCheck);
|
|
339
|
+
if (value > 1 && restToCheck == unit.fitting_unit) {
|
|
340
|
+
qtyUnits[unitLabelToUpdate]['value'] = qtyUnits[unitLabelToUpdate].value + (!!isNegativeQty ? -1 : 1);
|
|
341
|
+
rest = 0;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
if (options.log) {
|
|
345
|
+
console.log(`rest after ${slug}: `, rest);
|
|
346
|
+
console.log(`qtyUnits after round to one check`, Object.assign({}, qtyUnits));
|
|
347
|
+
}
|
|
348
|
+
// Push unit values to calculated unit array to keep track and check for "doubled" unit values in later loops
|
|
349
|
+
calculatedUnits.push({ slug: slug, fittingUnit: unit.fitting_unit });
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return qtyUnits;
|
|
353
|
+
};
|
|
354
|
+
exports.getQty = getQty;
|
|
355
|
+
/**
|
|
356
|
+
* Calculates inventory unit quantity for function getQty
|
|
357
|
+
* @param value
|
|
358
|
+
* @param isUnitFittingUnit
|
|
359
|
+
* @param isNegativeQty
|
|
360
|
+
*/
|
|
361
|
+
const _getQtyValue = (value, _isUnitFittingUnit, isNegativeQty) => {
|
|
362
|
+
if (value < 1)
|
|
363
|
+
return 0;
|
|
364
|
+
const roundedValue = Math.floor((0, round_1.default)(value, 5));
|
|
365
|
+
return roundedValue * (!!isNegativeQty ? -1 : 1);
|
|
366
|
+
};
|
|
367
|
+
const convertQtyFromSellUnit = (allUnits, sellUnitQty, convertToUnitSlug) => {
|
|
368
|
+
if (!!!allUnits)
|
|
369
|
+
return sellUnitQty;
|
|
370
|
+
const sellUnit = allUnits.find((u) => !!u.is_sale_unit);
|
|
371
|
+
const convertToUnit = allUnits.find((u) => u.unit_slug === convertToUnitSlug);
|
|
372
|
+
if (!!!sellUnit)
|
|
373
|
+
return sellUnitQty;
|
|
374
|
+
if (!!!convertToUnit)
|
|
375
|
+
return sellUnitQty;
|
|
376
|
+
if (sellUnit.unit_slug === convertToUnit.unit_slug)
|
|
377
|
+
return sellUnitQty;
|
|
378
|
+
return (sellUnitQty * (sellUnit.fitting_unit || 1)) / (convertToUnit.fitting_unit || 1);
|
|
379
|
+
};
|
|
380
|
+
exports.convertQtyFromSellUnit = convertQtyFromSellUnit;
|
|
381
|
+
/**
|
|
382
|
+
* Returns the quantities available for a product based on the current store branch.
|
|
383
|
+
*
|
|
384
|
+
* @param {IInventoryItem} [inventory] - The inventoryItem to check
|
|
385
|
+
* @param {string | null | undefined} [currentSucc] - The current store's slug
|
|
386
|
+
* @param {IFilledDimensionUnits[] | undefined} [otherUnits] - The item's other_units
|
|
387
|
+
* @param {IIndexedProduct | ICartItem} [product] - The item to check
|
|
388
|
+
* @param {boolean} [roundQty] - Wether we want to round to qty string or not
|
|
389
|
+
* @returns {{value: number|string, unit:string}} - The string representation of the available quantity or 'Non disponible' if there's no inventory available.
|
|
390
|
+
*/
|
|
391
|
+
const getAvailableSellUnitQuantity = (inventory, currentSucc, otherUnits, product, roundQty = true) => {
|
|
392
|
+
if (!!!currentSucc || !!!otherUnits)
|
|
393
|
+
return { value: '', unit: '' };
|
|
394
|
+
const saleUnit = otherUnits.find((u) => !!u.is_sale_unit);
|
|
395
|
+
const storeInv = inventory.inventories.find((i) => i.store_id === currentSucc);
|
|
396
|
+
if (!!(0, products_1.checkIfProductIsOfType)(product, 'vrac') && !!storeInv) {
|
|
397
|
+
const available = !!!storeInv.unavailable_in_store;
|
|
398
|
+
return { value: !!available ? 'Disponible' : 'Non-disponible', unit: '' };
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
if (!!inventory.is_infinite_stock || !!product.is_service || !!!storeInv)
|
|
402
|
+
return { value: 'Disponible', unit: '' };
|
|
403
|
+
let invValue = storeInv.qty.available;
|
|
404
|
+
if (invValue < 0)
|
|
405
|
+
invValue = 0;
|
|
406
|
+
const sellUnitValue = (0, exports.getConvertedUnitQuantity)(otherUnits, invValue, 'sale_unit');
|
|
407
|
+
let convertedValue;
|
|
408
|
+
if (!!roundQty) {
|
|
409
|
+
convertedValue = sellUnitValue.toFixed(!!saleUnit && !!(0, products_1.productUnitSupportsDecimals)(saleUnit.unit_slug) ? 2 : 0);
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
convertedValue = sellUnitValue.toString();
|
|
413
|
+
}
|
|
414
|
+
const unit = (0, products_1.getUnitLabelWithSlug)(!!saleUnit ? saleUnit.unit_slug : 'unite', 'fr', true, ['booking']);
|
|
415
|
+
return { value: convertedValue, unit };
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
exports.getAvailableSellUnitQuantity = getAvailableSellUnitQuantity;
|
|
419
|
+
/**
|
|
420
|
+
* Returns true or false depending on if an item is unavailable for a specific store
|
|
421
|
+
*
|
|
422
|
+
* @param {number} [qte] - The quantity of the item to check in the store's inventory
|
|
423
|
+
* @param {IIndexedProduct | ICartItem} [product] - The item
|
|
424
|
+
* @param {IFilledDimensionUnits[] | undefined} [otherUnits] - The item's otherUnits
|
|
425
|
+
* @param {IInventoryItem | undefined} [inventoryItem] - The inventoryItem for the store to check
|
|
426
|
+
* @param {string | null} [storeId] - The id of the store to check
|
|
427
|
+
* @returns {boolean} - True if the item is unavailable for that store, or false if it's available
|
|
428
|
+
*/
|
|
429
|
+
const checkIfItemIsUnavailableForStore = (qte, product, otherUnits, inventoryItem, storeID) => {
|
|
430
|
+
if (!!!inventoryItem ||
|
|
431
|
+
!!inventoryItem.is_infinite_stock ||
|
|
432
|
+
!!product.is_service ||
|
|
433
|
+
!!product.is_sample ||
|
|
434
|
+
!!(0, products_1.checkIfProductIsOfType)(product, 'vrac'))
|
|
435
|
+
return false;
|
|
436
|
+
const availableSellUnitQty = (0, exports.getAvailableSellUnitQuantity)(inventoryItem, storeID, otherUnits, product, false).value;
|
|
437
|
+
if (!!isNaN(parseFloat(availableSellUnitQty)))
|
|
438
|
+
return false;
|
|
439
|
+
return qte > parseFloat(availableSellUnitQty);
|
|
440
|
+
};
|
|
441
|
+
exports.checkIfItemIsUnavailableForStore = checkIfItemIsUnavailableForStore;
|
|
442
|
+
/**
|
|
443
|
+
* Does the store have an inventory
|
|
444
|
+
* @param store Store info
|
|
445
|
+
* @returns True if the store has an inventory, false otherwise
|
|
446
|
+
*/
|
|
447
|
+
const checkIfStoreHasInventory = (store) => {
|
|
448
|
+
return !store.no_inventory_for_store;
|
|
449
|
+
};
|
|
450
|
+
exports.checkIfStoreHasInventory = checkIfStoreHasInventory;
|
|
451
|
+
/**
|
|
452
|
+
* Gets units to use in specific context for a specified space. Returns the condensed version with the unit's slug and if leftover unit quantities should be rounded to 1 in inventory calculatios
|
|
453
|
+
* @param spaceData
|
|
454
|
+
* @param context
|
|
455
|
+
*/
|
|
456
|
+
const getSpaceUnitsToUseForContext = (spaceData, context) => {
|
|
457
|
+
const spaceUnits = (0, object_1.recursiveCheckObject)(spaceData, 'transport_preferences.dimension_units') || [];
|
|
458
|
+
return spaceUnits
|
|
459
|
+
.filter((u) => context == 'transfers'
|
|
460
|
+
? !!(0, object_1.recursiveCheckObject)(u, 'use_for.transfer_request_management')
|
|
461
|
+
: !!(0, object_1.recursiveCheckObject)(u, 'use_for.detailed_inventory_management'))
|
|
462
|
+
.map((u) => ({
|
|
463
|
+
slug: u.slug,
|
|
464
|
+
roundToOneQte: !!(0, object_1.recursiveCheckObject)(u, 'specifics.should_round_to_one_unit_in_calculations')
|
|
465
|
+
}));
|
|
466
|
+
};
|
|
467
|
+
exports.getSpaceUnitsToUseForContext = getSpaceUnitsToUseForContext;
|
|
468
468
|
//# sourceMappingURL=inventories.js.map
|