addio-admin-sdk 1.7.86 → 1.7.87
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 +14 -0
- package/.env.dev +14 -14
- package/.github/workflows/publish_coverage.yam_ +69 -69
- package/addio-sdk-doc.md +1473 -1473
- package/changelog.md +537 -537
- package/dist/Interfaces/Address/index.d.ts +21 -21
- package/dist/Interfaces/Address/index.js +16 -16
- package/dist/Interfaces/Algolia/index.d.ts +164 -164
- 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 +52 -52
- 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 +25 -25
- package/dist/Interfaces/CMS/index.js +2 -2
- 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 +424 -424
- package/dist/Interfaces/Cart/index.js +192 -192
- 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 +12 -12
- package/dist/Interfaces/Customer/IStoreCredit.js +2 -2
- package/dist/Interfaces/Customer/index.d.ts +97 -97
- package/dist/Interfaces/Customer/index.js +141 -141
- package/dist/Interfaces/Declination/index.d.ts +114 -114
- package/dist/Interfaces/Declination/index.js +60 -60
- 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 +56 -56
- 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 +36 -36
- 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 +97 -97
- package/dist/Interfaces/Indexed/Product/index.js +212 -212
- 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 +23 -23
- package/dist/Interfaces/Menu/index.js +10 -10
- package/dist/Interfaces/Note/index.d.ts +10 -0
- package/dist/Interfaces/Note/index.js +8 -0
- package/dist/Interfaces/Note/index.js.map +1 -0
- 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 +13 -13
- package/dist/Interfaces/Payment/index.js +2 -2
- 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 +791 -791
- package/dist/Interfaces/Product/IInventoryItem.d.ts +84 -84
- package/dist/Interfaces/Product/IInventoryItem.js +36 -36
- package/dist/Interfaces/Product/IPricing.d.ts +177 -177
- package/dist/Interfaces/Product/IPricing.js +174 -174
- package/dist/Interfaces/Product/index.d.ts +127 -127
- package/dist/Interfaces/Product/index.js +56 -56
- 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 +137 -137
- package/dist/Interfaces/Rules/IDiscountRule.js +95 -95
- 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 +12 -12
- 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 +48 -48
- 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 +52 -52
- package/dist/Interfaces/Space/IExternalService.js +43 -43
- package/dist/Interfaces/Space/IMember.d.ts +16 -16
- package/dist/Interfaces/Space/IMember.js +9 -9
- package/dist/Interfaces/Space/index.d.ts +385 -385
- package/dist/Interfaces/Space/index.js +159 -159
- 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 +62 -62
- 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 +110 -110
- package/dist/Interfaces/TCG/index.js +27 -27
- 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 +43 -43
- 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 +111 -111
- package/dist/constants/version.d.ts +2 -2
- package/dist/constants/version.js +5 -5
- package/dist/index.d.ts +32 -32
- package/dist/index.js +242 -242
- package/dist/lib/Attribute/index.d.ts +14 -14
- package/dist/lib/Attribute/index.js +143 -143
- package/dist/lib/BGJob/index.d.ts +9 -9
- package/dist/lib/BGJob/index.js +212 -212
- 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 +70 -70
- package/dist/lib/Booking/index.js +576 -576
- package/dist/lib/Brand/index.d.ts +17 -17
- package/dist/lib/Brand/index.js +113 -113
- package/dist/lib/Cart/index.d.ts +206 -206
- package/dist/lib/Cart/index.js +3164 -3164
- package/dist/lib/Catalogue/index.d.ts +9 -9
- package/dist/lib/Catalogue/index.js +69 -69
- package/dist/lib/Category/index.d.ts +27 -27
- package/dist/lib/Category/index.js +190 -190
- package/dist/lib/Class/index.d.ts +12 -12
- package/dist/lib/Class/index.js +58 -58
- package/dist/lib/Consent/index.d.ts +4 -4
- package/dist/lib/Consent/index.js +29 -29
- package/dist/lib/Customer/index.d.ts +11 -11
- package/dist/lib/Customer/index.js +68 -68
- package/dist/lib/Declination/index.d.ts +9 -9
- package/dist/lib/Declination/index.js +24 -24
- package/dist/lib/Discount/index.d.ts +18 -18
- package/dist/lib/Discount/index.js +470 -470
- package/dist/lib/ElasticSearch/index.d.ts +8 -8
- package/dist/lib/ElasticSearch/index.js +45 -45
- package/dist/lib/Elavon/index.d.ts +18 -18
- package/dist/lib/Elavon/index.js +130 -130
- package/dist/lib/Email/AbandonedCartEmail.d.ts +8 -8
- package/dist/lib/Email/AbandonedCartEmail.js +16 -16
- package/dist/lib/Email/AccountConfirmationEmail.d.ts +11 -11
- package/dist/lib/Email/AccountConfirmationEmail.js +22 -22
- package/dist/lib/Email/AdminOrderConfirmationEmail.d.ts +8 -8
- package/dist/lib/Email/AdminOrderConfirmationEmail.js +16 -16
- package/dist/lib/Email/ApplicationEmail.d.ts +8 -8
- package/dist/lib/Email/ApplicationEmail.js +16 -16
- package/dist/lib/Email/BackInStockEmail.d.ts +8 -8
- package/dist/lib/Email/BackInStockEmail.js +16 -16
- package/dist/lib/Email/ContactEmail.d.ts +8 -8
- package/dist/lib/Email/ContactEmail.js +16 -16
- package/dist/lib/Email/CustomerBookingAdminEmail.d.ts +8 -8
- package/dist/lib/Email/CustomerBookingAdminEmail.js +16 -16
- package/dist/lib/Email/CustomerBookingEmail.d.ts +8 -8
- package/dist/lib/Email/CustomerBookingEmail.js +16 -16
- package/dist/lib/Email/OrderConfirmationEmail.d.ts +8 -8
- package/dist/lib/Email/OrderConfirmationEmail.js +16 -16
- package/dist/lib/Email/OrderDenounciationEmail.d.ts +8 -8
- package/dist/lib/Email/OrderDenounciationEmail.js +16 -16
- package/dist/lib/Email/OrderSampleEmail.d.ts +8 -8
- package/dist/lib/Email/OrderSampleEmail.js +16 -16
- package/dist/lib/Email/OtherTypeEmails.d.ts +8 -8
- package/dist/lib/Email/OtherTypeEmails.js +19 -19
- package/dist/lib/Email/PasswordResetEmail.d.ts +8 -8
- package/dist/lib/Email/PasswordResetEmail.js +16 -16
- package/dist/lib/Email/PhotoShootEmail.d.ts +8 -8
- package/dist/lib/Email/PhotoShootEmail.js +16 -16
- package/dist/lib/Email/PickUpConfirmation.d.ts +8 -8
- package/dist/lib/Email/PickUpConfirmation.js +16 -16
- package/dist/lib/Email/ShippingConfirmation.d.ts +8 -8
- package/dist/lib/Email/ShippingConfirmation.js +16 -16
- package/dist/lib/Email/WelcomeEmail.d.ts +8 -8
- package/dist/lib/Email/WelcomeEmail.js +16 -16
- package/dist/lib/Email/index.d.ts +8 -8
- package/dist/lib/Email/index.js +23 -23
- package/dist/lib/ExternalService/Ebay.d.ts +62 -62
- package/dist/lib/ExternalService/Ebay.js +102 -102
- 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 +86 -86
- package/dist/lib/Indexed/Product.d.ts +17 -17
- package/dist/lib/Indexed/Product.js +48 -48
- package/dist/lib/Inventory/index.d.ts +49 -49
- package/dist/lib/Inventory/index.js +314 -314
- package/dist/lib/Invoice/index.d.ts +5 -5
- package/dist/lib/Invoice/index.js +10 -10
- package/dist/lib/MarketplacePublication/index.d.ts +9 -9
- package/dist/lib/MarketplacePublication/index.js +118 -118
- package/dist/lib/Menu/index.d.ts +11 -11
- package/dist/lib/Menu/index.js +103 -103
- 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 -0
- package/dist/lib/Note/index.js +7 -0
- package/dist/lib/Note/index.js.map +1 -0
- package/dist/lib/Order/index.d.ts +7 -7
- package/dist/lib/Order/index.js +33 -33
- package/dist/lib/Org/index.d.ts +27 -27
- package/dist/lib/Org/index.js +175 -175
- package/dist/lib/PandaPay/index.d.ts +16 -16
- package/dist/lib/PandaPay/index.js +170 -170
- package/dist/lib/Paysafe/index.d.ts +11 -11
- package/dist/lib/Paysafe/index.js +40 -40
- package/dist/lib/Product/index.d.ts +154 -154
- package/dist/lib/Product/index.js +793 -793
- package/dist/lib/ProductAttribute/index.d.ts +15 -15
- package/dist/lib/ProductAttribute/index.js +45 -45
- package/dist/lib/PromiseToPurchase/index.d.ts +37 -37
- package/dist/lib/PromiseToPurchase/index.js +264 -264
- package/dist/lib/PurchaseOrder/index.d.ts +9 -9
- package/dist/lib/PurchaseOrder/index.js +16 -16
- 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 +5 -5
- package/dist/lib/Service/index.js +13 -13
- package/dist/lib/Shipment/index.d.ts +28 -28
- package/dist/lib/Shipment/index.js +357 -357
- package/dist/lib/Slider/index.d.ts +16 -16
- package/dist/lib/Slider/index.js +113 -113
- package/dist/lib/Space/index.d.ts +873 -873
- package/dist/lib/Space/index.js +5094 -5094
- 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 +22 -22
- package/dist/lib/Tags/index.d.ts +6 -6
- package/dist/lib/Tags/index.js +21 -21
- package/dist/lib/Tax/index.d.ts +8 -8
- package/dist/lib/Tax/index.js +54 -54
- package/dist/lib/TransferRequest/index.d.ts +112 -112
- package/dist/lib/TransferRequest/index.js +794 -794
- package/dist/lib/Update/index.d.ts +10 -10
- package/dist/lib/Update/index.js +22 -22
- package/dist/lib/User/index.d.ts +35 -35
- package/dist/lib/User/index.js +248 -248
- 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 +43 -43
- package/dist/rules/GR/constants/data.d.ts +26 -26
- package/dist/rules/GR/constants/data.js +55 -55
- package/dist/rules/GR/constants/products.d.ts +8 -8
- package/dist/rules/GR/constants/products.js +234 -234
- package/dist/rules/GR/interfaces/cart.d.ts +84 -83
- package/dist/rules/GR/interfaces/cart.js +41 -40
- package/dist/rules/GR/interfaces/cart.js.map +1 -1
- package/dist/rules/GR/interfaces/data.d.ts +97 -97
- package/dist/rules/GR/interfaces/data.js +104 -104
- 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 +53 -53
- package/dist/rules/GR/utils/cart.js +637 -631
- 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 +25 -25
- package/dist/rules/GR/utils/expedition.d.ts +71 -71
- package/dist/rules/GR/utils/expedition.js +1542 -1542
- package/dist/rules/GR/utils/g2.d.ts +176 -176
- package/dist/rules/GR/utils/g2.js +845 -845
- package/dist/rules/GR/utils/invoices.d.ts +24 -24
- package/dist/rules/GR/utils/invoices.js +174 -171
- package/dist/rules/GR/utils/invoices.js.map +1 -1
- package/dist/rules/GR/utils/products.d.ts +104 -104
- package/dist/rules/GR/utils/products.js +984 -984
- package/dist/rules/GR/utils/upsells.d.ts +79 -79
- package/dist/rules/GR/utils/upsells.js +183 -183
- 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 +41 -41
- package/dist/services/database/DatabaseService.js +152 -152
- package/dist/services/database/FirebaseProvider.d.ts +17 -17
- package/dist/services/database/FirebaseProvider.js +218 -218
- package/dist/services/database/NotFirebaseProvider.d.ts +35 -35
- package/dist/services/database/NotFirebaseProvider.js +243 -243
- package/dist/services/g2/G2OrderSlip.d.ts +42 -42
- package/dist/services/g2/G2OrderSlip.js +210 -210
- package/dist/services/g2/utils.d.ts +9 -9
- package/dist/services/g2/utils.js +703 -695
- package/dist/services/g2/utils.js.map +1 -1
- package/dist/services/logs/index.d.ts +20 -20
- package/dist/services/logs/index.js +61 -61
- package/dist/services/products/BaseClass.d.ts +50 -50
- package/dist/services/products/BaseClass.js +64 -64
- package/dist/services/products/TCGService.d.ts +29 -29
- package/dist/services/products/TCGService.js +499 -499
- package/dist/services/products/utils.d.ts +9 -9
- package/dist/services/products/utils.js +94 -94
- package/dist/utils/algolia.d.ts +6 -6
- package/dist/utils/algolia.js +21 -21
- package/dist/utils/anonymisation.d.ts +30 -30
- package/dist/utils/anonymisation.js +250 -250
- package/dist/utils/array.d.ts +5 -5
- package/dist/utils/array.js +14 -14
- package/dist/utils/aws.d.ts +14 -14
- package/dist/utils/aws.js +126 -126
- package/dist/utils/booking.d.ts +22 -22
- package/dist/utils/booking.js +118 -118
- package/dist/utils/cart.d.ts +103 -102
- package/dist/utils/cart.js +690 -652
- package/dist/utils/cart.js.map +1 -1
- 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 +61 -61
- package/dist/utils/data.d.ts +31 -31
- package/dist/utils/data.js +293 -293
- 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 +46 -46
- package/dist/utils/discount.js +934 -934
- 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 +38 -38
- package/dist/utils/file.d.ts +38 -38
- package/dist/utils/file.js +200 -200
- package/dist/utils/firebase-admin.d.ts +2 -2
- package/dist/utils/firebase-admin.js +61 -61
- package/dist/utils/firebase.d.ts +41 -41
- package/dist/utils/firebase.js +131 -131
- package/dist/utils/import.d.ts +1 -1
- package/dist/utils/import.js +21 -21
- package/dist/utils/inventories.d.ts +49 -49
- package/dist/utils/inventories.js +392 -392
- package/dist/utils/locale.d.ts +15 -15
- package/dist/utils/locale.js +78 -78
- package/dist/utils/mailchimp.d.ts +58 -58
- package/dist/utils/mailchimp.js +495 -495
- package/dist/utils/mathUtils.d.ts +17 -17
- package/dist/utils/mathUtils.js +315 -315
- package/dist/utils/mongodb.d.ts +1 -1
- package/dist/utils/mongodb.js +22 -22
- package/dist/utils/object.d.ts +13 -13
- package/dist/utils/object.js +115 -115
- package/dist/utils/payment.d.ts +10 -10
- package/dist/utils/payment.js +23 -23
- package/dist/utils/products.d.ts +32 -32
- package/dist/utils/products.js +186 -186
- package/dist/utils/promiseToPurchase.d.ts +56 -56
- package/dist/utils/promiseToPurchase.js +195 -195
- package/dist/utils/prosprsearch.d.ts +26 -26
- package/dist/utils/prosprsearch.js +182 -182
- 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 +1302 -1302
- package/dist/utils/searchIndexes.d.ts +21 -21
- package/dist/utils/searchIndexes.js +210 -210
- 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 +191 -191
- package/dist/utils/tcgService.d.ts +2 -2
- package/dist/utils/tcgService.js +8 -8
- package/dist/utils/tools.d.ts +1 -1
- package/dist/utils/tools.js +9 -9
- package/dist/utils/transferRequests.d.ts +19 -19
- package/dist/utils/transferRequests.js +43 -43
- package/dist/utils/update.d.ts +7 -7
- package/dist/utils/update.js +125 -125
- 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 +110 -110
- package/publish.sh +143 -143
- package/readme.md +182 -182
|
@@ -1,846 +1,846 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
-
var t = {};
|
|
4
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getCustomIncentiveInfo = exports.getDiscountRulesWithCustomIncentive = exports.getCustomIncentiveAmount = exports.checkForCustomPriceEquivalent = exports.isEscompteSuppItem = exports.buildEscompteSuppCartItem = exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = exports.getItemEscompteSupp = exports.getCustomPriceList = exports.fetchCustomPriceList = exports.getG2CustomerTypeFromCode = exports.getG2DiscountFromCode = exports.updateCustomerWithG2Info = exports.checkIfCustomerExistsInG2 = exports.transformG2CustomerToCustomer = exports.getAllNewOrUpdatedCustomersFromG2 = exports.getG2Customer = exports.fetchProductFromG2WithSku = exports.getG2ProductExternalValues = void 0;
|
|
18
|
-
const uuid_1 = require("uuid");
|
|
19
|
-
const crypto_js_1 = __importDefault(require("crypto-js"));
|
|
20
|
-
const moment_1 = __importDefault(require("moment"));
|
|
21
|
-
const maxBy_1 = __importDefault(require("lodash/maxBy"));
|
|
22
|
-
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
23
|
-
const toNumber_1 = __importDefault(require("lodash/toNumber"));
|
|
24
|
-
const minBy_1 = __importDefault(require("lodash/minBy"));
|
|
25
|
-
const uniqBy_1 = __importDefault(require("lodash/uniqBy"));
|
|
26
|
-
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
27
|
-
const Customer_1 = require("../../../Interfaces/Customer");
|
|
28
|
-
const G2_1 = require("../../../Interfaces/G2");
|
|
29
|
-
const Cart_1 = require("../../../Interfaces/Cart");
|
|
30
|
-
const data_1 = require("../../../utils/data");
|
|
31
|
-
const object_1 = require("../../../utils/object");
|
|
32
|
-
const context_1 = require("../../../utils/context");
|
|
33
|
-
const locale_1 = require("../../../utils/locale");
|
|
34
|
-
const data_2 = require("../interfaces/data");
|
|
35
|
-
const flatten_1 = __importDefault(require("lodash/flatten"));
|
|
36
|
-
const groupBy_1 = __importDefault(require("lodash/groupBy"));
|
|
37
|
-
const string_1 = require("../../../utils/string");
|
|
38
|
-
const products_1 = require("../../../utils/products");
|
|
39
|
-
const __1 = require("../../..");
|
|
40
|
-
const anonymisation_1 = require("../../../utils/anonymisation");
|
|
41
|
-
const discount_1 = require("../../../utils/discount");
|
|
42
|
-
const cart_1 = require("../../../utils/cart");
|
|
43
|
-
const round_1 = __importDefault(require("lodash/round"));
|
|
44
|
-
const getG2ProductExternalValues = async (sku, g2Service, space, org) => {
|
|
45
|
-
var _a, _b, _c;
|
|
46
|
-
const g2Auth = g2Service.external_service_infos.api;
|
|
47
|
-
if (!!!g2Auth)
|
|
48
|
-
return;
|
|
49
|
-
let externalValues = undefined;
|
|
50
|
-
try {
|
|
51
|
-
const productG2 = await (0, exports.fetchProductFromG2WithSku)(sku, space, org);
|
|
52
|
-
if (!!productG2) {
|
|
53
|
-
const noArticle = (_a = productG2.article.noArticle) !== null && _a !== void 0 ? _a : undefined;
|
|
54
|
-
const catégorie1 = (_b = productG2.article['catégorie1']) !== null && _b !== void 0 ? _b : undefined;
|
|
55
|
-
const catégorie2 = (_c = productG2.article['catégorie2']) !== null && _c !== void 0 ? _c : undefined;
|
|
56
|
-
if (!!noArticle || !!catégorie1 || catégorie2) {
|
|
57
|
-
externalValues = { noArticle, catégorie1, catégorie2 };
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return externalValues;
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
console.log('error on fetching external_values for sku from G2: ', e.toString());
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
exports.getG2ProductExternalValues = getG2ProductExternalValues;
|
|
67
|
-
const fetchProductFromG2WithSku = async (sku, space, org, logError) => {
|
|
68
|
-
if (!!!space || !!!org)
|
|
69
|
-
return;
|
|
70
|
-
const api = __1.API_URL;
|
|
71
|
-
const token = (0, context_1.getSpaceToken)(space, org);
|
|
72
|
-
const callG2 = async (skuToUse) => {
|
|
73
|
-
try {
|
|
74
|
-
const g2ProductsQuery = await fetch(`${api}/services/g2/products/${skuToUse}`, {
|
|
75
|
-
method: 'GET',
|
|
76
|
-
headers: {
|
|
77
|
-
'Content-Type': 'application/json',
|
|
78
|
-
Authorization: `Bearer ${token}`
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
if (!!!g2ProductsQuery || g2ProductsQuery.status > 300)
|
|
82
|
-
throw await g2ProductsQuery.json();
|
|
83
|
-
const productG2 = await g2ProductsQuery.json();
|
|
84
|
-
if (!!productG2 && productG2[0])
|
|
85
|
-
return productG2[0];
|
|
86
|
-
else
|
|
87
|
-
throw 'Response has no value or array of products is empty.';
|
|
88
|
-
}
|
|
89
|
-
catch (e) {
|
|
90
|
-
if (!!logError)
|
|
91
|
-
console.log(`error on fetching prod from G2 for sku ${skuToUse}: `, e.toString());
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
let g2Prod = await callG2(sku);
|
|
96
|
-
if (!!!g2Prod && !sku.includes('-1')) {
|
|
97
|
-
g2Prod = await callG2(`${sku}-1`);
|
|
98
|
-
}
|
|
99
|
-
return g2Prod;
|
|
100
|
-
};
|
|
101
|
-
exports.fetchProductFromG2WithSku = fetchProductFromG2WithSku;
|
|
102
|
-
const getG2Customer = async (spaceToken, customerId) => {
|
|
103
|
-
let allG2Customers = [];
|
|
104
|
-
try {
|
|
105
|
-
const api = __1.API_URL;
|
|
106
|
-
const g2CustomersQuery = await fetch(`${api}/services/g2/customers/${customerId}`, {
|
|
107
|
-
method: 'GET',
|
|
108
|
-
headers: {
|
|
109
|
-
'Content-Type': 'application/json',
|
|
110
|
-
Authorization: `Bearer ${spaceToken}`
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
const G2RequestRes = await g2CustomersQuery.json();
|
|
114
|
-
if (!!g2CustomersQuery.status && g2CustomersQuery.status !== 200)
|
|
115
|
-
throw `Error - ${g2CustomersQuery.status}`;
|
|
116
|
-
if (!!!G2RequestRes || !!!G2RequestRes.length)
|
|
117
|
-
throw 'Error - no data';
|
|
118
|
-
allG2Customers = G2RequestRes;
|
|
119
|
-
}
|
|
120
|
-
catch (e) {
|
|
121
|
-
console.log('error on querying G2: ', e);
|
|
122
|
-
}
|
|
123
|
-
return allG2Customers;
|
|
124
|
-
};
|
|
125
|
-
exports.getG2Customer = getG2Customer;
|
|
126
|
-
const getAllNewOrUpdatedCustomersFromG2 = async (space, allG2Customers) => {
|
|
127
|
-
let allCurrentCustomers = [];
|
|
128
|
-
try {
|
|
129
|
-
const customerQuery = await space.customers.get();
|
|
130
|
-
if (!!customerQuery && !!customerQuery.length)
|
|
131
|
-
throw 'Error - no data';
|
|
132
|
-
allCurrentCustomers = customerQuery.map((customer) => customer.data());
|
|
133
|
-
}
|
|
134
|
-
catch (e) {
|
|
135
|
-
console.log('error on fetching customers: ', e.toString());
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
let allNewCustomers = [];
|
|
139
|
-
let allUpdatedCustomers = [];
|
|
140
|
-
for (let g2 of allG2Customers) {
|
|
141
|
-
const sameCustomerInDb = allCurrentCustomers.find((c) => !!c.id && c.id.toUpperCase() === g2.client.noClient.toUpperCase());
|
|
142
|
-
if (!!!sameCustomerInDb) {
|
|
143
|
-
allNewCustomers.push((0, exports.transformG2CustomerToCustomer)(g2));
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
if (!!(0, object_1.difference)(sameCustomerInDb, (0, exports.transformG2CustomerToCustomer)(g2))) {
|
|
147
|
-
allUpdatedCustomers.push((0, exports.transformG2CustomerToCustomer)(g2, sameCustomerInDb));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return { new: allNewCustomers, updated: allUpdatedCustomers };
|
|
151
|
-
};
|
|
152
|
-
exports.getAllNewOrUpdatedCustomersFromG2 = getAllNewOrUpdatedCustomersFromG2;
|
|
153
|
-
const transformG2CustomerToCustomer = (g2Customer, prevCustomer, allGroups) => {
|
|
154
|
-
const client = g2Customer.client;
|
|
155
|
-
const getCustomerNameInfo = (aName) => {
|
|
156
|
-
return {
|
|
157
|
-
customer_firstname: aName.replace(/[0-9]/g, '').replace(/\-\-/g, '').split(' ')[0].trim(),
|
|
158
|
-
customer_lastname: aName
|
|
159
|
-
.replace(/[0-9]/g, '')
|
|
160
|
-
.replace(/\-\-/g, '')
|
|
161
|
-
.trim()
|
|
162
|
-
.split(' ')
|
|
163
|
-
.map((aString, key) => (!!!key ? undefined : aString))
|
|
164
|
-
.filter((s) => !!s)
|
|
165
|
-
.join(' '),
|
|
166
|
-
customer_phone: aName.replace(/[^0-9]/g, '').trim()
|
|
167
|
-
};
|
|
168
|
-
};
|
|
169
|
-
const getOtherCustomerInfo = (propsStr) => {
|
|
170
|
-
const clientToCheck = client;
|
|
171
|
-
if (!!!clientToCheck[propsStr])
|
|
172
|
-
return {};
|
|
173
|
-
const email = !!clientToCheck[`${propsStr}Email`] ? clientToCheck[`${propsStr}Email`].toLowerCase() : undefined;
|
|
174
|
-
const fax = !!clientToCheck[`${propsStr}FAX`] ? (0, data_1.formatPhoneNumberDB)(clientToCheck[`${propsStr}FAX`]) : undefined;
|
|
175
|
-
return Object.assign(Object.assign({}, (!!email
|
|
176
|
-
? {
|
|
177
|
-
customer_email: email
|
|
178
|
-
}
|
|
179
|
-
: {
|
|
180
|
-
customer_communicationPreference: 'phone'
|
|
181
|
-
})), (!!fax
|
|
182
|
-
? {
|
|
183
|
-
customer_photocopier: fax
|
|
184
|
-
}
|
|
185
|
-
: {}));
|
|
186
|
-
};
|
|
187
|
-
const getPrevCustomerAddress = (expeditionInfo) => {
|
|
188
|
-
const defaultBilling = expeditionInfo.findIndex((ei) => ei.is_default && ei.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING));
|
|
189
|
-
if (defaultBilling !== -1) {
|
|
190
|
-
return [
|
|
191
|
-
...expeditionInfo.slice(0, defaultBilling),
|
|
192
|
-
Object.assign(Object.assign({}, expeditionInfo[defaultBilling]), { address: Object.assign(Object.assign({}, expeditionInfo[defaultBilling].address), getClientAddress()) }),
|
|
193
|
-
...expeditionInfo.slice(defaultBilling + 1)
|
|
194
|
-
];
|
|
195
|
-
}
|
|
196
|
-
return [
|
|
197
|
-
...expeditionInfo,
|
|
198
|
-
{
|
|
199
|
-
address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
|
|
200
|
-
is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
|
|
201
|
-
expedition_recipient_name: !!client.nom ? client.nom : '',
|
|
202
|
-
expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
|
|
203
|
-
}
|
|
204
|
-
];
|
|
205
|
-
};
|
|
206
|
-
const getClientAddress = () => {
|
|
207
|
-
return {
|
|
208
|
-
city: client.ville,
|
|
209
|
-
country: !!client.pays ? client.pays : 'CA',
|
|
210
|
-
line1: client.adresse || '',
|
|
211
|
-
postal_code: !!client.codePostal ? client.codePostal.toUpperCase() : '',
|
|
212
|
-
state: client.province || ''
|
|
213
|
-
};
|
|
214
|
-
};
|
|
215
|
-
const shouldCheckForCompany = () => {
|
|
216
|
-
return !!client.nom || !!client.téléphone || !!client.personneRessourceComptes;
|
|
217
|
-
};
|
|
218
|
-
const defaultProGroup = 'aspirant';
|
|
219
|
-
const getCustomerGroupFromTypeCode = (type) => {
|
|
220
|
-
if (!!!allGroups)
|
|
221
|
-
return defaultProGroup;
|
|
222
|
-
const sameGroup = allGroups.find((g) => g.external_slug === type);
|
|
223
|
-
return !!sameGroup ? sameGroup.slug : defaultProGroup;
|
|
224
|
-
};
|
|
225
|
-
let customerWithNewInfo = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultCustomer)()), (!!prevCustomer ? prevCustomer : { id: client.noClient.toUpperCase() })), (!!!prevCustomer
|
|
226
|
-
? {
|
|
227
|
-
hash: crypto_js_1.default.AES.encrypt(client.noClient.toUpperCase(), client.noClient.toUpperCase()).toString(),
|
|
228
|
-
type: Customer_1.CustomerTypeEnum.COMPANY
|
|
229
|
-
}
|
|
230
|
-
: {})), (!!client.limiteDeCrédit && Math.round((0, toNumber_1.default)(client.limiteDeCrédit))
|
|
231
|
-
? {
|
|
232
|
-
has_credit_line: true,
|
|
233
|
-
credit_line_max: client.limiteDeCrédit
|
|
234
|
-
}
|
|
235
|
-
: {})), (!!client.noReprésentant ? { represented_by: client.noReprésentant } : {})), { basic_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), (!!prevCustomer ? prevCustomer.basic_info : { customer_type: Customer_1.BasicCustomerTypeEnum.PRO })), (!!client.email ? { customer_email: client.email.split(';')[0].toLowerCase() } : {})), (!!client.fax ? { customer_photocopier: client.fax } : {})), (!!client.personneRessourceVentes ? getCustomerNameInfo(client.personneRessourceVentes) : {})), { customer_professionnal_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (!!prevCustomer ? prevCustomer.basic_info.customer_professionnal_info : {})), { professionnal_title: !!client.groupeDeClient && !!(0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient)
|
|
236
|
-
? getCustomerGroupFromTypeCode((0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient))
|
|
237
|
-
: defaultProGroup, proof_doc_value: client.noClient.toUpperCase() }), (!!client.noCondition ? { terms_code: client.noCondition } : {})), (!!client.groupeDeClient ? { external_customer_group: client.groupeDeClient } : {})), (!!client.codeFA ? { external_customer_code: client.codeFA } : {})), (!!client.classePrix ? { external_price_class: client.classePrix.toString() } : {})), (!!client.classement5 ? { external_customer_class: client.classement5 } : {})) }) }), ((!!prevCustomer && !!prevCustomer.company_info) || shouldCheckForCompany()
|
|
238
|
-
? {
|
|
239
|
-
company_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info ? prevCustomer.company_info : {})), { invoice_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info && !!prevCustomer.company_info.invoice_info
|
|
240
|
-
? prevCustomer.company_info.invoice_info
|
|
241
|
-
: {})), { legal_name: !!client.nom ? client.nom : '' }), (!!client.téléphone ? { phone: (0, data_1.formatPhoneNumberDB)(client.téléphone) } : {})) }), (!!client.personneRessourceComptes || !!client.personneRessourceAutres
|
|
242
|
-
? {
|
|
243
|
-
other_users: [
|
|
244
|
-
...(!!client.personneRessourceComptes
|
|
245
|
-
? [
|
|
246
|
-
Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceComptes)), getOtherCustomerInfo('personneRessourceComptes'))
|
|
247
|
-
]
|
|
248
|
-
: []),
|
|
249
|
-
...(!!client.personneRessourceAutres
|
|
250
|
-
? [
|
|
251
|
-
Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceAutres)), getOtherCustomerInfo('personneRessourceAutres'))
|
|
252
|
-
]
|
|
253
|
-
: [])
|
|
254
|
-
]
|
|
255
|
-
}
|
|
256
|
-
: {}))
|
|
257
|
-
}
|
|
258
|
-
: {})), { expedition_info: !!prevCustomer && prevCustomer.expedition_info && prevCustomer.expedition_info.length
|
|
259
|
-
? prevCustomer.expedition_info.length > 1
|
|
260
|
-
? getPrevCustomerAddress(prevCustomer.expedition_info)
|
|
261
|
-
: [
|
|
262
|
-
Object.assign(Object.assign({}, prevCustomer.expedition_info[0]), { address: Object.assign(Object.assign({}, (prevCustomer.expedition_info[0].address ? prevCustomer.expedition_info[0].address : {})), getClientAddress()), is_default: [
|
|
263
|
-
...(prevCustomer.expedition_info[0].is_default || []),
|
|
264
|
-
...(!!!prevCustomer.expedition_info[0].is_default ||
|
|
265
|
-
!!!prevCustomer.expedition_info[0].is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)
|
|
266
|
-
? [Customer_1.defaultExpeditionOptionsEnum.BILLING]
|
|
267
|
-
: [])
|
|
268
|
-
] })
|
|
269
|
-
]
|
|
270
|
-
: [
|
|
271
|
-
{
|
|
272
|
-
address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
|
|
273
|
-
is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
|
|
274
|
-
expedition_recipient_name: !!client.nom ? client.nom : '',
|
|
275
|
-
expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
|
|
276
|
-
}
|
|
277
|
-
] });
|
|
278
|
-
if (!!__1.isTestEnv &&
|
|
279
|
-
!!prevCustomer &&
|
|
280
|
-
!!prevCustomer.basic_info.customer_email &&
|
|
281
|
-
prevCustomer.basic_info.customer_email.includes('@dummy.com')) {
|
|
282
|
-
const allPropsToReset = anonymisation_1.g2Properties.map((p) => p.path);
|
|
283
|
-
for (let prop of allPropsToReset) {
|
|
284
|
-
const prevValue = (0, object_1.recursiveCheckObject)(prevCustomer, prop);
|
|
285
|
-
const currentValue = (0, object_1.recursiveCheckObject)(customerWithNewInfo, prop);
|
|
286
|
-
if (prevValue == currentValue)
|
|
287
|
-
continue;
|
|
288
|
-
customerWithNewInfo = (0, object_1.recursiveSetObject)(customerWithNewInfo, prevValue, prop);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
return customerWithNewInfo;
|
|
292
|
-
};
|
|
293
|
-
exports.transformG2CustomerToCustomer = transformG2CustomerToCustomer;
|
|
294
|
-
const checkIfCustomerExistsInG2 = async (customerID, space, org) => {
|
|
295
|
-
try {
|
|
296
|
-
const token = (0, context_1.getSpaceToken)(space, org);
|
|
297
|
-
if (!!!token)
|
|
298
|
-
throw new Error('no token found for space');
|
|
299
|
-
const api = __1.API_URL;
|
|
300
|
-
let response = await fetch(`${api}/services/g2/customers/${customerID}/exists`, {
|
|
301
|
-
method: 'GET',
|
|
302
|
-
headers: {
|
|
303
|
-
'Content-Type': 'application/json',
|
|
304
|
-
Authorization: `Bearer ${token}`
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
if (!!response.status && response.status !== 200)
|
|
308
|
-
throw `Error - ${response.status}`;
|
|
309
|
-
const { exists } = await response.json();
|
|
310
|
-
return exists;
|
|
311
|
-
}
|
|
312
|
-
catch (e) {
|
|
313
|
-
console.log('error on checking customer in G2: ', e.toString());
|
|
314
|
-
return false;
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
exports.checkIfCustomerExistsInG2 = checkIfCustomerExistsInG2;
|
|
318
|
-
const updateCustomerWithG2Info = async (customerID, space, org, addToDB = true, skipEmailCheck = false) => {
|
|
319
|
-
console.log('===============');
|
|
320
|
-
console.log('in v2 sdk updateCustomerWithG2Info');
|
|
321
|
-
try {
|
|
322
|
-
const token = (0, context_1.getSpaceToken)(space, org);
|
|
323
|
-
if (!!!token)
|
|
324
|
-
return;
|
|
325
|
-
const api = __1.API_URL;
|
|
326
|
-
console.log('----------------------');
|
|
327
|
-
let delay1 = (0, moment_1.default)();
|
|
328
|
-
let updatedCustomerQuery = await fetch(`${api}/services/g2/customers/${customerID}/convert`, {
|
|
329
|
-
method: 'GET',
|
|
330
|
-
headers: {
|
|
331
|
-
'Content-Type': 'application/json',
|
|
332
|
-
Authorization: `Bearer ${token}`
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
console.log('called api to update customer delay: ', (0, moment_1.default)().diff(delay1, 'seconds'));
|
|
336
|
-
if (!!updatedCustomerQuery.status && updatedCustomerQuery.status !== 200)
|
|
337
|
-
throw `Error - ${updatedCustomerQuery.status}`;
|
|
338
|
-
const G2RequestRes = await updatedCustomerQuery.json();
|
|
339
|
-
if (!!!G2RequestRes)
|
|
340
|
-
throw 'Error - no data';
|
|
341
|
-
let updatedCustomer = (0, anonymisation_1.hideG2CustomerInfoIfNeeded)(G2RequestRes.customer);
|
|
342
|
-
if (!!addToDB) {
|
|
343
|
-
console.log('----------------------');
|
|
344
|
-
let delay4 = (0, moment_1.default)();
|
|
345
|
-
await space.addCustomer(updatedCustomer, undefined, skipEmailCheck);
|
|
346
|
-
console.log('saving to database delay: ', (0, moment_1.default)().diff(delay4, 'seconds'));
|
|
347
|
-
}
|
|
348
|
-
console.log('=====================');
|
|
349
|
-
return updatedCustomer;
|
|
350
|
-
}
|
|
351
|
-
catch (e) {
|
|
352
|
-
console.log('error on updating customer info with G2: ', e.toString());
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
};
|
|
356
|
-
exports.updateCustomerWithG2Info = updateCustomerWithG2Info;
|
|
357
|
-
const getG2DiscountFromCode = (code) => {
|
|
358
|
-
const onlyNb = code.replace(/[^0-9]/gi, '');
|
|
359
|
-
return !!!onlyNb || !!isNaN(Number(onlyNb)) ? undefined : (0, toNumber_1.default)(onlyNb);
|
|
360
|
-
};
|
|
361
|
-
exports.getG2DiscountFromCode = getG2DiscountFromCode;
|
|
362
|
-
const getG2CustomerTypeFromCode = (code) => {
|
|
363
|
-
let parsedCode = code;
|
|
364
|
-
const possiblePrefixes = ['BASE', 'PAYS', 'RENC'];
|
|
365
|
-
for (let prefix of possiblePrefixes) {
|
|
366
|
-
parsedCode = parsedCode.replace(prefix, '');
|
|
367
|
-
}
|
|
368
|
-
parsedCode = parsedCode.replace(/[0-9]/gi, '');
|
|
369
|
-
const possibleTypes = ['AM', 'AL', 'AS', 'AMN'];
|
|
370
|
-
const checkWithPossibleTypes = (codeToCheck, removeFrom) => {
|
|
371
|
-
if (!!!possibleTypes.includes(codeToCheck)) {
|
|
372
|
-
if (codeToCheck.length === 1)
|
|
373
|
-
return '';
|
|
374
|
-
if (removeFrom == 'start') {
|
|
375
|
-
return checkWithPossibleTypes(codeToCheck.substring(1), removeFrom);
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
return checkWithPossibleTypes(codeToCheck.replace(/.$/, ''), removeFrom);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
return codeToCheck;
|
|
382
|
-
};
|
|
383
|
-
if (!!parsedCode) {
|
|
384
|
-
let removedValues = checkWithPossibleTypes(parsedCode, 'end');
|
|
385
|
-
if (!!!removedValues)
|
|
386
|
-
removedValues = checkWithPossibleTypes(parsedCode, 'start');
|
|
387
|
-
parsedCode = removedValues;
|
|
388
|
-
}
|
|
389
|
-
return parsedCode;
|
|
390
|
-
};
|
|
391
|
-
exports.getG2CustomerTypeFromCode = getG2CustomerTypeFromCode;
|
|
392
|
-
const fetchCustomPriceList = async (spaceToken, customerId, ignoreDashPriceList, onlyForProductSlugs) => {
|
|
393
|
-
let prices = [];
|
|
394
|
-
try {
|
|
395
|
-
const api = __1.API_URL;
|
|
396
|
-
const g2PriceListQuery = await fetch(`${api}/services/g2/customers/${customerId}/customPrices`, {
|
|
397
|
-
method: 'POST',
|
|
398
|
-
headers: {
|
|
399
|
-
'Content-Type': 'application/json',
|
|
400
|
-
Authorization: `Bearer ${spaceToken}`
|
|
401
|
-
},
|
|
402
|
-
body: JSON.stringify(Object.assign({ ignoreDashPriceList: !!ignoreDashPriceList }, (!!onlyForProductSlugs ? { onlyForProductSlugs } : {})))
|
|
403
|
-
});
|
|
404
|
-
prices = await g2PriceListQuery.json();
|
|
405
|
-
if (!!g2PriceListQuery.status && g2PriceListQuery.status !== 200)
|
|
406
|
-
throw `Error - ${g2PriceListQuery.status}`;
|
|
407
|
-
if (!!!prices || !!!prices.length)
|
|
408
|
-
throw 'Error - no data';
|
|
409
|
-
}
|
|
410
|
-
catch (e) {
|
|
411
|
-
console.log('error on fetching custom prices:', e.toString());
|
|
412
|
-
}
|
|
413
|
-
return prices;
|
|
414
|
-
};
|
|
415
|
-
exports.fetchCustomPriceList = fetchCustomPriceList;
|
|
416
|
-
const getCustomPriceList = async (space, idClient, ignoreDashPriceList, onlyForProductSlugs) => {
|
|
417
|
-
let priceList = [];
|
|
418
|
-
let escomptesClient = [];
|
|
419
|
-
let ententesClient = [];
|
|
420
|
-
let G2Auth = '';
|
|
421
|
-
let G2Url = '';
|
|
422
|
-
const G2Service = space.services({ field: 'external_service_name', value: 'G2' });
|
|
423
|
-
if (!!G2Service && !!G2Service.length) {
|
|
424
|
-
G2Auth = G2Service[0].external_service_infos.api;
|
|
425
|
-
G2Url = G2Service[0].external_service_infos.api_url;
|
|
426
|
-
}
|
|
427
|
-
if (!!!G2Auth || !!!G2Url)
|
|
428
|
-
throw `Error on fetching G2 API info from space`;
|
|
429
|
-
try {
|
|
430
|
-
const customerReq = await fetch(`${G2Url}/clients?noClient=${idClient}`, {
|
|
431
|
-
method: 'GET',
|
|
432
|
-
headers: {
|
|
433
|
-
Authorization: G2Auth
|
|
434
|
-
}
|
|
435
|
-
});
|
|
436
|
-
const customers = await customerReq.json();
|
|
437
|
-
if (customerReq.status !== 200) {
|
|
438
|
-
throw `Error on fetching customers from G2 API: ${customerReq.status}`;
|
|
439
|
-
}
|
|
440
|
-
const allG2Customers = customers;
|
|
441
|
-
const g2Customer = allG2Customers[0];
|
|
442
|
-
if (!!!g2Customer)
|
|
443
|
-
return priceList;
|
|
444
|
-
const today = (0, moment_1.default)();
|
|
445
|
-
const allCurrentEntentes = g2Customer.soumissions.filter((s) => !!s.soumission.actif &&
|
|
446
|
-
!!s.soumission.dateDébut &&
|
|
447
|
-
!!s.soumission.dateFin &&
|
|
448
|
-
today.isBetween((0, moment_1.default)(s.soumission.dateDébut), (0, moment_1.default)(s.soumission.dateFin)));
|
|
449
|
-
const mostRecent = (0, orderBy_1.default)(allCurrentEntentes, (e) => (0, moment_1.default)(e.soumission.dateDébut).unix(), 'desc');
|
|
450
|
-
if (!!mostRecent) {
|
|
451
|
-
ententesClient = mostRecent;
|
|
452
|
-
}
|
|
453
|
-
const { noClient, groupeDeClient, classePrix } = g2Customer.client;
|
|
454
|
-
const customerType = !!!groupeDeClient ? undefined : (0, exports.getG2CustomerTypeFromCode)(groupeDeClient);
|
|
455
|
-
try {
|
|
456
|
-
const escomptesNumClient = await fetch(`${G2Url}/escompteclient?code=${noClient}`, {
|
|
457
|
-
method: 'GET',
|
|
458
|
-
headers: {
|
|
459
|
-
Authorization: G2Auth
|
|
460
|
-
}
|
|
461
|
-
});
|
|
462
|
-
const numClientResults = await escomptesNumClient.json();
|
|
463
|
-
if (!!numClientResults.status && numClientResults.status !== 200) {
|
|
464
|
-
console.log(`Error on fetching escompteClients from G2 API with noClient ${noClient}: ${numClientResults.status}`);
|
|
465
|
-
}
|
|
466
|
-
else {
|
|
467
|
-
escomptesClient = [...escomptesClient, ...numClientResults.map((r) => r.escompteClient)];
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
catch (e) {
|
|
471
|
-
console.log('error on fetching escomptesClient from G2: ', e.toString());
|
|
472
|
-
}
|
|
473
|
-
try {
|
|
474
|
-
if (!!groupeDeClient && groupeDeClient !== noClient) {
|
|
475
|
-
const escomptesGroupeClient = await fetch(`${G2Url}/escompteclient?code=${groupeDeClient}`, {
|
|
476
|
-
method: 'GET',
|
|
477
|
-
headers: {
|
|
478
|
-
Authorization: G2Auth
|
|
479
|
-
}
|
|
480
|
-
});
|
|
481
|
-
const groupeClientResults = await escomptesGroupeClient.json();
|
|
482
|
-
if (!!groupeClientResults.statuts && groupeClientResults.status !== 200) {
|
|
483
|
-
console.log(`Error on fetching escompteClients from G2 API with groupeClient ${groupeDeClient}: ${groupeClientResults.status}`);
|
|
484
|
-
}
|
|
485
|
-
else {
|
|
486
|
-
const groupeClientEscomptes = groupeClientResults.map((r) => r.escompteClient);
|
|
487
|
-
const noDuplicates = groupeClientEscomptes.filter((es) => !!!es.code2 || !!!escomptesClient.some((e) => !!e.code2 && e.code2 === es.code2));
|
|
488
|
-
escomptesClient = [...escomptesClient, ...noDuplicates];
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
else {
|
|
492
|
-
console.log('ignoring groupeClient escomptes because id and groupeClient are same');
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
catch (e) {
|
|
496
|
-
console.log('error on fetching escomptesClient from G2: ', e.toString());
|
|
497
|
-
}
|
|
498
|
-
let allProducts = [];
|
|
499
|
-
try {
|
|
500
|
-
if (!!onlyForProductSlugs && !!onlyForProductSlugs.length) {
|
|
501
|
-
if (onlyForProductSlugs.length <= 10) {
|
|
502
|
-
allProducts = await space.indexedProducts.get({
|
|
503
|
-
query: [{ field: 'slug', operator: 'in', value: onlyForProductSlugs }]
|
|
504
|
-
});
|
|
505
|
-
}
|
|
506
|
-
else {
|
|
507
|
-
const batchResults = [];
|
|
508
|
-
for (let group of (0, chunk_1.default)(onlyForProductSlugs, 10)) {
|
|
509
|
-
let query = await space.indexedProducts.get({
|
|
510
|
-
query: [{ field: 'slug', operator: 'in', value: group }]
|
|
511
|
-
});
|
|
512
|
-
batchResults.push(query);
|
|
513
|
-
}
|
|
514
|
-
allProducts = (0, flatten_1.default)(batchResults);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
else {
|
|
518
|
-
allProducts = await space.indexedProducts.get({
|
|
519
|
-
query: [{ field: 'draft', operator: '!=', value: true }]
|
|
520
|
-
});
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
catch (e) {
|
|
524
|
-
console.log('error on fetching all products : ', e.toString());
|
|
525
|
-
}
|
|
526
|
-
if (!!!allProducts.length)
|
|
527
|
-
return priceList;
|
|
528
|
-
const allCustomerGroups = space.preferences.customers.groups() || [];
|
|
529
|
-
const customerGroupByPriceClass = !!classePrix
|
|
530
|
-
? allCustomerGroups.find((g) => g.external_price_list_slug == classePrix.toString())
|
|
531
|
-
: undefined;
|
|
532
|
-
for (let prod of allProducts) {
|
|
533
|
-
const data = prod.data();
|
|
534
|
-
if (!!!data || !!data.draft)
|
|
535
|
-
continue;
|
|
536
|
-
const type = !!data.attributes && data.attributes[data_2.AttributesIdEnumGR.TYPE];
|
|
537
|
-
for (let decli of data.declinations.filter((d) => !!!d.is_sample)) {
|
|
538
|
-
let isNetPrice = !!decli.external_values && decli.external_values['catégorie2'] === 'NET';
|
|
539
|
-
const sku = decli.sku;
|
|
540
|
-
let basePrice = (0, toNumber_1.default)(decli.regular_price.amount);
|
|
541
|
-
if (!!decli.prices_list && !!decli.prices_list.length && !!!ignoreDashPriceList) {
|
|
542
|
-
let priceListItemToUse = undefined;
|
|
543
|
-
const samePriceClassInPriceList = !!customerGroupByPriceClass
|
|
544
|
-
? decli.prices_list.find((pl) => pl.group_id == customerGroupByPriceClass.slug)
|
|
545
|
-
: undefined;
|
|
546
|
-
if (!!samePriceClassInPriceList && !isNaN((0, toNumber_1.default)(samePriceClassInPriceList.amount))) {
|
|
547
|
-
priceListItemToUse = samePriceClassInPriceList;
|
|
548
|
-
}
|
|
549
|
-
else if (!!groupeDeClient) {
|
|
550
|
-
const samePriceInPriceList = !!customerType
|
|
551
|
-
? decli.prices_list.find((p) => !!p.external_slug && p.external_slug === customerType)
|
|
552
|
-
: undefined;
|
|
553
|
-
const proPriceInPriceList = decli.prices_list.find((p) => p.group_id === 'aspirant');
|
|
554
|
-
if (!!samePriceInPriceList && !isNaN((0, toNumber_1.default)(samePriceInPriceList.amount))) {
|
|
555
|
-
priceListItemToUse = samePriceClassInPriceList;
|
|
556
|
-
}
|
|
557
|
-
else if (!!proPriceInPriceList && !isNaN((0, toNumber_1.default)(proPriceInPriceList.amount))) {
|
|
558
|
-
priceListItemToUse = proPriceInPriceList;
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
if (!!priceListItemToUse) {
|
|
562
|
-
basePrice = (0, toNumber_1.default)(priceListItemToUse.amount);
|
|
563
|
-
if (!!!isNetPrice) {
|
|
564
|
-
isNetPrice = !!priceListItemToUse.is_net_price;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
let comparePrices = [
|
|
569
|
-
Object.assign(Object.assign({ price: basePrice, type: G2_1.CustomPriceItemTypeEnum.REG }, (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1')
|
|
570
|
-
? { code1: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1') }
|
|
571
|
-
: {})), (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2')
|
|
572
|
-
? { code2: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2') }
|
|
573
|
-
: {}))
|
|
574
|
-
];
|
|
575
|
-
let foundEntenteForProduct = false;
|
|
576
|
-
if (!!ententesClient.length) {
|
|
577
|
-
for (let entente of ententesClient) {
|
|
578
|
-
if (!!foundEntenteForProduct)
|
|
579
|
-
break;
|
|
580
|
-
let sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle === sku);
|
|
581
|
-
if (!!!sameProd) {
|
|
582
|
-
sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle.includes(sku));
|
|
583
|
-
}
|
|
584
|
-
if (!!sameProd) {
|
|
585
|
-
const priceToSet = typeof sameProd.article.prixUnitaireNet === 'number'
|
|
586
|
-
? sameProd.article.prixUnitaireNet
|
|
587
|
-
: typeof sameProd.article.prixUnitaire === 'number'
|
|
588
|
-
? sameProd.article.prixUnitaire
|
|
589
|
-
: undefined;
|
|
590
|
-
if (typeof priceToSet === 'number') {
|
|
591
|
-
foundEntenteForProduct = true;
|
|
592
|
-
comparePrices.push(Object.assign(Object.assign({ price: (0, toNumber_1.default)(priceToSet), type: G2_1.CustomPriceItemTypeEnum.ENTENTE }, (!!decli.external_values ? { code2: decli.external_values['catégorie2'] } : {})), (!!sameProd.article.pourcEscompte
|
|
593
|
-
? Object.assign(Object.assign({}, (typeof sameProd.article.prixUnitaire === 'number'
|
|
594
|
-
? { reg: sameProd.article.prixUnitaire }
|
|
595
|
-
: {})), { percent: sameProd.article.pourcEscompte }) : {})));
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
if (!!escomptesClient.length) {
|
|
601
|
-
const findBestDeal = (escomptesToCheck) => {
|
|
602
|
-
const bestDeal = (0, maxBy_1.default)(escomptesToCheck, (escompte) => (0, toNumber_1.default)(escompte.pourcEscompte));
|
|
603
|
-
if (!!bestDeal) {
|
|
604
|
-
comparePrices.push(Object.assign({ price: basePrice * ((100 - (0, toNumber_1.default)(bestDeal.pourcEscompte)) / 100), type: G2_1.CustomPriceItemTypeEnum.ESCOMPTE, percent: (0, toNumber_1.default)(bestDeal.pourcEscompte), code1: bestDeal.code1 }, (!!bestDeal.code2 ? { code2: bestDeal.code2 } : {})));
|
|
605
|
-
}
|
|
606
|
-
};
|
|
607
|
-
if (!!!foundEntenteForProduct) {
|
|
608
|
-
if (!!isNetPrice) {
|
|
609
|
-
const sameCat1Escompte = escomptesClient.filter((e) => {
|
|
610
|
-
if (!!!e.code2)
|
|
611
|
-
return false;
|
|
612
|
-
return decli.external_values && e.code2 === decli.external_values['catégorie1'] && e.code2 == 'DALLE';
|
|
613
|
-
});
|
|
614
|
-
if (!!sameCat1Escompte && !!sameCat1Escompte.length) {
|
|
615
|
-
findBestDeal(sameCat1Escompte);
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
else {
|
|
619
|
-
const no2ndCode = escomptesClient.filter((e) => !!!e.code2);
|
|
620
|
-
if (!!no2ndCode.length) {
|
|
621
|
-
findBestDeal(no2ndCode);
|
|
622
|
-
}
|
|
623
|
-
let sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2 === sku);
|
|
624
|
-
if (!!!sameSkuEscompte.length) {
|
|
625
|
-
sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2.includes(sku));
|
|
626
|
-
}
|
|
627
|
-
if (!!sameSkuEscompte.length) {
|
|
628
|
-
findBestDeal(sameSkuEscompte);
|
|
629
|
-
}
|
|
630
|
-
if (!!!sameSkuEscompte.length) {
|
|
631
|
-
const sameBrandEscompte = escomptesClient.filter((e) => {
|
|
632
|
-
if (!!!e.code2)
|
|
633
|
-
return;
|
|
634
|
-
return (decli.external_values &&
|
|
635
|
-
(e.code2 === decli.external_values['catégorie2'] || e.code2 === decli.external_values['catégorie1']));
|
|
636
|
-
});
|
|
637
|
-
if (!!sameBrandEscompte) {
|
|
638
|
-
findBestDeal(sameBrandEscompte);
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
comparePrices = (0, uniqBy_1.default)(comparePrices, (p) => p.price);
|
|
645
|
-
const lowestPrice = (0, minBy_1.default)(comparePrices, (p) => p.price);
|
|
646
|
-
let appliedPrice = lowestPrice;
|
|
647
|
-
if (!!lowestPrice && lowestPrice.type == G2_1.CustomPriceItemTypeEnum.REG) {
|
|
648
|
-
const ententeFound = comparePrices.find((p) => p.type == G2_1.CustomPriceItemTypeEnum.ENTENTE);
|
|
649
|
-
if (!!ententeFound)
|
|
650
|
-
appliedPrice = Object.assign(Object.assign({}, ententeFound), { reg: ententeFound.price });
|
|
651
|
-
}
|
|
652
|
-
let customPriceItemToPush = undefined;
|
|
653
|
-
if (!!appliedPrice) {
|
|
654
|
-
customPriceItemToPush = Object.assign(Object.assign({ sku: sku, parent_slug: data.slug, name: `${!!decli.parent_name &&
|
|
655
|
-
!!!(0, locale_1.getPrincipalWord)(decli.name, space).trim().includes((0, locale_1.getPrincipalWord)(decli.parent_name).trim())
|
|
656
|
-
? (0, locale_1.getPrincipalWord)(decli.name, space) + ' - '
|
|
657
|
-
: ''}${(0, locale_1.getPrincipalWord)(decli.name, space)}`, reg: basePrice }, (!!type
|
|
658
|
-
? {
|
|
659
|
-
prod_type: type[0]
|
|
660
|
-
}
|
|
661
|
-
: {})), appliedPrice);
|
|
662
|
-
}
|
|
663
|
-
if (!!customPriceItemToPush) {
|
|
664
|
-
priceList.push(customPriceItemToPush);
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
return priceList;
|
|
669
|
-
}
|
|
670
|
-
catch (e) {
|
|
671
|
-
console.log('error on fetching customer from G2: ', e.toString());
|
|
672
|
-
return e.toString();
|
|
673
|
-
}
|
|
674
|
-
};
|
|
675
|
-
exports.getCustomPriceList = getCustomPriceList;
|
|
676
|
-
const getItemEscompteSupp = (customPriceList, item) => {
|
|
677
|
-
const code2InItem = (0, object_1.recursiveCheckObject)(item, `external_values.catégorie2`);
|
|
678
|
-
let code2InPriceList = undefined;
|
|
679
|
-
const customPriceItem = customPriceList.find((priceItem) => priceItem.sku === item.sku);
|
|
680
|
-
if (!!customPriceItem && !!customPriceItem.code2) {
|
|
681
|
-
code2InPriceList = customPriceItem.code2;
|
|
682
|
-
}
|
|
683
|
-
const code2ToCheck = code2InPriceList !== null && code2InPriceList !== void 0 ? code2InPriceList : code2InItem;
|
|
684
|
-
if (!!!code2ToCheck)
|
|
685
|
-
return;
|
|
686
|
-
let foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2ToCheck);
|
|
687
|
-
if (!!!foundEsc && !!code2InItem) {
|
|
688
|
-
foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2InItem);
|
|
689
|
-
}
|
|
690
|
-
return foundEsc;
|
|
691
|
-
};
|
|
692
|
-
exports.getItemEscompteSupp = getItemEscompteSupp;
|
|
693
|
-
const groupArrayOfItemsByItemAndCorrespondingEscompteItem = (items) => {
|
|
694
|
-
return (0, flatten_1.default)(Object.values((0, groupBy_1.default)(items, (item) => ((0, exports.isEscompteSuppItem)(item.sku) ? (0, string_1.splitFromFirstChar)('-', item.sku)[1] : item.sku))));
|
|
695
|
-
};
|
|
696
|
-
exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = groupArrayOfItemsByItemAndCorrespondingEscompteItem;
|
|
697
|
-
const buildEscompteSuppCartItem = (escompteItems, customPriceList, escompteSuppItem, item) => {
|
|
698
|
-
if (!!!escompteItems[0])
|
|
699
|
-
return;
|
|
700
|
-
const priceToUse = (0, products_1.getLowestPrice)(item);
|
|
701
|
-
const escompteDecli = escompteItems[0].data().declinations.find((decli) => decli.sku === escompteSuppItem.sku);
|
|
702
|
-
if (!!!escompteDecli)
|
|
703
|
-
return;
|
|
704
|
-
const sameInCustomPriceList = customPriceList.find((c) => c.sku === escompteDecli.sku);
|
|
705
|
-
if (!!sameInCustomPriceList &&
|
|
706
|
-
sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG &&
|
|
707
|
-
sameInCustomPriceList.price === 0)
|
|
708
|
-
return;
|
|
709
|
-
const escompteEquivalent = (0, exports.checkForCustomPriceEquivalent)(escompteDecli, customPriceList);
|
|
710
|
-
return Object.assign(Object.assign({}, escompteEquivalent), { is_upsell_of_sku: item.sku, is_temp_prod: true, price_override: true, qte_override: true, qte: item.qte * priceToUse.price.amount, sku: `${escompteEquivalent.sku}-${item.sku}`, regular_price: (0, products_1.getLowestPrice)(escompteEquivalent).price });
|
|
711
|
-
};
|
|
712
|
-
exports.buildEscompteSuppCartItem = buildEscompteSuppCartItem;
|
|
713
|
-
const isEscompteSuppItem = (itemSku) => {
|
|
714
|
-
return Object.values(G2_1.EscomptesDeclinationSkusEnum).some((subString) => itemSku.includes(subString));
|
|
715
|
-
};
|
|
716
|
-
exports.isEscompteSuppItem = isEscompteSuppItem;
|
|
717
|
-
const checkForCustomPriceEquivalent = (item, customPriceList, options = {}) => {
|
|
718
|
-
var _a;
|
|
719
|
-
const sameInCustomPriceList = customPriceList.find((i) => i.sku === item.sku);
|
|
720
|
-
if (!!!sameInCustomPriceList)
|
|
721
|
-
return item;
|
|
722
|
-
const hasOverriddenPrice = item.price_override;
|
|
723
|
-
if (!!hasOverriddenPrice && sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG)
|
|
724
|
-
return item;
|
|
725
|
-
const { regular_price, promo_price, discount_price, tier_pricing } = item, rest = __rest(item, ["regular_price", "promo_price", "discount_price", "tier_pricing"]);
|
|
726
|
-
const isReg = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG;
|
|
727
|
-
const isEntente = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.ENTENTE;
|
|
728
|
-
const isPA = !!sameInCustomPriceList.PA_percent;
|
|
729
|
-
const shouldUseCustomPriceForRegPrice = (!!isReg && !!!sameInCustomPriceList.percent) || (!!options.setNetPriceAsRegular && !!isEntente);
|
|
730
|
-
const currentDiscountPrice = item.discount_price || { currency: 'CAD' };
|
|
731
|
-
const currentPromoPrice = item.promo_price || { currency: 'CAD' };
|
|
732
|
-
const calculatedRegPrice = !!item.price_override
|
|
733
|
-
? regular_price.amount
|
|
734
|
-
: (!!isReg || !!isEntente) && sameInCustomPriceList.price == 0
|
|
735
|
-
? 0
|
|
736
|
-
: !!shouldUseCustomPriceForRegPrice
|
|
737
|
-
? sameInCustomPriceList.price
|
|
738
|
-
: sameInCustomPriceList.reg;
|
|
739
|
-
let updatedCartItem = Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { regular_price: Object.assign(Object.assign(Object.assign({}, regular_price), { amount: calculatedRegPrice }), (sameInCustomPriceList.type !== G2_1.CustomPriceItemTypeEnum.REG && !!!regular_price.price_type
|
|
740
|
-
? { price_type: sameInCustomPriceList.type }
|
|
741
|
-
: {})) }), (!!!hasOverriddenPrice
|
|
742
|
-
? Object.assign(Object.assign({}, (sameInCustomPriceList.percent || !!!isReg
|
|
743
|
-
? Object.assign({}, (!!sameInCustomPriceList.percent &&
|
|
744
|
-
[G2_1.CustomPriceItemTypeEnum.ESCOMPTE, G2_1.CustomPriceItemTypeEnum.NORMAL_ESCOMPTE].includes(sameInCustomPriceList.type)
|
|
745
|
-
? {
|
|
746
|
-
promo_price: Object.assign(Object.assign({}, currentPromoPrice), (!currentPromoPrice.overridden
|
|
747
|
-
? {
|
|
748
|
-
amount: sameInCustomPriceList.price,
|
|
749
|
-
price_type: sameInCustomPriceList.type
|
|
750
|
-
}
|
|
751
|
-
: {}))
|
|
752
|
-
}
|
|
753
|
-
:
|
|
754
|
-
!!!options.setNetPriceAsRegular
|
|
755
|
-
? Object.assign({ discount_price: Object.assign(Object.assign({}, currentDiscountPrice), (!currentDiscountPrice.overridden
|
|
756
|
-
? {
|
|
757
|
-
amount: sameInCustomPriceList.price,
|
|
758
|
-
price_type: sameInCustomPriceList.type
|
|
759
|
-
}
|
|
760
|
-
: {})) }, (!!currentPromoPrice.overridden ? { promo_price: currentPromoPrice } : {})) : {})) :
|
|
761
|
-
currentDiscountPrice.price_type === 'tierpricing' && !!!options.removeTierPricing
|
|
762
|
-
? {
|
|
763
|
-
discount_price: Object.assign(Object.assign({}, item.discount_price), { original_amount: !!isReg || !!!options.setNetPriceAsRegular ? null : sameInCustomPriceList.price })
|
|
764
|
-
}
|
|
765
|
-
: {})), (!!isPA
|
|
766
|
-
? {
|
|
767
|
-
promo_price: Object.assign(Object.assign({}, currentPromoPrice), { amount: (_a = sameInCustomPriceList.PA_price) !== null && _a !== void 0 ? _a : sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.PA_percent }),
|
|
768
|
-
discount_price: Object.assign(Object.assign({}, currentDiscountPrice), { amount: sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.percent })
|
|
769
|
-
}
|
|
770
|
-
: {})) : {})), (!!!options.removeTierPricing && !!tier_pricing
|
|
771
|
-
? {
|
|
772
|
-
tier_pricing
|
|
773
|
-
}
|
|
774
|
-
: {}));
|
|
775
|
-
const priceUsedForPromoCalculations = !!updatedCartItem.discount_price
|
|
776
|
-
? updatedCartItem.discount_price.amount
|
|
777
|
-
: updatedCartItem.regular_price.amount;
|
|
778
|
-
const initialPriceToCompare = !!currentDiscountPrice ? currentDiscountPrice.amount : item.regular_price.amount;
|
|
779
|
-
if (typeof currentPromoPrice.percent_applied == 'number' &&
|
|
780
|
-
!!currentPromoPrice.overridden &&
|
|
781
|
-
priceUsedForPromoCalculations != initialPriceToCompare) {
|
|
782
|
-
updatedCartItem = Object.assign(Object.assign({}, updatedCartItem), { promo_price: Object.assign(Object.assign({}, (updatedCartItem.promo_price || { currency: 'CAD' })), { amount: (0, round_1.default)((0, cart_1.calculateAmountForCustomPromo)(updatedCartItem, Cart_1.CustomPromoType.EXTRA_PROMO, currentPromoPrice.percent_applied), priceUsedForPromoCalculations.toString().split('.').length) }) });
|
|
783
|
-
}
|
|
784
|
-
return updatedCartItem;
|
|
785
|
-
};
|
|
786
|
-
exports.checkForCustomPriceEquivalent = checkForCustomPriceEquivalent;
|
|
787
|
-
const getCustomIncentiveAmount = (customPriceList) => {
|
|
788
|
-
if (!!!customPriceList)
|
|
789
|
-
return;
|
|
790
|
-
const ententeSku = 'INCITATIF';
|
|
791
|
-
let amount = 0;
|
|
792
|
-
const entente = customPriceList.find((priceItem) => priceItem.sku === ententeSku);
|
|
793
|
-
if (!!!entente || !!!entente.price || entente.type == G2_1.CustomPriceItemTypeEnum.REG)
|
|
794
|
-
return;
|
|
795
|
-
amount = entente.price * -100;
|
|
796
|
-
return amount;
|
|
797
|
-
};
|
|
798
|
-
exports.getCustomIncentiveAmount = getCustomIncentiveAmount;
|
|
799
|
-
const getDiscountRulesWithCustomIncentive = (incentiveAmount, discountRules) => {
|
|
800
|
-
let hasBeenUpdated = false;
|
|
801
|
-
const updatedDiscountRules = discountRules.map((rule) => {
|
|
802
|
-
const promoType = (0, discount_1.getCartPromoType)(rule);
|
|
803
|
-
if (promoType === Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES) {
|
|
804
|
-
hasBeenUpdated = true;
|
|
805
|
-
const updatedRule = rule;
|
|
806
|
-
updatedRule.result.action_value = incentiveAmount;
|
|
807
|
-
updatedRule.overridden = true;
|
|
808
|
-
return updatedRule;
|
|
809
|
-
}
|
|
810
|
-
else {
|
|
811
|
-
return rule;
|
|
812
|
-
}
|
|
813
|
-
});
|
|
814
|
-
if (!hasBeenUpdated)
|
|
815
|
-
return;
|
|
816
|
-
return updatedDiscountRules;
|
|
817
|
-
};
|
|
818
|
-
exports.getDiscountRulesWithCustomIncentive = getDiscountRulesWithCustomIncentive;
|
|
819
|
-
const getCustomIncentiveInfo = (customPriceList, discountRules, defaultIncentiveAmount) => {
|
|
820
|
-
let discountRulesWithCustomIncentive;
|
|
821
|
-
let customIncentiveAmount = (0, exports.getCustomIncentiveAmount)(customPriceList);
|
|
822
|
-
const incentiveDiscountRule = (0, discount_1.getPaymentIncentiveDiscount)(discountRules);
|
|
823
|
-
if (!!!customIncentiveAmount) {
|
|
824
|
-
if (!!incentiveDiscountRule && !!incentiveDiscountRule.overridden) {
|
|
825
|
-
return {
|
|
826
|
-
amount: defaultIncentiveAmount || 0,
|
|
827
|
-
updatedDiscountRules: discountRules.map((dr) => {
|
|
828
|
-
if (dr.id !== incentiveDiscountRule.id)
|
|
829
|
-
return dr;
|
|
830
|
-
return Object.assign(Object.assign(Object.assign({}, dr), (defaultIncentiveAmount ? { result: Object.assign(Object.assign({}, dr.result), { action_value: defaultIncentiveAmount }) } : {})), { overridden: false });
|
|
831
|
-
}),
|
|
832
|
-
reset: true
|
|
833
|
-
};
|
|
834
|
-
}
|
|
835
|
-
return;
|
|
836
|
-
}
|
|
837
|
-
discountRulesWithCustomIncentive = (0, exports.getDiscountRulesWithCustomIncentive)(customIncentiveAmount, discountRules);
|
|
838
|
-
if (!!!discountRulesWithCustomIncentive)
|
|
839
|
-
return;
|
|
840
|
-
return {
|
|
841
|
-
amount: customIncentiveAmount,
|
|
842
|
-
updatedDiscountRules: discountRulesWithCustomIncentive
|
|
843
|
-
};
|
|
844
|
-
};
|
|
845
|
-
exports.getCustomIncentiveInfo = getCustomIncentiveInfo;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.getCustomIncentiveInfo = exports.getDiscountRulesWithCustomIncentive = exports.getCustomIncentiveAmount = exports.checkForCustomPriceEquivalent = exports.isEscompteSuppItem = exports.buildEscompteSuppCartItem = exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = exports.getItemEscompteSupp = exports.getCustomPriceList = exports.fetchCustomPriceList = exports.getG2CustomerTypeFromCode = exports.getG2DiscountFromCode = exports.updateCustomerWithG2Info = exports.checkIfCustomerExistsInG2 = exports.transformG2CustomerToCustomer = exports.getAllNewOrUpdatedCustomersFromG2 = exports.getG2Customer = exports.fetchProductFromG2WithSku = exports.getG2ProductExternalValues = void 0;
|
|
18
|
+
const uuid_1 = require("uuid");
|
|
19
|
+
const crypto_js_1 = __importDefault(require("crypto-js"));
|
|
20
|
+
const moment_1 = __importDefault(require("moment"));
|
|
21
|
+
const maxBy_1 = __importDefault(require("lodash/maxBy"));
|
|
22
|
+
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
23
|
+
const toNumber_1 = __importDefault(require("lodash/toNumber"));
|
|
24
|
+
const minBy_1 = __importDefault(require("lodash/minBy"));
|
|
25
|
+
const uniqBy_1 = __importDefault(require("lodash/uniqBy"));
|
|
26
|
+
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
27
|
+
const Customer_1 = require("../../../Interfaces/Customer");
|
|
28
|
+
const G2_1 = require("../../../Interfaces/G2");
|
|
29
|
+
const Cart_1 = require("../../../Interfaces/Cart");
|
|
30
|
+
const data_1 = require("../../../utils/data");
|
|
31
|
+
const object_1 = require("../../../utils/object");
|
|
32
|
+
const context_1 = require("../../../utils/context");
|
|
33
|
+
const locale_1 = require("../../../utils/locale");
|
|
34
|
+
const data_2 = require("../interfaces/data");
|
|
35
|
+
const flatten_1 = __importDefault(require("lodash/flatten"));
|
|
36
|
+
const groupBy_1 = __importDefault(require("lodash/groupBy"));
|
|
37
|
+
const string_1 = require("../../../utils/string");
|
|
38
|
+
const products_1 = require("../../../utils/products");
|
|
39
|
+
const __1 = require("../../..");
|
|
40
|
+
const anonymisation_1 = require("../../../utils/anonymisation");
|
|
41
|
+
const discount_1 = require("../../../utils/discount");
|
|
42
|
+
const cart_1 = require("../../../utils/cart");
|
|
43
|
+
const round_1 = __importDefault(require("lodash/round"));
|
|
44
|
+
const getG2ProductExternalValues = async (sku, g2Service, space, org) => {
|
|
45
|
+
var _a, _b, _c;
|
|
46
|
+
const g2Auth = g2Service.external_service_infos.api;
|
|
47
|
+
if (!!!g2Auth)
|
|
48
|
+
return;
|
|
49
|
+
let externalValues = undefined;
|
|
50
|
+
try {
|
|
51
|
+
const productG2 = await (0, exports.fetchProductFromG2WithSku)(sku, space, org);
|
|
52
|
+
if (!!productG2) {
|
|
53
|
+
const noArticle = (_a = productG2.article.noArticle) !== null && _a !== void 0 ? _a : undefined;
|
|
54
|
+
const catégorie1 = (_b = productG2.article['catégorie1']) !== null && _b !== void 0 ? _b : undefined;
|
|
55
|
+
const catégorie2 = (_c = productG2.article['catégorie2']) !== null && _c !== void 0 ? _c : undefined;
|
|
56
|
+
if (!!noArticle || !!catégorie1 || catégorie2) {
|
|
57
|
+
externalValues = { noArticle, catégorie1, catégorie2 };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return externalValues;
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.log('error on fetching external_values for sku from G2: ', e.toString());
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.getG2ProductExternalValues = getG2ProductExternalValues;
|
|
67
|
+
const fetchProductFromG2WithSku = async (sku, space, org, logError) => {
|
|
68
|
+
if (!!!space || !!!org)
|
|
69
|
+
return;
|
|
70
|
+
const api = __1.API_URL;
|
|
71
|
+
const token = (0, context_1.getSpaceToken)(space, org);
|
|
72
|
+
const callG2 = async (skuToUse) => {
|
|
73
|
+
try {
|
|
74
|
+
const g2ProductsQuery = await fetch(`${api}/services/g2/products/${skuToUse}`, {
|
|
75
|
+
method: 'GET',
|
|
76
|
+
headers: {
|
|
77
|
+
'Content-Type': 'application/json',
|
|
78
|
+
Authorization: `Bearer ${token}`
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
if (!!!g2ProductsQuery || g2ProductsQuery.status > 300)
|
|
82
|
+
throw await g2ProductsQuery.json();
|
|
83
|
+
const productG2 = await g2ProductsQuery.json();
|
|
84
|
+
if (!!productG2 && productG2[0])
|
|
85
|
+
return productG2[0];
|
|
86
|
+
else
|
|
87
|
+
throw 'Response has no value or array of products is empty.';
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
if (!!logError)
|
|
91
|
+
console.log(`error on fetching prod from G2 for sku ${skuToUse}: `, e.toString());
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
let g2Prod = await callG2(sku);
|
|
96
|
+
if (!!!g2Prod && !sku.includes('-1')) {
|
|
97
|
+
g2Prod = await callG2(`${sku}-1`);
|
|
98
|
+
}
|
|
99
|
+
return g2Prod;
|
|
100
|
+
};
|
|
101
|
+
exports.fetchProductFromG2WithSku = fetchProductFromG2WithSku;
|
|
102
|
+
const getG2Customer = async (spaceToken, customerId) => {
|
|
103
|
+
let allG2Customers = [];
|
|
104
|
+
try {
|
|
105
|
+
const api = __1.API_URL;
|
|
106
|
+
const g2CustomersQuery = await fetch(`${api}/services/g2/customers/${customerId}`, {
|
|
107
|
+
method: 'GET',
|
|
108
|
+
headers: {
|
|
109
|
+
'Content-Type': 'application/json',
|
|
110
|
+
Authorization: `Bearer ${spaceToken}`
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
const G2RequestRes = await g2CustomersQuery.json();
|
|
114
|
+
if (!!g2CustomersQuery.status && g2CustomersQuery.status !== 200)
|
|
115
|
+
throw `Error - ${g2CustomersQuery.status}`;
|
|
116
|
+
if (!!!G2RequestRes || !!!G2RequestRes.length)
|
|
117
|
+
throw 'Error - no data';
|
|
118
|
+
allG2Customers = G2RequestRes;
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
console.log('error on querying G2: ', e);
|
|
122
|
+
}
|
|
123
|
+
return allG2Customers;
|
|
124
|
+
};
|
|
125
|
+
exports.getG2Customer = getG2Customer;
|
|
126
|
+
const getAllNewOrUpdatedCustomersFromG2 = async (space, allG2Customers) => {
|
|
127
|
+
let allCurrentCustomers = [];
|
|
128
|
+
try {
|
|
129
|
+
const customerQuery = await space.customers.get();
|
|
130
|
+
if (!!customerQuery && !!customerQuery.length)
|
|
131
|
+
throw 'Error - no data';
|
|
132
|
+
allCurrentCustomers = customerQuery.map((customer) => customer.data());
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
console.log('error on fetching customers: ', e.toString());
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
let allNewCustomers = [];
|
|
139
|
+
let allUpdatedCustomers = [];
|
|
140
|
+
for (let g2 of allG2Customers) {
|
|
141
|
+
const sameCustomerInDb = allCurrentCustomers.find((c) => !!c.id && c.id.toUpperCase() === g2.client.noClient.toUpperCase());
|
|
142
|
+
if (!!!sameCustomerInDb) {
|
|
143
|
+
allNewCustomers.push((0, exports.transformG2CustomerToCustomer)(g2));
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (!!(0, object_1.difference)(sameCustomerInDb, (0, exports.transformG2CustomerToCustomer)(g2))) {
|
|
147
|
+
allUpdatedCustomers.push((0, exports.transformG2CustomerToCustomer)(g2, sameCustomerInDb));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return { new: allNewCustomers, updated: allUpdatedCustomers };
|
|
151
|
+
};
|
|
152
|
+
exports.getAllNewOrUpdatedCustomersFromG2 = getAllNewOrUpdatedCustomersFromG2;
|
|
153
|
+
const transformG2CustomerToCustomer = (g2Customer, prevCustomer, allGroups) => {
|
|
154
|
+
const client = g2Customer.client;
|
|
155
|
+
const getCustomerNameInfo = (aName) => {
|
|
156
|
+
return {
|
|
157
|
+
customer_firstname: aName.replace(/[0-9]/g, '').replace(/\-\-/g, '').split(' ')[0].trim(),
|
|
158
|
+
customer_lastname: aName
|
|
159
|
+
.replace(/[0-9]/g, '')
|
|
160
|
+
.replace(/\-\-/g, '')
|
|
161
|
+
.trim()
|
|
162
|
+
.split(' ')
|
|
163
|
+
.map((aString, key) => (!!!key ? undefined : aString))
|
|
164
|
+
.filter((s) => !!s)
|
|
165
|
+
.join(' '),
|
|
166
|
+
customer_phone: aName.replace(/[^0-9]/g, '').trim()
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
const getOtherCustomerInfo = (propsStr) => {
|
|
170
|
+
const clientToCheck = client;
|
|
171
|
+
if (!!!clientToCheck[propsStr])
|
|
172
|
+
return {};
|
|
173
|
+
const email = !!clientToCheck[`${propsStr}Email`] ? clientToCheck[`${propsStr}Email`].toLowerCase() : undefined;
|
|
174
|
+
const fax = !!clientToCheck[`${propsStr}FAX`] ? (0, data_1.formatPhoneNumberDB)(clientToCheck[`${propsStr}FAX`]) : undefined;
|
|
175
|
+
return Object.assign(Object.assign({}, (!!email
|
|
176
|
+
? {
|
|
177
|
+
customer_email: email
|
|
178
|
+
}
|
|
179
|
+
: {
|
|
180
|
+
customer_communicationPreference: 'phone'
|
|
181
|
+
})), (!!fax
|
|
182
|
+
? {
|
|
183
|
+
customer_photocopier: fax
|
|
184
|
+
}
|
|
185
|
+
: {}));
|
|
186
|
+
};
|
|
187
|
+
const getPrevCustomerAddress = (expeditionInfo) => {
|
|
188
|
+
const defaultBilling = expeditionInfo.findIndex((ei) => ei.is_default && ei.is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING));
|
|
189
|
+
if (defaultBilling !== -1) {
|
|
190
|
+
return [
|
|
191
|
+
...expeditionInfo.slice(0, defaultBilling),
|
|
192
|
+
Object.assign(Object.assign({}, expeditionInfo[defaultBilling]), { address: Object.assign(Object.assign({}, expeditionInfo[defaultBilling].address), getClientAddress()) }),
|
|
193
|
+
...expeditionInfo.slice(defaultBilling + 1)
|
|
194
|
+
];
|
|
195
|
+
}
|
|
196
|
+
return [
|
|
197
|
+
...expeditionInfo,
|
|
198
|
+
{
|
|
199
|
+
address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
|
|
200
|
+
is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
|
|
201
|
+
expedition_recipient_name: !!client.nom ? client.nom : '',
|
|
202
|
+
expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
|
|
203
|
+
}
|
|
204
|
+
];
|
|
205
|
+
};
|
|
206
|
+
const getClientAddress = () => {
|
|
207
|
+
return {
|
|
208
|
+
city: client.ville,
|
|
209
|
+
country: !!client.pays ? client.pays : 'CA',
|
|
210
|
+
line1: client.adresse || '',
|
|
211
|
+
postal_code: !!client.codePostal ? client.codePostal.toUpperCase() : '',
|
|
212
|
+
state: client.province || ''
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
const shouldCheckForCompany = () => {
|
|
216
|
+
return !!client.nom || !!client.téléphone || !!client.personneRessourceComptes;
|
|
217
|
+
};
|
|
218
|
+
const defaultProGroup = 'aspirant';
|
|
219
|
+
const getCustomerGroupFromTypeCode = (type) => {
|
|
220
|
+
if (!!!allGroups)
|
|
221
|
+
return defaultProGroup;
|
|
222
|
+
const sameGroup = allGroups.find((g) => g.external_slug === type);
|
|
223
|
+
return !!sameGroup ? sameGroup.slug : defaultProGroup;
|
|
224
|
+
};
|
|
225
|
+
let customerWithNewInfo = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultCustomer)()), (!!prevCustomer ? prevCustomer : { id: client.noClient.toUpperCase() })), (!!!prevCustomer
|
|
226
|
+
? {
|
|
227
|
+
hash: crypto_js_1.default.AES.encrypt(client.noClient.toUpperCase(), client.noClient.toUpperCase()).toString(),
|
|
228
|
+
type: Customer_1.CustomerTypeEnum.COMPANY
|
|
229
|
+
}
|
|
230
|
+
: {})), (!!client.limiteDeCrédit && Math.round((0, toNumber_1.default)(client.limiteDeCrédit))
|
|
231
|
+
? {
|
|
232
|
+
has_credit_line: true,
|
|
233
|
+
credit_line_max: client.limiteDeCrédit
|
|
234
|
+
}
|
|
235
|
+
: {})), (!!client.noReprésentant ? { represented_by: client.noReprésentant } : {})), { basic_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), (!!prevCustomer ? prevCustomer.basic_info : { customer_type: Customer_1.BasicCustomerTypeEnum.PRO })), (!!client.email ? { customer_email: client.email.split(';')[0].toLowerCase() } : {})), (!!client.fax ? { customer_photocopier: client.fax } : {})), (!!client.personneRessourceVentes ? getCustomerNameInfo(client.personneRessourceVentes) : {})), { customer_professionnal_info: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (!!prevCustomer ? prevCustomer.basic_info.customer_professionnal_info : {})), { professionnal_title: !!client.groupeDeClient && !!(0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient)
|
|
236
|
+
? getCustomerGroupFromTypeCode((0, exports.getG2CustomerTypeFromCode)(client.groupeDeClient))
|
|
237
|
+
: defaultProGroup, proof_doc_value: client.noClient.toUpperCase() }), (!!client.noCondition ? { terms_code: client.noCondition } : {})), (!!client.groupeDeClient ? { external_customer_group: client.groupeDeClient } : {})), (!!client.codeFA ? { external_customer_code: client.codeFA } : {})), (!!client.classePrix ? { external_price_class: client.classePrix.toString() } : {})), (!!client.classement5 ? { external_customer_class: client.classement5 } : {})) }) }), ((!!prevCustomer && !!prevCustomer.company_info) || shouldCheckForCompany()
|
|
238
|
+
? {
|
|
239
|
+
company_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info ? prevCustomer.company_info : {})), { invoice_info: Object.assign(Object.assign(Object.assign({}, (!!prevCustomer && !!prevCustomer.company_info && !!prevCustomer.company_info.invoice_info
|
|
240
|
+
? prevCustomer.company_info.invoice_info
|
|
241
|
+
: {})), { legal_name: !!client.nom ? client.nom : '' }), (!!client.téléphone ? { phone: (0, data_1.formatPhoneNumberDB)(client.téléphone) } : {})) }), (!!client.personneRessourceComptes || !!client.personneRessourceAutres
|
|
242
|
+
? {
|
|
243
|
+
other_users: [
|
|
244
|
+
...(!!client.personneRessourceComptes
|
|
245
|
+
? [
|
|
246
|
+
Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceComptes)), getOtherCustomerInfo('personneRessourceComptes'))
|
|
247
|
+
]
|
|
248
|
+
: []),
|
|
249
|
+
...(!!client.personneRessourceAutres
|
|
250
|
+
? [
|
|
251
|
+
Object.assign(Object.assign(Object.assign({}, (0, Customer_1.getDefaultBasicCustomer)()), getCustomerNameInfo(client.personneRessourceAutres)), getOtherCustomerInfo('personneRessourceAutres'))
|
|
252
|
+
]
|
|
253
|
+
: [])
|
|
254
|
+
]
|
|
255
|
+
}
|
|
256
|
+
: {}))
|
|
257
|
+
}
|
|
258
|
+
: {})), { expedition_info: !!prevCustomer && prevCustomer.expedition_info && prevCustomer.expedition_info.length
|
|
259
|
+
? prevCustomer.expedition_info.length > 1
|
|
260
|
+
? getPrevCustomerAddress(prevCustomer.expedition_info)
|
|
261
|
+
: [
|
|
262
|
+
Object.assign(Object.assign({}, prevCustomer.expedition_info[0]), { address: Object.assign(Object.assign({}, (prevCustomer.expedition_info[0].address ? prevCustomer.expedition_info[0].address : {})), getClientAddress()), is_default: [
|
|
263
|
+
...(prevCustomer.expedition_info[0].is_default || []),
|
|
264
|
+
...(!!!prevCustomer.expedition_info[0].is_default ||
|
|
265
|
+
!!!prevCustomer.expedition_info[0].is_default.includes(Customer_1.defaultExpeditionOptionsEnum.BILLING)
|
|
266
|
+
? [Customer_1.defaultExpeditionOptionsEnum.BILLING]
|
|
267
|
+
: [])
|
|
268
|
+
] })
|
|
269
|
+
]
|
|
270
|
+
: [
|
|
271
|
+
{
|
|
272
|
+
address: Object.assign(Object.assign({}, getClientAddress()), { id: (0, uuid_1.v4)() }),
|
|
273
|
+
is_default: [Customer_1.defaultExpeditionOptionsEnum.BILLING],
|
|
274
|
+
expedition_recipient_name: !!client.nom ? client.nom : '',
|
|
275
|
+
expedition_recipient_phone: !!client.téléphone ? (0, data_1.formatPhoneNumberDB)(client.téléphone) : ''
|
|
276
|
+
}
|
|
277
|
+
] });
|
|
278
|
+
if (!!__1.isTestEnv &&
|
|
279
|
+
!!prevCustomer &&
|
|
280
|
+
!!prevCustomer.basic_info.customer_email &&
|
|
281
|
+
prevCustomer.basic_info.customer_email.includes('@dummy.com')) {
|
|
282
|
+
const allPropsToReset = anonymisation_1.g2Properties.map((p) => p.path);
|
|
283
|
+
for (let prop of allPropsToReset) {
|
|
284
|
+
const prevValue = (0, object_1.recursiveCheckObject)(prevCustomer, prop);
|
|
285
|
+
const currentValue = (0, object_1.recursiveCheckObject)(customerWithNewInfo, prop);
|
|
286
|
+
if (prevValue == currentValue)
|
|
287
|
+
continue;
|
|
288
|
+
customerWithNewInfo = (0, object_1.recursiveSetObject)(customerWithNewInfo, prevValue, prop);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return customerWithNewInfo;
|
|
292
|
+
};
|
|
293
|
+
exports.transformG2CustomerToCustomer = transformG2CustomerToCustomer;
|
|
294
|
+
const checkIfCustomerExistsInG2 = async (customerID, space, org) => {
|
|
295
|
+
try {
|
|
296
|
+
const token = (0, context_1.getSpaceToken)(space, org);
|
|
297
|
+
if (!!!token)
|
|
298
|
+
throw new Error('no token found for space');
|
|
299
|
+
const api = __1.API_URL;
|
|
300
|
+
let response = await fetch(`${api}/services/g2/customers/${customerID}/exists`, {
|
|
301
|
+
method: 'GET',
|
|
302
|
+
headers: {
|
|
303
|
+
'Content-Type': 'application/json',
|
|
304
|
+
Authorization: `Bearer ${token}`
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
if (!!response.status && response.status !== 200)
|
|
308
|
+
throw `Error - ${response.status}`;
|
|
309
|
+
const { exists } = await response.json();
|
|
310
|
+
return exists;
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
console.log('error on checking customer in G2: ', e.toString());
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
exports.checkIfCustomerExistsInG2 = checkIfCustomerExistsInG2;
|
|
318
|
+
const updateCustomerWithG2Info = async (customerID, space, org, addToDB = true, skipEmailCheck = false) => {
|
|
319
|
+
console.log('===============');
|
|
320
|
+
console.log('in v2 sdk updateCustomerWithG2Info');
|
|
321
|
+
try {
|
|
322
|
+
const token = (0, context_1.getSpaceToken)(space, org);
|
|
323
|
+
if (!!!token)
|
|
324
|
+
return;
|
|
325
|
+
const api = __1.API_URL;
|
|
326
|
+
console.log('----------------------');
|
|
327
|
+
let delay1 = (0, moment_1.default)();
|
|
328
|
+
let updatedCustomerQuery = await fetch(`${api}/services/g2/customers/${customerID}/convert`, {
|
|
329
|
+
method: 'GET',
|
|
330
|
+
headers: {
|
|
331
|
+
'Content-Type': 'application/json',
|
|
332
|
+
Authorization: `Bearer ${token}`
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
console.log('called api to update customer delay: ', (0, moment_1.default)().diff(delay1, 'seconds'));
|
|
336
|
+
if (!!updatedCustomerQuery.status && updatedCustomerQuery.status !== 200)
|
|
337
|
+
throw `Error - ${updatedCustomerQuery.status}`;
|
|
338
|
+
const G2RequestRes = await updatedCustomerQuery.json();
|
|
339
|
+
if (!!!G2RequestRes)
|
|
340
|
+
throw 'Error - no data';
|
|
341
|
+
let updatedCustomer = (0, anonymisation_1.hideG2CustomerInfoIfNeeded)(G2RequestRes.customer);
|
|
342
|
+
if (!!addToDB) {
|
|
343
|
+
console.log('----------------------');
|
|
344
|
+
let delay4 = (0, moment_1.default)();
|
|
345
|
+
await space.addCustomer(updatedCustomer, undefined, skipEmailCheck);
|
|
346
|
+
console.log('saving to database delay: ', (0, moment_1.default)().diff(delay4, 'seconds'));
|
|
347
|
+
}
|
|
348
|
+
console.log('=====================');
|
|
349
|
+
return updatedCustomer;
|
|
350
|
+
}
|
|
351
|
+
catch (e) {
|
|
352
|
+
console.log('error on updating customer info with G2: ', e.toString());
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
exports.updateCustomerWithG2Info = updateCustomerWithG2Info;
|
|
357
|
+
const getG2DiscountFromCode = (code) => {
|
|
358
|
+
const onlyNb = code.replace(/[^0-9]/gi, '');
|
|
359
|
+
return !!!onlyNb || !!isNaN(Number(onlyNb)) ? undefined : (0, toNumber_1.default)(onlyNb);
|
|
360
|
+
};
|
|
361
|
+
exports.getG2DiscountFromCode = getG2DiscountFromCode;
|
|
362
|
+
const getG2CustomerTypeFromCode = (code) => {
|
|
363
|
+
let parsedCode = code;
|
|
364
|
+
const possiblePrefixes = ['BASE', 'PAYS', 'RENC'];
|
|
365
|
+
for (let prefix of possiblePrefixes) {
|
|
366
|
+
parsedCode = parsedCode.replace(prefix, '');
|
|
367
|
+
}
|
|
368
|
+
parsedCode = parsedCode.replace(/[0-9]/gi, '');
|
|
369
|
+
const possibleTypes = ['AM', 'AL', 'AS', 'AMN'];
|
|
370
|
+
const checkWithPossibleTypes = (codeToCheck, removeFrom) => {
|
|
371
|
+
if (!!!possibleTypes.includes(codeToCheck)) {
|
|
372
|
+
if (codeToCheck.length === 1)
|
|
373
|
+
return '';
|
|
374
|
+
if (removeFrom == 'start') {
|
|
375
|
+
return checkWithPossibleTypes(codeToCheck.substring(1), removeFrom);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
return checkWithPossibleTypes(codeToCheck.replace(/.$/, ''), removeFrom);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return codeToCheck;
|
|
382
|
+
};
|
|
383
|
+
if (!!parsedCode) {
|
|
384
|
+
let removedValues = checkWithPossibleTypes(parsedCode, 'end');
|
|
385
|
+
if (!!!removedValues)
|
|
386
|
+
removedValues = checkWithPossibleTypes(parsedCode, 'start');
|
|
387
|
+
parsedCode = removedValues;
|
|
388
|
+
}
|
|
389
|
+
return parsedCode;
|
|
390
|
+
};
|
|
391
|
+
exports.getG2CustomerTypeFromCode = getG2CustomerTypeFromCode;
|
|
392
|
+
const fetchCustomPriceList = async (spaceToken, customerId, ignoreDashPriceList, onlyForProductSlugs) => {
|
|
393
|
+
let prices = [];
|
|
394
|
+
try {
|
|
395
|
+
const api = __1.API_URL;
|
|
396
|
+
const g2PriceListQuery = await fetch(`${api}/services/g2/customers/${customerId}/customPrices`, {
|
|
397
|
+
method: 'POST',
|
|
398
|
+
headers: {
|
|
399
|
+
'Content-Type': 'application/json',
|
|
400
|
+
Authorization: `Bearer ${spaceToken}`
|
|
401
|
+
},
|
|
402
|
+
body: JSON.stringify(Object.assign({ ignoreDashPriceList: !!ignoreDashPriceList }, (!!onlyForProductSlugs ? { onlyForProductSlugs } : {})))
|
|
403
|
+
});
|
|
404
|
+
prices = await g2PriceListQuery.json();
|
|
405
|
+
if (!!g2PriceListQuery.status && g2PriceListQuery.status !== 200)
|
|
406
|
+
throw `Error - ${g2PriceListQuery.status}`;
|
|
407
|
+
if (!!!prices || !!!prices.length)
|
|
408
|
+
throw 'Error - no data';
|
|
409
|
+
}
|
|
410
|
+
catch (e) {
|
|
411
|
+
console.log('error on fetching custom prices:', e.toString());
|
|
412
|
+
}
|
|
413
|
+
return prices;
|
|
414
|
+
};
|
|
415
|
+
exports.fetchCustomPriceList = fetchCustomPriceList;
|
|
416
|
+
const getCustomPriceList = async (space, idClient, ignoreDashPriceList, onlyForProductSlugs) => {
|
|
417
|
+
let priceList = [];
|
|
418
|
+
let escomptesClient = [];
|
|
419
|
+
let ententesClient = [];
|
|
420
|
+
let G2Auth = '';
|
|
421
|
+
let G2Url = '';
|
|
422
|
+
const G2Service = space.services({ field: 'external_service_name', value: 'G2' });
|
|
423
|
+
if (!!G2Service && !!G2Service.length) {
|
|
424
|
+
G2Auth = G2Service[0].external_service_infos.api;
|
|
425
|
+
G2Url = G2Service[0].external_service_infos.api_url;
|
|
426
|
+
}
|
|
427
|
+
if (!!!G2Auth || !!!G2Url)
|
|
428
|
+
throw `Error on fetching G2 API info from space`;
|
|
429
|
+
try {
|
|
430
|
+
const customerReq = await fetch(`${G2Url}/clients?noClient=${idClient}`, {
|
|
431
|
+
method: 'GET',
|
|
432
|
+
headers: {
|
|
433
|
+
Authorization: G2Auth
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
const customers = await customerReq.json();
|
|
437
|
+
if (customerReq.status !== 200) {
|
|
438
|
+
throw `Error on fetching customers from G2 API: ${customerReq.status}`;
|
|
439
|
+
}
|
|
440
|
+
const allG2Customers = customers;
|
|
441
|
+
const g2Customer = allG2Customers[0];
|
|
442
|
+
if (!!!g2Customer)
|
|
443
|
+
return priceList;
|
|
444
|
+
const today = (0, moment_1.default)();
|
|
445
|
+
const allCurrentEntentes = g2Customer.soumissions.filter((s) => !!s.soumission.actif &&
|
|
446
|
+
!!s.soumission.dateDébut &&
|
|
447
|
+
!!s.soumission.dateFin &&
|
|
448
|
+
today.isBetween((0, moment_1.default)(s.soumission.dateDébut), (0, moment_1.default)(s.soumission.dateFin)));
|
|
449
|
+
const mostRecent = (0, orderBy_1.default)(allCurrentEntentes, (e) => (0, moment_1.default)(e.soumission.dateDébut).unix(), 'desc');
|
|
450
|
+
if (!!mostRecent) {
|
|
451
|
+
ententesClient = mostRecent;
|
|
452
|
+
}
|
|
453
|
+
const { noClient, groupeDeClient, classePrix } = g2Customer.client;
|
|
454
|
+
const customerType = !!!groupeDeClient ? undefined : (0, exports.getG2CustomerTypeFromCode)(groupeDeClient);
|
|
455
|
+
try {
|
|
456
|
+
const escomptesNumClient = await fetch(`${G2Url}/escompteclient?code=${noClient}`, {
|
|
457
|
+
method: 'GET',
|
|
458
|
+
headers: {
|
|
459
|
+
Authorization: G2Auth
|
|
460
|
+
}
|
|
461
|
+
});
|
|
462
|
+
const numClientResults = await escomptesNumClient.json();
|
|
463
|
+
if (!!numClientResults.status && numClientResults.status !== 200) {
|
|
464
|
+
console.log(`Error on fetching escompteClients from G2 API with noClient ${noClient}: ${numClientResults.status}`);
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
escomptesClient = [...escomptesClient, ...numClientResults.map((r) => r.escompteClient)];
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
catch (e) {
|
|
471
|
+
console.log('error on fetching escomptesClient from G2: ', e.toString());
|
|
472
|
+
}
|
|
473
|
+
try {
|
|
474
|
+
if (!!groupeDeClient && groupeDeClient !== noClient) {
|
|
475
|
+
const escomptesGroupeClient = await fetch(`${G2Url}/escompteclient?code=${groupeDeClient}`, {
|
|
476
|
+
method: 'GET',
|
|
477
|
+
headers: {
|
|
478
|
+
Authorization: G2Auth
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
const groupeClientResults = await escomptesGroupeClient.json();
|
|
482
|
+
if (!!groupeClientResults.statuts && groupeClientResults.status !== 200) {
|
|
483
|
+
console.log(`Error on fetching escompteClients from G2 API with groupeClient ${groupeDeClient}: ${groupeClientResults.status}`);
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
const groupeClientEscomptes = groupeClientResults.map((r) => r.escompteClient);
|
|
487
|
+
const noDuplicates = groupeClientEscomptes.filter((es) => !!!es.code2 || !!!escomptesClient.some((e) => !!e.code2 && e.code2 === es.code2));
|
|
488
|
+
escomptesClient = [...escomptesClient, ...noDuplicates];
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
console.log('ignoring groupeClient escomptes because id and groupeClient are same');
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
catch (e) {
|
|
496
|
+
console.log('error on fetching escomptesClient from G2: ', e.toString());
|
|
497
|
+
}
|
|
498
|
+
let allProducts = [];
|
|
499
|
+
try {
|
|
500
|
+
if (!!onlyForProductSlugs && !!onlyForProductSlugs.length) {
|
|
501
|
+
if (onlyForProductSlugs.length <= 10) {
|
|
502
|
+
allProducts = await space.indexedProducts.get({
|
|
503
|
+
query: [{ field: 'slug', operator: 'in', value: onlyForProductSlugs }]
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
const batchResults = [];
|
|
508
|
+
for (let group of (0, chunk_1.default)(onlyForProductSlugs, 10)) {
|
|
509
|
+
let query = await space.indexedProducts.get({
|
|
510
|
+
query: [{ field: 'slug', operator: 'in', value: group }]
|
|
511
|
+
});
|
|
512
|
+
batchResults.push(query);
|
|
513
|
+
}
|
|
514
|
+
allProducts = (0, flatten_1.default)(batchResults);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
allProducts = await space.indexedProducts.get({
|
|
519
|
+
query: [{ field: 'draft', operator: '!=', value: true }]
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
catch (e) {
|
|
524
|
+
console.log('error on fetching all products : ', e.toString());
|
|
525
|
+
}
|
|
526
|
+
if (!!!allProducts.length)
|
|
527
|
+
return priceList;
|
|
528
|
+
const allCustomerGroups = space.preferences.customers.groups() || [];
|
|
529
|
+
const customerGroupByPriceClass = !!classePrix
|
|
530
|
+
? allCustomerGroups.find((g) => g.external_price_list_slug == classePrix.toString())
|
|
531
|
+
: undefined;
|
|
532
|
+
for (let prod of allProducts) {
|
|
533
|
+
const data = prod.data();
|
|
534
|
+
if (!!!data || !!data.draft)
|
|
535
|
+
continue;
|
|
536
|
+
const type = !!data.attributes && data.attributes[data_2.AttributesIdEnumGR.TYPE];
|
|
537
|
+
for (let decli of data.declinations.filter((d) => !!!d.is_sample)) {
|
|
538
|
+
let isNetPrice = !!decli.external_values && decli.external_values['catégorie2'] === 'NET';
|
|
539
|
+
const sku = decli.sku;
|
|
540
|
+
let basePrice = (0, toNumber_1.default)(decli.regular_price.amount);
|
|
541
|
+
if (!!decli.prices_list && !!decli.prices_list.length && !!!ignoreDashPriceList) {
|
|
542
|
+
let priceListItemToUse = undefined;
|
|
543
|
+
const samePriceClassInPriceList = !!customerGroupByPriceClass
|
|
544
|
+
? decli.prices_list.find((pl) => pl.group_id == customerGroupByPriceClass.slug)
|
|
545
|
+
: undefined;
|
|
546
|
+
if (!!samePriceClassInPriceList && !isNaN((0, toNumber_1.default)(samePriceClassInPriceList.amount))) {
|
|
547
|
+
priceListItemToUse = samePriceClassInPriceList;
|
|
548
|
+
}
|
|
549
|
+
else if (!!groupeDeClient) {
|
|
550
|
+
const samePriceInPriceList = !!customerType
|
|
551
|
+
? decli.prices_list.find((p) => !!p.external_slug && p.external_slug === customerType)
|
|
552
|
+
: undefined;
|
|
553
|
+
const proPriceInPriceList = decli.prices_list.find((p) => p.group_id === 'aspirant');
|
|
554
|
+
if (!!samePriceInPriceList && !isNaN((0, toNumber_1.default)(samePriceInPriceList.amount))) {
|
|
555
|
+
priceListItemToUse = samePriceClassInPriceList;
|
|
556
|
+
}
|
|
557
|
+
else if (!!proPriceInPriceList && !isNaN((0, toNumber_1.default)(proPriceInPriceList.amount))) {
|
|
558
|
+
priceListItemToUse = proPriceInPriceList;
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
if (!!priceListItemToUse) {
|
|
562
|
+
basePrice = (0, toNumber_1.default)(priceListItemToUse.amount);
|
|
563
|
+
if (!!!isNetPrice) {
|
|
564
|
+
isNetPrice = !!priceListItemToUse.is_net_price;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
let comparePrices = [
|
|
569
|
+
Object.assign(Object.assign({ price: basePrice, type: G2_1.CustomPriceItemTypeEnum.REG }, (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1')
|
|
570
|
+
? { code1: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie1') }
|
|
571
|
+
: {})), (!!(0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2')
|
|
572
|
+
? { code2: (0, object_1.recursiveCheckObject)(decli, 'external_values.catégorie2') }
|
|
573
|
+
: {}))
|
|
574
|
+
];
|
|
575
|
+
let foundEntenteForProduct = false;
|
|
576
|
+
if (!!ententesClient.length) {
|
|
577
|
+
for (let entente of ententesClient) {
|
|
578
|
+
if (!!foundEntenteForProduct)
|
|
579
|
+
break;
|
|
580
|
+
let sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle === sku);
|
|
581
|
+
if (!!!sameProd) {
|
|
582
|
+
sameProd = entente.articles.find((a) => !!a.article.noArticle && a.article.noArticle.includes(sku));
|
|
583
|
+
}
|
|
584
|
+
if (!!sameProd) {
|
|
585
|
+
const priceToSet = typeof sameProd.article.prixUnitaireNet === 'number'
|
|
586
|
+
? sameProd.article.prixUnitaireNet
|
|
587
|
+
: typeof sameProd.article.prixUnitaire === 'number'
|
|
588
|
+
? sameProd.article.prixUnitaire
|
|
589
|
+
: undefined;
|
|
590
|
+
if (typeof priceToSet === 'number') {
|
|
591
|
+
foundEntenteForProduct = true;
|
|
592
|
+
comparePrices.push(Object.assign(Object.assign({ price: (0, toNumber_1.default)(priceToSet), type: G2_1.CustomPriceItemTypeEnum.ENTENTE }, (!!decli.external_values ? { code2: decli.external_values['catégorie2'] } : {})), (!!sameProd.article.pourcEscompte
|
|
593
|
+
? Object.assign(Object.assign({}, (typeof sameProd.article.prixUnitaire === 'number'
|
|
594
|
+
? { reg: sameProd.article.prixUnitaire }
|
|
595
|
+
: {})), { percent: sameProd.article.pourcEscompte }) : {})));
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
if (!!escomptesClient.length) {
|
|
601
|
+
const findBestDeal = (escomptesToCheck) => {
|
|
602
|
+
const bestDeal = (0, maxBy_1.default)(escomptesToCheck, (escompte) => (0, toNumber_1.default)(escompte.pourcEscompte));
|
|
603
|
+
if (!!bestDeal) {
|
|
604
|
+
comparePrices.push(Object.assign({ price: basePrice * ((100 - (0, toNumber_1.default)(bestDeal.pourcEscompte)) / 100), type: G2_1.CustomPriceItemTypeEnum.ESCOMPTE, percent: (0, toNumber_1.default)(bestDeal.pourcEscompte), code1: bestDeal.code1 }, (!!bestDeal.code2 ? { code2: bestDeal.code2 } : {})));
|
|
605
|
+
}
|
|
606
|
+
};
|
|
607
|
+
if (!!!foundEntenteForProduct) {
|
|
608
|
+
if (!!isNetPrice) {
|
|
609
|
+
const sameCat1Escompte = escomptesClient.filter((e) => {
|
|
610
|
+
if (!!!e.code2)
|
|
611
|
+
return false;
|
|
612
|
+
return decli.external_values && e.code2 === decli.external_values['catégorie1'] && e.code2 == 'DALLE';
|
|
613
|
+
});
|
|
614
|
+
if (!!sameCat1Escompte && !!sameCat1Escompte.length) {
|
|
615
|
+
findBestDeal(sameCat1Escompte);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
else {
|
|
619
|
+
const no2ndCode = escomptesClient.filter((e) => !!!e.code2);
|
|
620
|
+
if (!!no2ndCode.length) {
|
|
621
|
+
findBestDeal(no2ndCode);
|
|
622
|
+
}
|
|
623
|
+
let sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2 === sku);
|
|
624
|
+
if (!!!sameSkuEscompte.length) {
|
|
625
|
+
sameSkuEscompte = escomptesClient.filter((e) => e.code2 && e.code2.includes(sku));
|
|
626
|
+
}
|
|
627
|
+
if (!!sameSkuEscompte.length) {
|
|
628
|
+
findBestDeal(sameSkuEscompte);
|
|
629
|
+
}
|
|
630
|
+
if (!!!sameSkuEscompte.length) {
|
|
631
|
+
const sameBrandEscompte = escomptesClient.filter((e) => {
|
|
632
|
+
if (!!!e.code2)
|
|
633
|
+
return;
|
|
634
|
+
return (decli.external_values &&
|
|
635
|
+
(e.code2 === decli.external_values['catégorie2'] || e.code2 === decli.external_values['catégorie1']));
|
|
636
|
+
});
|
|
637
|
+
if (!!sameBrandEscompte) {
|
|
638
|
+
findBestDeal(sameBrandEscompte);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
comparePrices = (0, uniqBy_1.default)(comparePrices, (p) => p.price);
|
|
645
|
+
const lowestPrice = (0, minBy_1.default)(comparePrices, (p) => p.price);
|
|
646
|
+
let appliedPrice = lowestPrice;
|
|
647
|
+
if (!!lowestPrice && lowestPrice.type == G2_1.CustomPriceItemTypeEnum.REG) {
|
|
648
|
+
const ententeFound = comparePrices.find((p) => p.type == G2_1.CustomPriceItemTypeEnum.ENTENTE);
|
|
649
|
+
if (!!ententeFound)
|
|
650
|
+
appliedPrice = Object.assign(Object.assign({}, ententeFound), { reg: ententeFound.price });
|
|
651
|
+
}
|
|
652
|
+
let customPriceItemToPush = undefined;
|
|
653
|
+
if (!!appliedPrice) {
|
|
654
|
+
customPriceItemToPush = Object.assign(Object.assign({ sku: sku, parent_slug: data.slug, name: `${!!decli.parent_name &&
|
|
655
|
+
!!!(0, locale_1.getPrincipalWord)(decli.name, space).trim().includes((0, locale_1.getPrincipalWord)(decli.parent_name).trim())
|
|
656
|
+
? (0, locale_1.getPrincipalWord)(decli.name, space) + ' - '
|
|
657
|
+
: ''}${(0, locale_1.getPrincipalWord)(decli.name, space)}`, reg: basePrice }, (!!type
|
|
658
|
+
? {
|
|
659
|
+
prod_type: type[0]
|
|
660
|
+
}
|
|
661
|
+
: {})), appliedPrice);
|
|
662
|
+
}
|
|
663
|
+
if (!!customPriceItemToPush) {
|
|
664
|
+
priceList.push(customPriceItemToPush);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
return priceList;
|
|
669
|
+
}
|
|
670
|
+
catch (e) {
|
|
671
|
+
console.log('error on fetching customer from G2: ', e.toString());
|
|
672
|
+
return e.toString();
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
exports.getCustomPriceList = getCustomPriceList;
|
|
676
|
+
const getItemEscompteSupp = (customPriceList, item) => {
|
|
677
|
+
const code2InItem = (0, object_1.recursiveCheckObject)(item, `external_values.catégorie2`);
|
|
678
|
+
let code2InPriceList = undefined;
|
|
679
|
+
const customPriceItem = customPriceList.find((priceItem) => priceItem.sku === item.sku);
|
|
680
|
+
if (!!customPriceItem && !!customPriceItem.code2) {
|
|
681
|
+
code2InPriceList = customPriceItem.code2;
|
|
682
|
+
}
|
|
683
|
+
const code2ToCheck = code2InPriceList !== null && code2InPriceList !== void 0 ? code2InPriceList : code2InItem;
|
|
684
|
+
if (!!!code2ToCheck)
|
|
685
|
+
return;
|
|
686
|
+
let foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2ToCheck);
|
|
687
|
+
if (!!!foundEsc && !!code2InItem) {
|
|
688
|
+
foundEsc = customPriceList.find((priceItem) => priceItem.sku === 'ESC' + code2InItem);
|
|
689
|
+
}
|
|
690
|
+
return foundEsc;
|
|
691
|
+
};
|
|
692
|
+
exports.getItemEscompteSupp = getItemEscompteSupp;
|
|
693
|
+
const groupArrayOfItemsByItemAndCorrespondingEscompteItem = (items) => {
|
|
694
|
+
return (0, flatten_1.default)(Object.values((0, groupBy_1.default)(items, (item) => ((0, exports.isEscompteSuppItem)(item.sku) ? (0, string_1.splitFromFirstChar)('-', item.sku)[1] : item.sku))));
|
|
695
|
+
};
|
|
696
|
+
exports.groupArrayOfItemsByItemAndCorrespondingEscompteItem = groupArrayOfItemsByItemAndCorrespondingEscompteItem;
|
|
697
|
+
const buildEscompteSuppCartItem = (escompteItems, customPriceList, escompteSuppItem, item) => {
|
|
698
|
+
if (!!!escompteItems[0])
|
|
699
|
+
return;
|
|
700
|
+
const priceToUse = (0, products_1.getLowestPrice)(item);
|
|
701
|
+
const escompteDecli = escompteItems[0].data().declinations.find((decli) => decli.sku === escompteSuppItem.sku);
|
|
702
|
+
if (!!!escompteDecli)
|
|
703
|
+
return;
|
|
704
|
+
const sameInCustomPriceList = customPriceList.find((c) => c.sku === escompteDecli.sku);
|
|
705
|
+
if (!!sameInCustomPriceList &&
|
|
706
|
+
sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG &&
|
|
707
|
+
sameInCustomPriceList.price === 0)
|
|
708
|
+
return;
|
|
709
|
+
const escompteEquivalent = (0, exports.checkForCustomPriceEquivalent)(escompteDecli, customPriceList);
|
|
710
|
+
return Object.assign(Object.assign({}, escompteEquivalent), { is_upsell_of_sku: item.sku, is_temp_prod: true, price_override: true, qte_override: true, qte: item.qte * priceToUse.price.amount, sku: `${escompteEquivalent.sku}-${item.sku}`, regular_price: (0, products_1.getLowestPrice)(escompteEquivalent).price });
|
|
711
|
+
};
|
|
712
|
+
exports.buildEscompteSuppCartItem = buildEscompteSuppCartItem;
|
|
713
|
+
const isEscompteSuppItem = (itemSku) => {
|
|
714
|
+
return Object.values(G2_1.EscomptesDeclinationSkusEnum).some((subString) => itemSku.includes(subString));
|
|
715
|
+
};
|
|
716
|
+
exports.isEscompteSuppItem = isEscompteSuppItem;
|
|
717
|
+
const checkForCustomPriceEquivalent = (item, customPriceList, options = {}) => {
|
|
718
|
+
var _a;
|
|
719
|
+
const sameInCustomPriceList = customPriceList.find((i) => i.sku === item.sku);
|
|
720
|
+
if (!!!sameInCustomPriceList)
|
|
721
|
+
return item;
|
|
722
|
+
const hasOverriddenPrice = item.price_override;
|
|
723
|
+
if (!!hasOverriddenPrice && sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG)
|
|
724
|
+
return item;
|
|
725
|
+
const { regular_price, promo_price, discount_price, tier_pricing } = item, rest = __rest(item, ["regular_price", "promo_price", "discount_price", "tier_pricing"]);
|
|
726
|
+
const isReg = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.REG;
|
|
727
|
+
const isEntente = sameInCustomPriceList.type === G2_1.CustomPriceItemTypeEnum.ENTENTE;
|
|
728
|
+
const isPA = !!sameInCustomPriceList.PA_percent;
|
|
729
|
+
const shouldUseCustomPriceForRegPrice = (!!isReg && !!!sameInCustomPriceList.percent) || (!!options.setNetPriceAsRegular && !!isEntente);
|
|
730
|
+
const currentDiscountPrice = item.discount_price || { currency: 'CAD' };
|
|
731
|
+
const currentPromoPrice = item.promo_price || { currency: 'CAD' };
|
|
732
|
+
const calculatedRegPrice = !!item.price_override
|
|
733
|
+
? regular_price.amount
|
|
734
|
+
: (!!isReg || !!isEntente) && sameInCustomPriceList.price == 0
|
|
735
|
+
? 0
|
|
736
|
+
: !!shouldUseCustomPriceForRegPrice
|
|
737
|
+
? sameInCustomPriceList.price
|
|
738
|
+
: sameInCustomPriceList.reg;
|
|
739
|
+
let updatedCartItem = Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { regular_price: Object.assign(Object.assign(Object.assign({}, regular_price), { amount: calculatedRegPrice }), (sameInCustomPriceList.type !== G2_1.CustomPriceItemTypeEnum.REG && !!!regular_price.price_type
|
|
740
|
+
? { price_type: sameInCustomPriceList.type }
|
|
741
|
+
: {})) }), (!!!hasOverriddenPrice
|
|
742
|
+
? Object.assign(Object.assign({}, (sameInCustomPriceList.percent || !!!isReg
|
|
743
|
+
? Object.assign({}, (!!sameInCustomPriceList.percent &&
|
|
744
|
+
[G2_1.CustomPriceItemTypeEnum.ESCOMPTE, G2_1.CustomPriceItemTypeEnum.NORMAL_ESCOMPTE].includes(sameInCustomPriceList.type)
|
|
745
|
+
? {
|
|
746
|
+
promo_price: Object.assign(Object.assign({}, currentPromoPrice), (!currentPromoPrice.overridden
|
|
747
|
+
? {
|
|
748
|
+
amount: sameInCustomPriceList.price,
|
|
749
|
+
price_type: sameInCustomPriceList.type
|
|
750
|
+
}
|
|
751
|
+
: {}))
|
|
752
|
+
}
|
|
753
|
+
:
|
|
754
|
+
!!!options.setNetPriceAsRegular
|
|
755
|
+
? Object.assign({ discount_price: Object.assign(Object.assign({}, currentDiscountPrice), (!currentDiscountPrice.overridden
|
|
756
|
+
? {
|
|
757
|
+
amount: sameInCustomPriceList.price,
|
|
758
|
+
price_type: sameInCustomPriceList.type
|
|
759
|
+
}
|
|
760
|
+
: {})) }, (!!currentPromoPrice.overridden ? { promo_price: currentPromoPrice } : {})) : {})) :
|
|
761
|
+
currentDiscountPrice.price_type === 'tierpricing' && !!!options.removeTierPricing
|
|
762
|
+
? {
|
|
763
|
+
discount_price: Object.assign(Object.assign({}, item.discount_price), { original_amount: !!isReg || !!!options.setNetPriceAsRegular ? null : sameInCustomPriceList.price })
|
|
764
|
+
}
|
|
765
|
+
: {})), (!!isPA
|
|
766
|
+
? {
|
|
767
|
+
promo_price: Object.assign(Object.assign({}, currentPromoPrice), { amount: (_a = sameInCustomPriceList.PA_price) !== null && _a !== void 0 ? _a : sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.PA_percent }),
|
|
768
|
+
discount_price: Object.assign(Object.assign({}, currentDiscountPrice), { amount: sameInCustomPriceList.price, price_type: sameInCustomPriceList.type, percent_applied: sameInCustomPriceList.percent })
|
|
769
|
+
}
|
|
770
|
+
: {})) : {})), (!!!options.removeTierPricing && !!tier_pricing
|
|
771
|
+
? {
|
|
772
|
+
tier_pricing
|
|
773
|
+
}
|
|
774
|
+
: {}));
|
|
775
|
+
const priceUsedForPromoCalculations = !!updatedCartItem.discount_price
|
|
776
|
+
? updatedCartItem.discount_price.amount
|
|
777
|
+
: updatedCartItem.regular_price.amount;
|
|
778
|
+
const initialPriceToCompare = !!currentDiscountPrice ? currentDiscountPrice.amount : item.regular_price.amount;
|
|
779
|
+
if (typeof currentPromoPrice.percent_applied == 'number' &&
|
|
780
|
+
!!currentPromoPrice.overridden &&
|
|
781
|
+
priceUsedForPromoCalculations != initialPriceToCompare) {
|
|
782
|
+
updatedCartItem = Object.assign(Object.assign({}, updatedCartItem), { promo_price: Object.assign(Object.assign({}, (updatedCartItem.promo_price || { currency: 'CAD' })), { amount: (0, round_1.default)((0, cart_1.calculateAmountForCustomPromo)(updatedCartItem, Cart_1.CustomPromoType.EXTRA_PROMO, currentPromoPrice.percent_applied), priceUsedForPromoCalculations.toString().split('.').length) }) });
|
|
783
|
+
}
|
|
784
|
+
return updatedCartItem;
|
|
785
|
+
};
|
|
786
|
+
exports.checkForCustomPriceEquivalent = checkForCustomPriceEquivalent;
|
|
787
|
+
const getCustomIncentiveAmount = (customPriceList) => {
|
|
788
|
+
if (!!!customPriceList)
|
|
789
|
+
return;
|
|
790
|
+
const ententeSku = 'INCITATIF';
|
|
791
|
+
let amount = 0;
|
|
792
|
+
const entente = customPriceList.find((priceItem) => priceItem.sku === ententeSku);
|
|
793
|
+
if (!!!entente || !!!entente.price || entente.type == G2_1.CustomPriceItemTypeEnum.REG)
|
|
794
|
+
return;
|
|
795
|
+
amount = entente.price * -100;
|
|
796
|
+
return amount;
|
|
797
|
+
};
|
|
798
|
+
exports.getCustomIncentiveAmount = getCustomIncentiveAmount;
|
|
799
|
+
const getDiscountRulesWithCustomIncentive = (incentiveAmount, discountRules) => {
|
|
800
|
+
let hasBeenUpdated = false;
|
|
801
|
+
const updatedDiscountRules = discountRules.map((rule) => {
|
|
802
|
+
const promoType = (0, discount_1.getCartPromoType)(rule);
|
|
803
|
+
if (promoType === Cart_1.CartPromoAppliesToEnum.TOTAL_AFTER_TAXES) {
|
|
804
|
+
hasBeenUpdated = true;
|
|
805
|
+
const updatedRule = rule;
|
|
806
|
+
updatedRule.result.action_value = incentiveAmount;
|
|
807
|
+
updatedRule.overridden = true;
|
|
808
|
+
return updatedRule;
|
|
809
|
+
}
|
|
810
|
+
else {
|
|
811
|
+
return rule;
|
|
812
|
+
}
|
|
813
|
+
});
|
|
814
|
+
if (!hasBeenUpdated)
|
|
815
|
+
return;
|
|
816
|
+
return updatedDiscountRules;
|
|
817
|
+
};
|
|
818
|
+
exports.getDiscountRulesWithCustomIncentive = getDiscountRulesWithCustomIncentive;
|
|
819
|
+
const getCustomIncentiveInfo = (customPriceList, discountRules, defaultIncentiveAmount) => {
|
|
820
|
+
let discountRulesWithCustomIncentive;
|
|
821
|
+
let customIncentiveAmount = (0, exports.getCustomIncentiveAmount)(customPriceList);
|
|
822
|
+
const incentiveDiscountRule = (0, discount_1.getPaymentIncentiveDiscount)(discountRules);
|
|
823
|
+
if (!!!customIncentiveAmount) {
|
|
824
|
+
if (!!incentiveDiscountRule && !!incentiveDiscountRule.overridden) {
|
|
825
|
+
return {
|
|
826
|
+
amount: defaultIncentiveAmount || 0,
|
|
827
|
+
updatedDiscountRules: discountRules.map((dr) => {
|
|
828
|
+
if (dr.id !== incentiveDiscountRule.id)
|
|
829
|
+
return dr;
|
|
830
|
+
return Object.assign(Object.assign(Object.assign({}, dr), (defaultIncentiveAmount ? { result: Object.assign(Object.assign({}, dr.result), { action_value: defaultIncentiveAmount }) } : {})), { overridden: false });
|
|
831
|
+
}),
|
|
832
|
+
reset: true
|
|
833
|
+
};
|
|
834
|
+
}
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
discountRulesWithCustomIncentive = (0, exports.getDiscountRulesWithCustomIncentive)(customIncentiveAmount, discountRules);
|
|
838
|
+
if (!!!discountRulesWithCustomIncentive)
|
|
839
|
+
return;
|
|
840
|
+
return {
|
|
841
|
+
amount: customIncentiveAmount,
|
|
842
|
+
updatedDiscountRules: discountRulesWithCustomIncentive
|
|
843
|
+
};
|
|
844
|
+
};
|
|
845
|
+
exports.getCustomIncentiveInfo = getCustomIncentiveInfo;
|
|
846
846
|
//# sourceMappingURL=g2.js.map
|