{"version":3,"file":"static/js/562cd00806b5be4f2d55.bundle.js","mappings":"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AElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,YAId,KAAAG,YAA2B,CAC/B,CACIJ,UAAW,OACXC,aAAc,UAElB,CACID,UAAW,OACXC,aAAc,UAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,YAIfzS,6BACH,OAAOoK,QAAQC,QAAQ,IAEpBpK,qBAAqBvE,GAExB,OADAoD,QAAQD,IAAI,yEAAyEnD,MAC9E,EAGJwE,iBACH,OAAOkK,QAAQC,QAAQ,CACnBvH,KAAM,sBACN+P,YAAa,CACT,CACI1U,GAAI,SACJ2U,aAAc,eACdC,YAAa,yCACbxH,KAAM,WACNyH,OAAQC,EAAAA,GAAAA,QACRC,KAAM,yCACNC,WAAY,CACR,CACIhV,GAAI,OACJ2U,aAAc,YACdE,OAAQC,EAAAA,GAAAA,OACRG,OAAQ,OAEZ,CACIjV,GAAI,OACJ2U,aAAc,YACdE,OAAQC,EAAAA,GAAAA,OACRG,OAAQ,OAEZ,CACIjV,GAAI,OACJ2U,aAAc,YACdE,OAAQC,EAAAA,GAAAA,MACRG,OAAQ,QAGhBC,YAAa,aACbC,i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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/get-financing-static-data.ts?0f15","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-nexi/actions/get-card-payment-accept-point.ts?76c6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-payment-instrument-custom/actions/get-card-payment-accept-point.ts?99a6","webpack://Msdyn365.Commerce.Online/./lib/component-registration.js?266e","webpack://Msdyn365.Commerce.Online/./lib/connector-registration.js?87e5","webpack://Msdyn365.Commerce.Online/./lib/module-registration.js?44dd","webpack://Msdyn365.Commerce.Online/./lib/module-registration.local.js?540f","webpack://Msdyn365.Commerce.Online/./lib/view-registration.js?92f2","webpack://Msdyn365.Commerce.Online/./src/data-actions/accordion-state-data-action.ts?eaf1","webpack://Msdyn365.Commerce.Online/./src/modules/actions/get-active-image-products.ts?0501","webpack://Msdyn365.Commerce.Online/./src/actions/get-address-purposes.ts?6b90","webpack://Msdyn365.Commerce.Online/./src/actions/get-country-regions.ts?9431","webpack://Msdyn365.Commerce.Online/./src/actions/get-country-state.ts?3ecd","webpack://Msdyn365.Commerce.Online/./src/actions/get-state-provinces.ts?554d","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/actions/getBotFrameworkToken.action.ts?0785","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-apple-pay/actions/get-card-payment-accept-point.ts?819f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express/actions/get-card-payment-accept-point.ts?e7e0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-payment-instrument/actions/get-card-payment-accept-point.ts?c747","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/actions/get-products-in-active-checkout-cart.ts?1981","webpack://Msdyn365.Commerce.Online/./src/actions/addToCart-telemetry.action.ts?4575","webpack://Msdyn365.Commerce.Online/./src/actions/copyCart-checkOut-telemetry.action.ts?403f","webpack://Msdyn365.Commerce.Online/./src/actions/getById-product-telemetry.action.ts?9e39","webpack://Msdyn365.Commerce.Online/./src/actions/getByIds-product-telemetry.action.ts?1a7f","webpack://Msdyn365.Commerce.Online/./src/actions/getVariantsByDimensionValues-telemetry.action.ts?b148","webpack://Msdyn365.Commerce.Online/./src/actions/purchase-telemetry.action.ts?d6c7","webpack://Msdyn365.Commerce.Online/./src/actions/readCart-telemetry.action.ts?ac14","webpack://Msdyn365.Commerce.Online/./src/actions/removeFromCart-telemetry.action.ts?b268","webpack://Msdyn365.Commerce.Online/./src/actions/telemetry.action.helper.ts?7f4a","webpack://Msdyn365.Commerce.Online/./src/actions/updateCart-telemetry.action.ts?f56d","webpack://Msdyn365.Commerce.Online/./src/connectors/msdyn365-exp-test/msdyn365-exp-test.listener.ts?1431","webpack://Msdyn365.Commerce.Online/./src/connectors/msdyn365-exp-test/msdyn365-exp-test.provider.ts?04ad","webpack://Msdyn365.Commerce.Online/./src/actions/get-channels.ts?fd22","webpack://Msdyn365.Commerce.Online/./src/actions/get-org-unit-locations.ts?0b40","webpack://Msdyn365.Commerce.Online/./src/actions/get-sales-order-confirmation-with-hydrations.ts?6854","webpack://Msdyn365.Commerce.Online/./src/actions/get-sales-order-details-by-confirmation-id.ts?ce6e","webpack://Msdyn365.Commerce.Online/./src/actions/get-sales-order-with-hydrations.ts?a5de","webpack://Msdyn365.Commerce.Online/./src/actions/get-tender-types.ts?d667","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/actions/get-order-template.ts?077e","webpack://Msdyn365.Commerce.Online/./src/modules/category-page-summary/category-page-summary.action.ts?c40c","webpack://Msdyn365.Commerce.Online/./src/modules/default-page-summary/default-page-summary.action.ts?5b44","webpack://Msdyn365.Commerce.Online/./src/modules/list-page-summary/list-page-summary.action.ts?a1a8","webpack://Msdyn365.Commerce.Online/./src/modules/product-page-summary/product-page-summary.action.ts?9992","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/actions/get-products-in-preview-product-comparison.ts?1623","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/base/product-comparison-item.ts?940e","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/base/comparison-item.ts?d1df","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/product-comparison-state.ts?6916","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/comparison-manager.ts?49d5","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/actions/get-products-in-product-comparison.ts?b12d","webpack://Msdyn365.Commerce.Online/./src/dataActions/get-attributes-for-selected-variant.ts?e4b6","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/actions/get-product-list.ts?d537","webpack://Msdyn365.Commerce.Online/./src/actions/get-product-reviews.ts?6edb","webpack://Msdyn365.Commerce.Online/./src/actions/get-user-review.ts?bad7","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/get-product-reviews-input.ts?c654","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/get-user-review-input.ts?ab81","webpack://Msdyn365.Commerce.Online/./src/actions/ratings-reviews-state-data-action.ts?26cd","webpack://Msdyn365.Commerce.Online/../../src/add-address.ts?fb17","webpack://Msdyn365.Commerce.Online/../../src/add-item-to-product-list.ts?580e","webpack://Msdyn365.Commerce.Online/../../src/add-organization-user.ts?ed86","webpack://Msdyn365.Commerce.Online/../../src/checkout.ts?57e0","webpack://Msdyn365.Commerce.Online/../../src/create-product-list.ts?7367","webpack://Msdyn365.Commerce.Online/../../src/delete-address.ts?f9a3","webpack://Msdyn365.Commerce.Online/../../src/delete-organization-user.ts?7f5d","webpack://Msdyn365.Commerce.Online/../../src/edit-organization-user.ts?d2ac","webpack://Msdyn365.Commerce.Online/../../src/generic-data-action.ts?f887","webpack://Msdyn365.Commerce.Online/../../src/get-address.ts?20a3","webpack://Msdyn365.Commerce.Online/../../src/get-attribute-definitions.ts?cc6b","webpack://Msdyn365.Commerce.Online/../../src/get-attributes-for-selected-variant.ts?af00","webpack://Msdyn365.Commerce.Online/../../src/get-availabilities-cartlines.ts?b8e8","webpack://Msdyn365.Commerce.Online/../../src/get-business-partner-operation-requests.ts?bece","webpack://Msdyn365.Commerce.Online/../../src/get-catalogs.ts?7332","webpack://Msdyn365.Commerce.Online/../../src/get-categories-hierarchy.ts?acde","webpack://Msdyn365.Commerce.Online/../../src/get-categories.ts?8dc6","webpack://Msdyn365.Commerce.Online/../../src/get-category-paths.ts?b007","webpack://Msdyn365.Commerce.Online/../../src/get-channel-delivery-option-configuration.ts?a716","webpack://Msdyn365.Commerce.Online/../../src/get-checkout-cart.ts?79bc","webpack://Msdyn365.Commerce.Online/../../src/get-current-business-partner-user.ts?1479","webpack://Msdyn365.Commerce.Online/../../src/get-current-category-hierarchy.ts?d48e","webpack://Msdyn365.Commerce.Online/../../src/get-current-category.ts?354d","webpack://Msdyn365.Commerce.Online/../../src/get-customer-balance.ts?d165","webpack://Msdyn365.Commerce.Online/../../src/get-customer-loyalty-cards.ts?2466","webpack://Msdyn365.Commerce.Online/../../src/get-customer.ts?8319","webpack://Msdyn365.Commerce.Online/../../src/get-delivery-options-for-cartlines.ts?4dfe","webpack://Msdyn365.Commerce.Online/../../src/get-delivery-options-for-selected-variant.ts?3f6c","webpack://Msdyn365.Commerce.Online/../../src/get-dimension-availabilities-for-product-search-result.ts?5259","webpack://Msdyn365.Commerce.Online/../../src/get-dimension-availabilities-for-products.ts?f656","webpack://Msdyn365.Commerce.Online/../../src/get-dimensions-for-selected-variant.ts?6bf4","webpack://Msdyn365.Commerce.Online/../../src/get-feature-state.ts?1a1d","webpack://Msdyn365.Commerce.Online/../../src/get-full-available-inventory-nearby.ts?20be","webpack://Msdyn365.Commerce.Online/../../../src/utilities/quick-order-templates.ts?0ea6","webpack://Msdyn365.Commerce.Online/../../src/get-full-product-list.ts?ccfb","webpack://Msdyn365.Commerce.Online/../../src/get-full-products-by-refine-search-category.ts?30ab","webpack://Msdyn365.Commerce.Online/../../src/get-full-products-by-refine-search-text.ts?2ad7","webpack://Msdyn365.Commerce.Online/../../../src/utilities/refiner-utils.ts?1e61","webpack://Msdyn365.Commerce.Online/../../src/get-full-products.ts?ba9a","webpack://Msdyn365.Commerce.Online/../../src/get-items-in-wishlist.ts?0d27","webpack://Msdyn365.Commerce.Online/../../src/get-list.ts?4fd5","webpack://Msdyn365.Commerce.Online/../../src/get-loyalty-card.ts?7213","webpack://Msdyn365.Commerce.Online/../../src/get-loyalty-transaction-estimation.ts?e254","webpack://Msdyn365.Commerce.Online/../../src/get-media-locations-by-id.ts?8462","webpack://Msdyn365.Commerce.Online/../../src/get-media-locations-for-selected-variant.ts?fd54","webpack://Msdyn365.Commerce.Online/../../src/get-order-history.ts?76fd","webpack://Msdyn365.Commerce.Online/../../src/get-org-unit-configuration.ts?4793","webpack://Msdyn365.Commerce.Online/../../src/get-organization-users-count.ts?b5f7","webpack://Msdyn365.Commerce.Online/../../src/get-organization-users.ts?b72e","webpack://Msdyn365.Commerce.Online/../../src/get-organization-wide-order-history.ts?92b8","webpack://Msdyn365.Commerce.Online/../../src/get-pickup-options-for-cartlines.ts?843b","webpack://Msdyn365.Commerce.Online/../../src/get-price-for-product-search-result.ts?36f8","webpack://Msdyn365.Commerce.Online/../../src/get-price-for-selected-variant.ts?9e79","webpack://Msdyn365.Commerce.Online/../../src/get-product-availabilities-for-selected-variant.ts?0abd","webpack://Msdyn365.Commerce.Online/../../src/get-product-dimensions-with-availabilities.ts?347b","webpack://Msdyn365.Commerce.Online/../../../src/utilities/quick-order-template-line.ts?56d5","webpack://Msdyn365.Commerce.Online/../../src/get-product-list-lines.ts?ae74","webpack://Msdyn365.Commerce.Online/../../src/get-product-list.ts?ef13","webpack://Msdyn365.Commerce.Online/../../src/get-products-by-category.ts?accf","webpack://Msdyn365.Commerce.Online/../../src/get-products-in-active-cart.ts?3376","webpack://Msdyn365.Commerce.Online/../../src/get-promotion-options-for-cartlines.ts?1a35","webpack://Msdyn365.Commerce.Online/../../src/get-ratings-summary-input.ts?3ccb","webpack://Msdyn365.Commerce.Online/../../src/get-ratings-summary.ts?49bc","webpack://Msdyn365.Commerce.Online/../../src/get-refiners-by-category.ts?6d4e","webpack://Msdyn365.Commerce.Online/../../src/get-refiners-by-text.ts?c52a","webpack://Msdyn365.Commerce.Online/../../src/get-related-products.ts?6f93","webpack://Msdyn365.Commerce.Online/../../src/get-scan-results.ts?6b44","webpack://Msdyn365.Commerce.Online/../../src/get-search-configuration.ts?acd1","webpack://Msdyn365.Commerce.Online/../../src/get-selected-variant.ts?f0c0","webpack://Msdyn365.Commerce.Online/../../src/get-simple-products.ts?fed7","webpack://Msdyn365.Commerce.Online/../../src/get-store-location-information.ts?1df0","webpack://Msdyn365.Commerce.Online/../../src/get-wishlist-by-customer-id.ts?e873","webpack://Msdyn365.Commerce.Online/../../../src/invoices/get-invoice-details.ts?66a9","webpack://Msdyn365.Commerce.Online/../../../src/invoices/get-invoice.ts?479e","webpack://Msdyn365.Commerce.Online/../../../src/invoices/get-invoices.ts?22cb","webpack://Msdyn365.Commerce.Online/../../src/issue-loyalty.ts?f8fa","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/add-item-to-order-template.ts?fff3","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/add-order-template-to-cart.ts?6ee4","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/create-order-template.ts?03c1","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/get-full-order-template.ts?72c6","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/get-full-order-templates.ts?b553","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/get-order-templates-preview.ts?b8c3","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/get-order-templates.ts?a3b1","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/get-paginated-order-template-lines.ts?9b12","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/update-order-template-header.ts?1f77","webpack://Msdyn365.Commerce.Online/../../../src/order-templates/update-order-template-line.ts?527b","webpack://Msdyn365.Commerce.Online/../../src/refine-search-by-category.ts?3e65","webpack://Msdyn365.Commerce.Online/../../src/search-by-text.ts?ebe1","webpack://Msdyn365.Commerce.Online/../../src/search-org-unit-locations.ts?d18d","webpack://Msdyn365.Commerce.Online/../../src/update-address.ts?3e4d","webpack://Msdyn365.Commerce.Online/../../src/update-customer-attributes.ts?8d49","webpack://Msdyn365.Commerce.Online/../../src/update-customer-personalization.ts?4aa9","webpack://Msdyn365.Commerce.Online/../../src/update-primary-address.ts?83fa","webpack://Msdyn365.Commerce.Online/../../../src/utilities/QueryResultSettingsProxy.ts?5e44","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/Url-builder/parameterize.ts?f5a5","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/Url-builder/category-url-builder.ts?e564","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/Url-builder/invoice-url-builder.ts?d542","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/Url-builder/product-url-builder.ts?baf1","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/data-structures/dictionary.ts?bab3","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/events/event.ts?15a9","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/extensions/array-extensions.ts?1a2a","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/extensions/enum-extensions.ts?cf51","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/extensions/string-extensions.ts?ab9f","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/extensions/object-extensions.ts?6388","webpack://Msdyn365.Commerce.Online/../../../src/utilities/getRnrKeys.ts?700f","webpack://Msdyn365.Commerce.Online/../../../src/utilities/input-data-parser.ts?027a","webpack://Msdyn365.Commerce.Online/../../../src/utilities/order-templates.ts?d593","webpack://Msdyn365.Commerce.Online/../../../src/utilities/product-inventory-information.ts?0ec6","webpack://Msdyn365.Commerce.Online/../../../src/utilities/product-inventory-utils.ts?58b5","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/promise-queue/finite-promise-queue.ts?77bf","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/promise-queue/promise-queue.ts?e362","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/rng.js?b47d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/regex.js?08ba","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/validate.js?acea","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/stringify.js?6cb1","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/v4.js?0101","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/random/guid.ts?1947","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/random/index.ts?1f9d","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/regex/email-regex.ts?6a6a","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/regex/password-regex.ts?456d","webpack://Msdyn365.Commerce.Online/../../../../src/utilities/regex/phone-regex.ts?9ada","webpack://Msdyn365.Commerce.Online/../../../src/utilities/utils.ts?fbc0","webpack://Msdyn365.Commerce.Online/../../../src/utilities/validate-cartlines-inventory.ts?8b82","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/base-collection-action.ts?ec13","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/get-inventory-refiners.ts?eaa4","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/get-full-products-by-collection.ts?f1fe","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/get-mapped-search-configuration.ts?6cc4","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/get-product-refiner-hierarchy.ts?3937","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/get-refiners-for-collection.ts?56d8","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/actions/url-utils.ts?1541","webpack://Msdyn365.Commerce.Online/./src/modules/search-result-container/list-page-state.ts?b0a4","webpack://Msdyn365.Commerce.Online/./src/search-state-data-action.ts?8223","webpack://Msdyn365.Commerce.Online/./src/data-actions/tab-state-data-action.ts?09b4","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/actions/get-items-in-wishlists.ts?8533","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/actions/get-product-availabilities-wishlist-items.ts?eab4","webpack://Msdyn365.Commerce.Online/../../src/DataActions/BusinessPartnerUsersDataActions.g.ts?c8e5","webpack://Msdyn365.Commerce.Online/../../src/DataActions/BusinessPartnersDataActions.g.ts?502e","webpack://Msdyn365.Commerce.Online/../../src/DataActions/CartsDataActions.g.ts?f2f8","webpack://Msdyn365.Commerce.Online/../../src/DataActions/CatalogsDataActions.g.ts?8b5c","webpack://Msdyn365.Commerce.Online/../../src/DataActions/CategoriesDataActions.g.ts?d9f0","webpack://Msdyn365.Commerce.Online/../../src/DataActions/CommerceListsDataActions.g.ts?d44a","webpack://Msdyn365.Commerce.Online/../../src/DataActions/CustomersDataActions.g.ts?081a","webpack://Msdyn365.Commerce.Online/../../src/DataActions/OrgUnitsDataActions.g.ts?c88f","webpack://Msdyn365.Commerce.Online/../../src/DataActions/ProductListsDataActions.g.ts?81df","webpack://Msdyn365.Commerce.Online/../../src/DataActions/ProductsDataActions.g.ts?8ea2","webpack://Msdyn365.Commerce.Online/../../src/DataActions/RecommendationsDataActions.g.ts?31c0","webpack://Msdyn365.Commerce.Online/../../src/DataActions/SalesOrdersDataActions.g.ts?4e0c","webpack://Msdyn365.Commerce.Online/../../src/DataActions/ScanResultsDataActions.g.ts?42cd","webpack://Msdyn365.Commerce.Online/../../src/DataActions/StoreOperationsDataActions.g.ts?85ae","webpack://Msdyn365.Commerce.Online/../src/DataServiceQuery.ts?8aab","webpack://Msdyn365.Commerce.Online/../src/DataServiceRequest.ts?423e","webpack://Msdyn365.Commerce.Online/../../src/Entities/CommerceTypes.g.ts?34ee","webpack://Msdyn365.Commerce.Online/../../src/Interfaces/ICache.ts?0279","webpack://Msdyn365.Commerce.Online/../src/async-result.ts?1ea5","webpack://Msdyn365.Commerce.Online/../../src/exceptions/ErrorHelper.ts?deca","webpack://Msdyn365.Commerce.Online/../../src/exceptions/ErrorParser.ts?d883","webpack://Msdyn365.Commerce.Online/../../src/exceptions/ProxyErrorSDK.ts?c06e","webpack://Msdyn365.Commerce.Online/../../src/exceptions/ProxyError.ts?f6d3","webpack://Msdyn365.Commerce.Online/../../src/extensions/StringExtensions.ts?6e3d","webpack://Msdyn365.Commerce.Online/../../src/externals/DataJS.New.ts?f131","webpack://Msdyn365.Commerce.Online/../../src/externals/handler.ts?a98d","webpack://Msdyn365.Commerce.Online/../../src/externals/helper.ts?18b4","webpack://Msdyn365.Commerce.Online/../../src/logging/ConsoleEventWriter.ts?1638","webpack://Msdyn365.Commerce.Online/../../src/logging/RetailLogger.ts?9e7e","webpack://Msdyn365.Commerce.Online/../../src/logging/Tracer.ts?faf4","webpack://Msdyn365.Commerce.Online/../src/retail-action.ts?fc97","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { IFinancingStaticDataConfig } from '../modules/financing-static-data/financing-static-data.props.autogenerated';\r\nexport interface IFinancingState {\r\n financingStaticData: IFinancingStaticDataConfig;\r\n}\r\n\r\n/**\r\n * FinancingState - action input\r\n */\r\nexport class FinancingStateInput implements IActionInput {\r\n public getCacheKey = () => `FinancingStaticData`;\r\n public getCacheObjectType = () => 'FinancingStaticData';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\nexport async function financingStateAction(input: FinancingStateInput, ctx: IActionContext): Promise {\r\n return { financingStaticData: {} };\r\n}\r\n\r\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new FinancingStateInput();\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >financingStateAction,\r\n input: createInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n isEmptyOrNullObject\r\n} from '@msdyn365-commerce/core';\r\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { getCardPaymentAcceptPointAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { CardPaymentAcceptPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport get from 'lodash/get';\r\n\r\nexport interface IGetCardPaymentAcceptPointInput {\r\n showBillingAddress?: boolean;\r\n paymenTenderType?: string;\r\n apiSettings: ICommerceApiSettings;\r\n}\r\n\r\n/**\r\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint\r\n */\r\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\r\n public showBillingAddress?: boolean;\r\n public paymenTenderType?: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(input: IGetCardPaymentAcceptPointInput) {\r\n this.showBillingAddress = input.showBillingAddress;\r\n this.paymenTenderType = input.paymenTenderType;\r\n this.apiSettings = input.apiSettings;\r\n }\r\n\r\n public getCacheKey = () =>\r\n buildCacheKey(`CardPaymentAcceptPoint${this.paymenTenderType ? `-${this.paymenTenderType}` : ''}`, this.apiSettings);\r\n public getCacheObjectType = () => `CardPaymentAcceptPoint`;\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createCheckoutPaymentInstrumentInput = (inputData: ICreateActionContext) => {\r\n // @ts-ignore\r\n const { showBillingAddress, paymenTenderType } = inputData.config;\r\n const getCardPaymentAcceptPointInput = {\r\n showBillingAddres: showBillingAddress,\r\n paymenTenderType: paymenTenderType,\r\n apiSettings: inputData.requestContext.apiSettings\r\n };\r\n\r\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\r\n */\r\nexport async function getCardPaymentAcceptPointAction(\r\n input: GetCardPaymentAcceptPointInput,\r\n ctx: IActionContext\r\n): Promise {\r\n // If no cart ID is provided in input, we need to create a cart object\r\n if (!input) {\r\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\r\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\r\n }\r\n\r\n const { showBillingAddress, paymenTenderType } = input;\r\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\r\n ctx.telemetry.exception(error);\r\n throw error;\r\n });\r\n\r\n if (\r\n isEmptyOrNullObject(checkoutState) ||\r\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\r\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\r\n ) {\r\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\r\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\r\n }\r\n\r\n if (!checkoutState.checkoutCart.cart.CartLines || !checkoutState.checkoutCart.cart.CartLines.length) {\r\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\r\n throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\r\n }\r\n\r\n const requestUrl =\r\n typeof ctx.requestContext.url.requestUrl === 'string'\r\n ? new URL(ctx.requestContext.url.requestUrl)\r\n : ctx.requestContext.url.requestUrl;\r\n const origin = get(window, 'location.origin') || requestUrl.origin;\r\n\r\n const cardPaymentAcceptSettings = {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\r\n HostPageOrigin: origin,\r\n AdaptorPath: `${origin}/Connectors/` || origin,\r\n CardPaymentEnabled: false,\r\n CardTokenizationEnabled: true,\r\n ...(!showBillingAddress && { HideBillingAddress: true }),\r\n ...(paymenTenderType && { TenderTypeId: paymenTenderType }),\r\n PaymentAmount: 0\r\n };\r\n\r\n return getCardPaymentAcceptPointAsync(\r\n { callerContext: ctx, bypassCache: 'get' },\r\n checkoutState.checkoutCart.cart.Id,\r\n cardPaymentAcceptSettings,\r\n []\r\n )\r\n .then(cardPaymentAcceptPoint => {\r\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\r\n throw new Error(\r\n '[getCardPaymentAcceptPointAction] Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\r\n );\r\n }\r\n return cardPaymentAcceptPoint;\r\n })\r\n .catch(error => {\r\n ctx.telemetry.exception(error);\r\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\r\n throw error;\r\n });\r\n}\r\n\r\nexport const getCardPaymentAcceptPointActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce/checkout-payment-instrument/get-card-payment-accept-point',\r\n action: >getCardPaymentAcceptPointAction,\r\n input: createCheckoutPaymentInstrumentInput\r\n});\r\n\r\nexport default getCardPaymentAcceptPointActionDataAction;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n isEmptyOrNullObject\r\n} from '@msdyn365-commerce/core';\r\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { getCardPaymentAcceptPointAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { CardPaymentAcceptPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport get from 'lodash/get';\r\n\r\nexport interface IGetCardPaymentAcceptPointInput {\r\n showBillingAddress?: boolean;\r\n paymenTenderType?: string;\r\n apiSettings: ICommerceApiSettings;\r\n}\r\n\r\n/**\r\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint\r\n */\r\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\r\n public showBillingAddress?: boolean;\r\n public paymenTenderType?: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(input: IGetCardPaymentAcceptPointInput) {\r\n this.showBillingAddress = input.showBillingAddress;\r\n this.paymenTenderType = input.paymenTenderType;\r\n this.apiSettings = input.apiSettings;\r\n }\r\n\r\n public getCacheKey = () =>\r\n buildCacheKey(`CardPaymentAcceptPoint${this.paymenTenderType ? `-${this.paymenTenderType}` : ''}`, this.apiSettings);\r\n public getCacheObjectType = () => `CardPaymentAcceptPoint`;\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createCheckoutPaymentInstrumentInput = (inputData: ICreateActionContext) => {\r\n // @ts-ignore\r\n const { showBillingAddress, paymenTenderType } = inputData.config;\r\n const getCardPaymentAcceptPointInput = {\r\n showBillingAddres: showBillingAddress,\r\n paymenTenderType: paymenTenderType,\r\n apiSettings: inputData.requestContext.apiSettings\r\n };\r\n\r\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\r\n */\r\nexport async function getCardPaymentAcceptPointAction(\r\n input: GetCardPaymentAcceptPointInput,\r\n ctx: IActionContext\r\n): Promise {\r\n // If no cart ID is provided in input, we need to create a cart object\r\n if (!input) {\r\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\r\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\r\n }\r\n\r\n const { showBillingAddress, paymenTenderType } = input;\r\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\r\n ctx.telemetry.exception(error);\r\n throw error;\r\n });\r\n\r\n if (\r\n isEmptyOrNullObject(checkoutState) ||\r\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\r\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\r\n ) {\r\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\r\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\r\n }\r\n\r\n if (!checkoutState.checkoutCart.cart.CartLines || !checkoutState.checkoutCart.cart.CartLines.length) {\r\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\r\n throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\r\n }\r\n\r\n const requestUrl =\r\n typeof ctx.requestContext.url.requestUrl === 'string'\r\n ? new URL(ctx.requestContext.url.requestUrl)\r\n : ctx.requestContext.url.requestUrl;\r\n const origin = get(window, 'location.origin') || requestUrl.origin;\r\n\r\n const cardPaymentAcceptSettings = {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\r\n HostPageOrigin: origin,\r\n AdaptorPath: `${origin}/Connectors/` || origin,\r\n CardPaymentEnabled: false,\r\n CardTokenizationEnabled: true,\r\n ...(!showBillingAddress && { HideBillingAddress: true }),\r\n ...(paymenTenderType && { TenderTypeId: paymenTenderType }),\r\n PaymentAmount: checkoutState.checkoutCart.cart.ExtensionProperties?.filter(i => i.Key === 'Deposit_CAP')[0].Value?.DecimalValue\r\n };\r\n\r\n return getCardPaymentAcceptPointAsync(\r\n { callerContext: ctx, bypassCache: 'get' },\r\n checkoutState.checkoutCart.cart.Id,\r\n cardPaymentAcceptSettings,\r\n []\r\n )\r\n .then(cardPaymentAcceptPoint => {\r\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\r\n throw new Error(\r\n '[getCardPaymentAcceptPointAction] Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\r\n );\r\n }\r\n return cardPaymentAcceptPoint;\r\n })\r\n .catch(error => {\r\n ctx.telemetry.exception(error);\r\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\r\n throw error;\r\n });\r\n}\r\n\r\nexport const getCardPaymentAcceptPointActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce/checkout-payment-instrument/get-card-payment-accept-point',\r\n action: >getCardPaymentAcceptPointAction,\r\n input: createCheckoutPaymentInstrumentInput\r\n});\r\n\r\nexport default getCardPaymentAcceptPointActionDataAction;\r\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nexport const componentDictionary = {};\n\ncomponentDictionary['__local__|__local__|themes|koelliker|views|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartlineitem' */\n 'partner/themes/koelliker/views/components/cartlineitem.component.tsx'),\n cn: '__local__-__local__-cartlineitem'\n };\ncomponentDictionary['__local__|__local__|themes|koelliker|views|components|checkout-side-simulation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-side-simulation' */\n 'partner/themes/koelliker/views/components/checkout-side-simulation.component.tsx'),\n cn: '__local__-__local__-checkout-side-simulation'\n };\ncomponentDictionary['__local__|__local__|themes|koelliker|views|components|financing'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-financing' */\n 'partner/themes/koelliker/views/components/financing.component.tsx'),\n cn: '__local__-__local__-financing'\n };\ncomponentDictionary['__local__|__local__|themes|koelliker|views|components|product'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product' */\n 'partner/themes/koelliker/views/components/product.component.tsx'),\n cn: '__local__-__local__-product'\n };\ncomponentDictionary['__local__|__local__|themes|koelliker|views|components|promocode'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-promocode' */\n 'partner/themes/koelliker/views/components/promocode.component.tsx'),\n cn: '__local__-__local__-promocode'\n };\ncomponentDictionary['__local__|__local__|themes|koelliker|views|components|stepper'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stepper' */\n 'partner/themes/koelliker/views/components/stepper.component.tsx'),\n cn: '__local__-__local__-stepper'\n };\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-cartlineitem' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/cartlineitem.component.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cartlineitem'\n };\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|promocode'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-promocode' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/promocode.component.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-promocode'\n };\ncomponentDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-carticon' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/components/carticon.component.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-carticon'\n };\ncomponentDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-cartlineitem' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/components/cartlineitem.component.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-cartlineitem'\n };\ncomponentDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|components|product-v2'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-product-v2' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/components/product-v2.component.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-product-v2'\n };\ncomponentDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|components|product'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-product' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/components/product.component.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-product'\n };\ncomponentDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|components|promocode'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-promocode' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/components/promocode.component.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-promocode'\n };","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\nconst { log, error } = console;\nconst detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\nconst handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n}\n\nconst handleMissingImplementationDetails = (functionName, connectorName, connectorType) => {\n error('----ERROR: CONNECTOR MISSING IMPLEMENTATION DETAILS-----');\n error('Missing function ' + functionName + ' from ' + connectorType + ' implementation for experimentation connector ' + connectorName);\n throw new Error('Connector missing implementation details');\n}\n\nconst verifySegmentationRegistration = (connectorName) => {\n const segmentationProvider = connectorDictionary[connectorName].provider;\n try {\n if (!segmentationProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!segmentationProvider.__proto__.getSegmentations) {\n handleMissingImplementationDetails('getSegmentations', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst isServer = ()=>{\n return ! (typeof window != 'undefined' && window.document);\n}\n\nconst verifyGeoLookupRegistration = (connectorName) => {\n const geoLookupProvider = connectorDictionary[connectorName].provider;\n try {\n if (!geoLookupProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!geoLookupProvider.__proto__.getGeoInformation) {\n handleMissingImplementationDetails('getGeoInformation', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst verifyExperimentationReigstration = (connectorName) => {\n const connectorImpl = connectorDictionary[connectorName].provider;\n const connectorListenerImpl = connectorDictionary[connectorName].listener;\n try {\n if (!connectorImpl.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getConfigForClientSideInit) {\n handleMissingImplementationDetails('getConfigForClientSideInit', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getExperiments) {\n handleMissingImplementationDetails('getExperiments', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getVariantsForUser) {\n handleMissingImplementationDetails('getVariantsForUser', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.activateExperiment) {\n handleMissingImplementationDetails('activateExperiment', connectorName, 'provider');\n }\n if (!connectorListenerImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'listener');\n }\n if (!connectorListenerImpl.__proto__.logEvent) {\n handleMissingImplementationDetails('logEvent', connectorName, 'listener');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nexport const connectorDictionary = {};\n\n\n {\n const connectorName = 'msdyn365-exp-test';\n \n let connectorProviderImpl = require('@msdyn365-commerce-modules/msdyn365-exp-test-connector/dist/lib/connectors/msdyn365-exp-test/msdyn365-exp-test.provider');\n let connectorListenerImpl = require('@msdyn365-commerce-modules/msdyn365-exp-test-connector/dist/lib/connectors/msdyn365-exp-test/msdyn365-exp-test.listener');\n let connectorDomainsList = 'https://msdyn365-exp-test.com ';\n if (!connectorProviderImpl.default) {\n throw new Error('Exp Connector provider msdyn365-exp-test does not have a default export. Check the provider file of the connector for a default export.');\n }\n if (!connectorListenerImpl.default) {\n throw new Error('Exp Connector listener msdyn365-exp-test does not have a default export. Check the listener file of the connector for a default export.');\n }\n connectorDictionary[connectorName] = {provider: connectorProviderImpl.default, listener: connectorListenerImpl.default, connectorDomains: connectorDomainsList};\n }\n\nexport const validateConnectorRegistration = () => {\n \n verifyExperimentationReigstration('msdyn365-exp-test');\n};","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n \n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n try {\n\n\n isNotRegistered('aad-generic') && (binding.modules['aad-generic'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-aad-generic' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'aad-generic',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic'\n });\n \n\n isNotRegistered('accordion') && (binding.modules['accordion'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion'),\n $type: 'moduleDefinition',\n da: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'accordion',\n p: 'accordion',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion'\n });\n \n\n isNotRegistered('accordion-item') && (binding.modules['accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion-item' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item'),\n $type: 'moduleDefinition',\n da: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'accordion-item',\n p: 'accordion',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item'\n });\n \n\n isNotRegistered('account-address-tile') && (binding.modules['account-address-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-address-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-address-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile'\n });\n \n\n isNotRegistered('account-customer-balance') && (binding.modules['account-customer-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance'),\n $type: 'contentModule',\n da: [{name:'b2bUserInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user', runOn: 0},{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-customer-balance',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance'\n });\n \n\n isNotRegistered('account-customer-balance-tile') && (binding.modules['account-customer-balance-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile'),\n $type: 'contentModule',\n da: [{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-customer-balance-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile'\n });\n \n\n isNotRegistered('account-generic-tile') && (binding.modules['account-generic-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-generic-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-generic-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile'\n });\n \n\n isNotRegistered('account-invoice-tile') && (binding.modules['account-invoice-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-invoice-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile'),\n $type: 'contentModule',\n da: [{name:'customerBalance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-invoice-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile'\n });\n \n\n isNotRegistered('account-loyalty') && (binding.modules['account-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-loyalty',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty'\n });\n \n\n isNotRegistered('account-loyalty-tile') && (binding.modules['account-loyalty-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-loyalty-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile'\n });\n \n\n isNotRegistered('account-management-address') && (binding.modules['account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-account-management-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-management-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address'\n });\n \n\n isNotRegistered('account-order-templates-tile') && (binding.modules['account-order-templates-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-order-templates-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-order-templates-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile'\n });\n \n\n isNotRegistered('account-profile') && (binding.modules['account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile'),\n $type: 'contentModule',\n da: [{name:'attributeDefinitions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-profile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile'\n });\n \n\n isNotRegistered('account-profile-edit') && (binding.modules['account-profile-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile-edit' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-profile-edit',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit'\n });\n \n\n isNotRegistered('account-welcome-tile') && (binding.modules['account-welcome-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-welcome-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile'),\n $type: 'contentModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-welcome-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile'\n });\n \n\n isNotRegistered('account-wishlist-tile') && (binding.modules['account-wishlist-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-wishlist-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile'),\n $type: 'contentModule',\n da: [{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-wishlist-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile'\n });\n \n\n isNotRegistered('active-image') && (binding.modules['active-image'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-active-image-active-image' */\n '@msdyn365-commerce-modules/active-image/dist/lib/modules/active-image/active-image'),\n $type: 'contentModule',\n da: [{name:'products', path:'@msdyn365-commerce-modules/active-image/dist/lib/modules/actions/get-active-image-products', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'active-image',\n p: 'active-image',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/active-image/dist/lib/modules/active-image'\n });\n \n\n isNotRegistered('adventureworks') && (binding.modules['adventureworks'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-adventureworks' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/adventureworks'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['active-image','b2b-requests-status','business-organization-list','buybox','cart-icon','cart','content-block','header','image-list','navigation-menu','order-template-list','promo-banner','quickview','ratings-histogram','reviews-list','search-result-container-v2','search-result-container','search','store-selector','text-block','write-review'],\n iNM: true,\n ns: '@msdyn365-commerce-theme',\n n: 'adventureworks',\n p: 'adventureworks-theme-kit',\n \n pdp: '',\n \n themeSettings: 'adventureworks.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks'\n });\n \n\n isNotRegistered('b2b-requests-status') && (binding.modules['b2b-requests-status'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-b2b-requests-status' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status/b2b-requests-status'),\n $type: 'contentModule',\n da: [{name:'b2bUserInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'operationRequests', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-business-partner-operation-requests', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'b2b-requests-status',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status'\n });\n \n\n isNotRegistered('b2b-requests-tile') && (binding.modules['b2b-requests-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-b2b-requests-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile/b2b-requests-tile'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'b2b-requests-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile'\n });\n \n\n isNotRegistered('back-top-footer') && (binding.modules['back-top-footer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-back-top-footer' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer/back-top-footer'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'back-top-footer',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer'\n });\n \n\n isNotRegistered('breadcrumb') && (binding.modules['breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-breadcrumb-breadcrumb' */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb'),\n $type: 'contentModule',\n da: [{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'categoryPaths', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'breadcrumb',\n p: 'breadcrumb',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb'\n });\n \n\n isNotRegistered('bulk-purchase') && (binding.modules['bulk-purchase'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-bulk-purchase-bulk-purchase' */\n '@msdyn365-commerce-modules/bulk-purchase/dist/lib/modules/bulk-purchase/bulk-purchase'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 1},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-dimensions-with-availabilities', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'bulk-purchase',\n p: 'bulk-purchase',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/bulk-purchase/dist/lib/modules/bulk-purchase'\n });\n \n\n isNotRegistered('business-account-address') && (binding.modules['business-account-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-business-account-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-account-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address'\n });\n \n\n isNotRegistered('business-organization-list') && (binding.modules['business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-organization-list-business-organization-list' */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-organization-list',\n p: 'business-organization-list',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list'\n });\n \n\n isNotRegistered('business-partners') && (binding.modules['business-partners'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-partners-business-partners' */\n '@msdyn365-commerce-modules/business-partners/dist/lib/modules/business-partners/business-partners'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-partners',\n p: 'business-partners',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-partners/dist/lib/modules/business-partners'\n });\n \n\n isNotRegistered('business-sign-up') && (binding.modules['business-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-account-management-business-sign-up' */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-sign-up',\n p: 'business-account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up'\n });\n \n\n isNotRegistered('buybox') && (binding.modules['buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-buybox' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'buybox',\n p: 'buybox',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox'\n });\n \n\n isNotRegistered('carousel') && (binding.modules['carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-carousel-carousel' */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'carousel',\n p: 'carousel',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel'\n });\n \n\n isNotRegistered('cart') && (binding.modules['cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'cartLinesPickUpOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-pickup-options-for-cartlines', runOn: 0},{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart'\n });\n \n\n isNotRegistered('cart-icon') && (binding.modules['cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart-icon' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart-icon',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon'\n });\n \n\n isNotRegistered('catalog-picker') && (binding.modules['catalog-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-catalog-picker-catalog-picker' */\n '@msdyn365-commerce-modules/catalog-picker/dist/lib/modules/catalog-picker/catalog-picker'),\n $type: 'contentModule',\n da: [{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'catalog-picker',\n p: 'catalog-picker',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/catalog-picker/dist/lib/modules/catalog-picker'\n });\n \n\n isNotRegistered('category-page-summary') && (binding.modules['category-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-category-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'category-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary'\n });\n \n\n isNotRegistered('check-in-for-pickup') && (binding.modules['check-in-for-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-check-in-for-pickup-check-in-for-pickup' */\n '@msdyn365-commerce-modules/check-in-for-pickup/dist/lib/modules/check-in-for-pickup/check-in-for-pickup'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'check-in-for-pickup',\n p: 'check-in-for-pickup',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/check-in-for-pickup/dist/lib/modules/check-in-for-pickup'\n });\n \n\n isNotRegistered('checkout') && (binding.modules['checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout'),\n $type: 'containerModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout'\n });\n \n\n isNotRegistered('checkout-apple-pay') && (binding.modules['checkout-apple-pay'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-apple-pay' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-apple-pay/checkout-apple-pay'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-apple-pay/actions/get-card-payment-accept-point', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-apple-pay',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-apple-pay'\n });\n \n\n isNotRegistered('checkout-billing-address') && (binding.modules['checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-billing-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address'),\n $type: 'contentModule',\n da: [{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-billing-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address'\n });\n \n\n isNotRegistered('checkout-customer-account-payment') && (binding.modules['checkout-customer-account-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'creditBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-customer-account-payment',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment'\n });\n \n\n isNotRegistered('checkout-delivery-options') && (binding.modules['checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-delivery-options' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-delivery-options',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options'\n });\n \n\n isNotRegistered('checkout-express') && (binding.modules['checkout-express'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-express' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express/checkout-express'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express/actions/get-card-payment-accept-point', runOn: 1},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-express',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express'\n });\n \n\n isNotRegistered('checkout-express-payment-container') && (binding.modules['checkout-express-payment-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-express-payment-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express-payment-container/checkout-express-payment-container'),\n $type: 'containerModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-express-payment-container',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express-payment-container'\n });\n \n\n isNotRegistered('checkout-gift-card') && (binding.modules['checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-gift-card' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-gift-card',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card'\n });\n \n\n isNotRegistered('checkout-guest-profile') && (binding.modules['checkout-guest-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-guest-profile' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-guest-profile',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile'\n });\n \n\n isNotRegistered('checkout-loyalty') && (binding.modules['checkout-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-loyalty' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'loyaltyTransactionEstimation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-loyalty',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty'\n });\n \n\n isNotRegistered('checkout-order-confirmation') && (binding.modules['checkout-order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-order-confirmation',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation'\n });\n \n\n isNotRegistered('checkout-payment-instrument') && (binding.modules['checkout-payment-instrument'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-payment-instrument',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument'\n });\n \n\n isNotRegistered('checkout-pickup') && (binding.modules['checkout-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-pickup' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-pickup',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup'\n });\n \n\n isNotRegistered('checkout-section-container') && (binding.modules['checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-section-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container'),\n $type: 'containerModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-section-container',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container'\n });\n \n\n isNotRegistered('checkout-shipping-address') && (binding.modules['checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-shipping-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-shipping-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address'\n });\n \n\n isNotRegistered('checkout-terms-and-conditions') && (binding.modules['checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-terms-and-conditions',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions'\n });\n \n\n isNotRegistered('content-block') && (binding.modules['content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-content-block-content-block' */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'content-block',\n p: 'content-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block'\n });\n \n\n isNotRegistered('cookie-compliance') && (binding.modules['cookie-compliance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance' */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cookie-compliance',\n p: 'cookie-compliance',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance'\n });\n \n\n isNotRegistered('country-picker') && (binding.modules['country-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-country-picker-country-picker' */\n '@msdyn365-commerce-modules/country-picker/dist/lib/modules/country-picker/country-picker'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'country-picker',\n p: 'country-picker',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/country-picker/dist/lib/modules/country-picker'\n });\n \n\n isNotRegistered('default-container') && (binding.modules['default-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container/default-container'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container'\n });\n \n\n isNotRegistered('default-container-2-slots') && (binding.modules['default-container-2-slots'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container-2-slots' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots/default-container-2-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-2-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots'\n });\n \n\n isNotRegistered('default-container-3-slots') && (binding.modules['default-container-3-slots'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container-3-slots' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots/default-container-3-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-3-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots'\n });\n \n\n isNotRegistered('default-external-script') && (binding.modules['default-external-script'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-external-script' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script/default-external-script'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-external-script',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script'\n });\n \n\n isNotRegistered('default-inline-script') && (binding.modules['default-inline-script'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-inline-script' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script/default-inline-script'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-inline-script',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script'\n });\n \n\n isNotRegistered('default-metatags') && (binding.modules['default-metatags'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-metatags' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags/default-metatags'),\n $type: 'htmlHeadTagsModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-metatags',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags'\n });\n \n\n isNotRegistered('default-page') && (binding.modules['default-page'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-page' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page/default-page'),\n $type: 'pageModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-page',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page'\n });\n \n\n isNotRegistered('default-page-summary') && (binding.modules['default-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-default-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary'\n });\n \n\n isNotRegistered('fabrikam') && (binding.modules['fabrikam'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-fabrikam' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/fabrikam'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','content-block','media-gallery','navigation-menu','promo-banner','text-block'],\n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'fabrikam',\n p: 'fabrikam-design-kit',\n \n pdp: '',\n \n themeSettings: 'fabrikam.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam'\n });\n \n\n isNotRegistered('footer-category') && (binding.modules['footer-category'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-category' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-category',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category'\n });\n \n\n isNotRegistered('footer-item') && (binding.modules['footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-item' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-item',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item'\n });\n \n\n isNotRegistered('gift-card-balance-check') && (binding.modules['gift-card-balance-check'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-gift-card-balance-check' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'gift-card-balance-check',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check'\n });\n \n\n isNotRegistered('header') && (binding.modules['header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-header-header' */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header'),\n $type: 'containerModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'header',\n p: 'header',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header'\n });\n \n\n isNotRegistered('iframe') && (binding.modules['iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-iframe-iframe' */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'iframe',\n p: 'iframe',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe'\n });\n \n\n isNotRegistered('image-list') && (binding.modules['image-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-image-list-image-list' */\n '@msdyn365-commerce-modules/image-list/dist/lib/modules/image-list/image-list'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'image-list',\n p: 'image-list',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/image-list/dist/lib/modules/image-list'\n });\n \n\n isNotRegistered('interactive-feature-collection') && (binding.modules['interactive-feature-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-interactive-feature-collection-interactive-feature-collection' */\n '@msdyn365-commerce-modules/interactive-feature-collection/dist/lib/modules/interactive-feature-collection/interactive-feature-collection'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'interactive-feature-collection',\n p: 'interactive-feature-collection',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/interactive-feature-collection/dist/lib/modules/interactive-feature-collection'\n });\n \n\n isNotRegistered('interactive-feature-item') && (binding.modules['interactive-feature-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-interactive-feature-collection-interactive-feature-item' */\n '@msdyn365-commerce-modules/interactive-feature-collection/dist/lib/modules/interactive-feature-item/interactive-feature-item'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'interactive-feature-item',\n p: 'interactive-feature-collection',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/interactive-feature-collection/dist/lib/modules/interactive-feature-item'\n });\n \n\n isNotRegistered('invoice-details') && (binding.modules['invoice-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-details-invoice-details' */\n '@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details/invoice-details'),\n $type: 'contentModule',\n da: [{name:'invoice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice', runOn: 0},{name:'invoiceDetails', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice-details', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'invoice-details',\n p: 'invoice-details',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details'\n });\n \n\n isNotRegistered('invoices-list') && (binding.modules['invoices-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-invoices-list' */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list'),\n $type: 'contentModule',\n da: [{name:'b2bUserInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user', runOn: 0},{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'customerBalance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'invoices-list',\n p: 'invoice',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list'\n });\n \n\n isNotRegistered('list-page-summary') && (binding.modules['list-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-list-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'list-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary'\n });\n \n\n isNotRegistered('loyalty-sign-up') && (binding.modules['loyalty-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'loyalty-sign-up',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up'\n });\n \n\n isNotRegistered('loyalty-terms') && (binding.modules['loyalty-terms'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-terms' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms'),\n $type: 'containerModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'loyalty-terms',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms'\n });\n \n\n isNotRegistered('map') && (binding.modules['map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-map-map' */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map'),\n $type: 'contentModule',\n da: [{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'map',\n p: 'map',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/map/dist/lib/modules/map'\n });\n \n\n isNotRegistered('media-gallery') && (binding.modules['media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-media-gallery-media-gallery' */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery'),\n $type: 'contentModule',\n da: [{name:'mediaLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id', runOn: 0},{name:'mediaLocationsForSelectedVariant', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-for-selected-variant', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'media-gallery',\n p: 'media-gallery',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery'\n });\n \n\n isNotRegistered('msdyn365-cs-chat-connector') && (binding.modules['msdyn365-cs-chat-connector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-chat-msdyn365-cs-chat-connector' */\n '@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-cs-chat-connector/msdyn365-cs-chat-connector'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'msdyn365-cs-chat-connector',\n p: 'chat',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-cs-chat-connector'\n });\n \n\n isNotRegistered('msdyn365-pva-chat-connector') && (binding.modules['msdyn365-pva-chat-connector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-chat-msdyn365-pva-chat-connector' */\n '@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'getBotFrameworkToken', path:'@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/actions/getBotFrameworkToken.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'msdyn365-pva-chat-connector',\n p: 'chat',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector'\n });\n \n\n isNotRegistered('navigation-menu') && (binding.modules['navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-navigation-menu-navigation-menu' */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'navigation-menu',\n p: 'navigation-menu',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu'\n });\n \n\n isNotRegistered('notifications-list') && (binding.modules['notifications-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-notifications-lists-notifications-list' */\n '@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list/notifications-list'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'notifications-list',\n p: 'notifications-lists',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list'\n });\n \n\n isNotRegistered('order-confirmation') && (binding.modules['order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-confirmation-with-hydrations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-confirmation',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation'\n });\n \n\n isNotRegistered('order-details') && (binding.modules['order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-details' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-details',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details'\n });\n \n\n isNotRegistered('order-history') && (binding.modules['order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-history' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-history',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history'\n });\n \n\n isNotRegistered('order-lookup') && (binding.modules['order-lookup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-lookup' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-lookup/order-lookup'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-lookup',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-lookup'\n });\n \n\n isNotRegistered('order-template') && (binding.modules['order-template'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'orderTemplate', path:'@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-template',\n p: 'order-template',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template'\n });\n \n\n isNotRegistered('order-template-list') && (binding.modules['order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template-list' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list'),\n $type: 'contentModule',\n da: [{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-template-list',\n p: 'order-template',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list'\n });\n \n\n isNotRegistered('organization-users-tile') && (binding.modules['organization-users-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-organization-users-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'organization-users-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile'\n });\n \n\n isNotRegistered('password-reset') && (binding.modules['password-reset'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'password-reset',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset'\n });\n \n\n isNotRegistered('password-reset-verification') && (binding.modules['password-reset-verification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset-verification' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'password-reset-verification',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification'\n });\n \n\n isNotRegistered('place-holder-for-container-preview') && (binding.modules['place-holder-for-container-preview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-place-holder-for-container-preview' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview/place-holder-for-container-preview'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'place-holder-for-container-preview',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview'\n });\n \n\n isNotRegistered('product-collection') && (binding.modules['product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-collection-product-collection' */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection'),\n $type: 'containerModule',\n da: [{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-collection',\n p: 'product-collection',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection'\n });\n \n\n isNotRegistered('product-comparison') && (binding.modules['product-comparison'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-comparison-product-comparison' */\n '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison/product-comparison'),\n $type: 'containerModule',\n da: [{name:'productsData', path:'@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison/actions/get-products-in-product-comparison', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-comparison',\n p: 'product-comparison',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison'\n });\n \n\n isNotRegistered('product-comparison-button') && (binding.modules['product-comparison-button'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-comparison-product-comparison-button' */\n '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-button/product-comparison-button'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-comparison-button',\n p: 'product-comparison',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-button'\n });\n \n\n isNotRegistered('product-comparison-preview') && (binding.modules['product-comparison-preview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-comparison-product-comparison-preview' */\n '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-preview/product-comparison-preview'),\n $type: 'contentModule',\n da: [{name:'productsData', path:'@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-preview/actions/get-products-in-preview-product-comparison', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-comparison-preview',\n p: 'product-comparison',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-preview'\n });\n \n\n isNotRegistered('product-page-summary') && (binding.modules['product-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-product-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'productPageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary'\n });\n \n\n isNotRegistered('product-specification') && (binding.modules['product-specification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-specification-product-specification' */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-specification',\n p: 'product-specification',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification'\n });\n \n\n isNotRegistered('promo-banner') && (binding.modules['promo-banner'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-promo-banner-promo-banner' */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'promo-banner',\n p: 'promo-banner',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner'\n });\n \n\n isNotRegistered('quick-order') && (binding.modules['quick-order'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-quick-order-quick-order' */\n '@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order/quick-order'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'quick-order',\n p: 'quick-order',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order'\n });\n \n\n isNotRegistered('quick-order-grid') && (binding.modules['quick-order-grid'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-quick-order-grid-quick-order-grid' */\n '@msdyn365-commerce-modules/quick-order-grid/dist/lib/modules/quick-order-grid/quick-order-grid'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'quickOrderTemplate', path:'@msdyn365-commerce-modules/quick-order-grid/dist/lib/modules/quick-order-grid/actions/get-product-list', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'quick-order-grid',\n p: 'quick-order-grid',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/quick-order-grid/dist/lib/modules/quick-order-grid'\n });\n \n\n isNotRegistered('quickview') && (binding.modules['quickview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-quickview' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview/quickview'),\n $type: 'containerModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'quickview',\n p: 'buybox',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview'\n });\n \n\n isNotRegistered('ratings-histogram') && (binding.modules['ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram'),\n $type: 'contentModule',\n da: [{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'ratings-histogram',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram'\n });\n \n\n isNotRegistered('reviews-list') && (binding.modules['reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-reviews-list' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0},{name:'reviewsList', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'reviews-list',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list'\n });\n \n\n isNotRegistered('script-injector') && (binding.modules['script-injector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-script-injector' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector/script-injector'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'script-injector',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector'\n });\n \n\n isNotRegistered('search') && (binding.modules['search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-search' */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search'),\n $type: 'contentModule',\n da: [{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search',\n p: 'search',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search/dist/lib/modules/search'\n });\n \n\n isNotRegistered('search-result-container') && (binding.modules['search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-result-container-search-result-container' */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container'),\n $type: 'containerModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'featureProduct', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'listPageState', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection', runOn: 0},{name:'refiners', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search-result-container',\n p: 'search-result-container',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container'\n });\n \n\n isNotRegistered('sign-in') && (binding.modules['sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-in' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'sign-in',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in'\n });\n \n\n isNotRegistered('sign-up') && (binding.modules['sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'sign-up',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up'\n });\n \n\n isNotRegistered('site-picker') && (binding.modules['site-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-site-picker-site-picker' */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'site-picker',\n p: 'site-picker',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker'\n });\n \n\n isNotRegistered('social-share') && (binding.modules['social-share'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'social-share',\n p: 'social-share',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share'\n });\n \n\n isNotRegistered('social-share-item') && (binding.modules['social-share-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share-item' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'social-share-item',\n p: 'social-share',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item'\n });\n \n\n isNotRegistered('spacer') && (binding.modules['spacer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-spacer-spacer' */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'spacer',\n p: 'spacer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer'\n });\n \n\n isNotRegistered('starter') && (binding.modules['starter'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-starter-theme-pack-starter' */\n '@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter/starter'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['content-block','promo-banner','text-block'],\n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'starter',\n p: 'starter-theme-pack',\n \n pdp: '',\n \n themeSettings: 'starter.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter'\n });\n \n\n isNotRegistered('store-selector') && (binding.modules['store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-store-selector-store-selector' */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector'),\n $type: 'containerModule',\n da: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'store-selector',\n p: 'store-selector',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector'\n });\n \n\n isNotRegistered('subscribe') && (binding.modules['subscribe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-subscribe-subscribe' */\n '@msdyn365-commerce-modules/subscribe/dist/lib/modules/subscribe/subscribe'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'subscribe',\n p: 'subscribe',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/subscribe/dist/lib/modules/subscribe'\n });\n \n\n isNotRegistered('tab') && (binding.modules['tab'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab'),\n $type: 'moduleDefinition',\n da: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tab',\n p: 'tab',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab'\n });\n \n\n isNotRegistered('tab-item') && (binding.modules['tab-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab-item' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item'),\n $type: 'moduleDefinition',\n da: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tab-item',\n p: 'tab',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item'\n });\n \n\n isNotRegistered('text-block') && (binding.modules['text-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-text-block-text-block' */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'text-block',\n p: 'text-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block'\n });\n \n\n isNotRegistered('tile-list') && (binding.modules['tile-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tile-list-tile-list' */\n '@msdyn365-commerce-modules/tile-list/dist/lib/modules/tile-list/tile-list'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tile-list',\n p: 'tile-list',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tile-list/dist/lib/modules/tile-list'\n });\n \n\n isNotRegistered('tile-list-item') && (binding.modules['tile-list-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tile-list-tile-list-item' */\n '@msdyn365-commerce-modules/tile-list/dist/lib/modules/tile-list-item/tile-list-item'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tile-list-item',\n p: 'tile-list',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tile-list/dist/lib/modules/tile-list-item'\n });\n \n\n isNotRegistered('video-player') && (binding.modules['video-player'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-video-player-video-player' */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'video-player',\n p: 'video-player',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player'\n });\n \n\n isNotRegistered('wishlist-items') && (binding.modules['wishlist-items'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-wishlist-wishlist-items' */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'productAvailability', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'wishlist-items',\n p: 'wishlist',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items'\n });\n \n\n isNotRegistered('write-review') && (binding.modules['write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-write-review' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'write-review',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review'\n });\n \n\n { \n const actionPath = '@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/actions/getBotFrameworkToken.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/actions/getBotFrameworkToken.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n registerActionId(actionPath);\n }\n\n if (isNotRegistered('accordion')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('accordion-item')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-address-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-address-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-invoice-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-invoice-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-loyalty-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-profile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-profile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-welcome-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-wishlist-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('active-image')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/active-image/dist/lib/modules/actions/get-active-image-products';\n let dataAction = require('@msdyn365-commerce-modules/active-image/dist/lib/modules/actions/get-active-image-products');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('b2b-requests-status')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-business-partner-operation-requests';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-business-partner-operation-requests');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('b2b-requests-status')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('b2b-requests-status')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('b2b-requests-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('bulk-purchase')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('bulk-purchase')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-dimensions-with-availabilities';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-dimensions-with-availabilities');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('bulk-purchase')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-organization-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-organization-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-pickup-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-pickup-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('catalog-picker')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('category-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-apple-pay')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-apple-pay/actions/get-card-payment-accept-point';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-apple-pay/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-apple-pay')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-express')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express/actions/get-card-payment-accept-point';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-express')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-express')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-express-payment-container')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-gift-card')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-guest-profile')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-guest-profile')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-section-container')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-terms-and-conditions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('default-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoice-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoice-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice-details';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice-details');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('list-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-sign-up')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-sign-up')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-terms')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('map')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('msdyn365-pva-chat-connector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/actions/getBotFrameworkToken.action';\n let dataAction = require('@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/actions/getBotFrameworkToken.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('msdyn365-pva-chat-connector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('navigation-menu')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-confirmation-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-confirmation-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template';\n let dataAction = require('@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('organization-users-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('organization-users-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-collection')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-comparison')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison/actions/get-products-in-product-comparison';\n let dataAction = require('@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison/actions/get-products-in-product-comparison');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-comparison-preview')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-preview/actions/get-products-in-preview-product-comparison';\n let dataAction = require('@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-preview/actions/get-products-in-preview-product-comparison');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-specification')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-specification')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order-grid')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/quick-order-grid/dist/lib/modules/quick-order-grid/actions/get-product-list';\n let dataAction = require('@msdyn365-commerce-modules/quick-order-grid/dist/lib/modules/quick-order-grid/actions/get-product-list');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order-grid')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order-grid')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quick-order-grid')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quickview')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quickview')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('quickview')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('ratings-histogram')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('ratings-histogram')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tab')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tab-item')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists';\n let dataAction = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items';\n let dataAction = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('write-review')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('write-review')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n \n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n try {\n\n\n isNotRegistered('aiways') && (binding.modules['aiways'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-aiways' */\n 'partner/themes/koelliker/koelliker.tsx'),\n $type: 'themeModule',\n da: [{name:'financingStaticData', path:'actions/get-financing-static-data', moduleName: 'buybox',runOn: 0}],\n definitionExtensions: ['buybox'],\n iNM: false,\n ns: '__local__',\n n: 'aiways',\n p: '__local__',\n \n pdp: 'src/themes/koelliker/koelliker.definition.json',\n \n themeSettings: 'aiways.theme.settings.json',\n md: 'src/themes/aiways'\n });\n \n\n isNotRegistered('checkout-contract') && (binding.modules['checkout-contract'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-contract' */\n 'partner/modules/checkout-contract/checkout-contract.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-contract',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-contract'\n });\n \n\n isNotRegistered('checkout-deposit-payment') && (binding.modules['checkout-deposit-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-deposit-payment' */\n 'partner/modules/checkout-deposit-payment/checkout-deposit-payment.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-deposit-payment',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-deposit-payment'\n });\n \n\n isNotRegistered('checkout-financing') && (binding.modules['checkout-financing'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-financing' */\n 'partner/modules/checkout-financing/checkout-financing.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'financingStaticData', path:'actions/get-financing-static-data', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-financing',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-financing'\n });\n \n\n isNotRegistered('checkout-nexi') && (binding.modules['checkout-nexi'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-nexi' */\n 'partner/modules/checkout-nexi/checkout-nexi.tsx'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'modules/checkout-nexi/actions/get-card-payment-accept-point', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-nexi',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-nexi'\n });\n \n\n isNotRegistered('checkout-payment-instrument-custom') && (binding.modules['checkout-payment-instrument-custom'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-payment-instrument-custom' */\n 'partner/modules/checkout-payment-instrument-custom/checkout-payment-instrument-custom.tsx'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'modules/checkout-payment-instrument-custom/actions/get-card-payment-accept-point', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-payment-instrument-custom',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-payment-instrument-custom'\n });\n \n\n isNotRegistered('checkout-section-container-custom') && (binding.modules['checkout-section-container-custom'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-section-container-custom' */\n 'partner/modules/checkout-section-container-custom/checkout-section-container-custom.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-section-container-custom',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-section-container-custom'\n });\n \n\n isNotRegistered('custom-checkout-shipping-address') && (binding.modules['custom-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-custom-checkout-shipping-address' */\n 'partner/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'custom-checkout-shipping-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/custom-checkout-shipping-address'\n });\n \n\n isNotRegistered('custom-code') && (binding.modules['custom-code'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-custom-code' */\n 'partner/modules/custom-code/custom-code.tsx'),\n $type: 'scriptModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'custom-code',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/custom-code'\n });\n \n\n isNotRegistered('financing-static-data') && (binding.modules['financing-static-data'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-financing-static-data' */\n 'partner/modules/financing-static-data/financing-static-data.tsx'),\n $type: 'contentModule',\n da: [{name:'financingStaticData', path:'actions/get-financing-static-data', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'financing-static-data',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/financing-static-data'\n });\n \n\n isNotRegistered('koelliker') && (binding.modules['koelliker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-koelliker' */\n 'partner/themes/koelliker/koelliker.tsx'),\n $type: 'themeModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', moduleName: 'checkout-shipping-address',runOn: 1},{name:'financingStaticData', path:'actions/get-financing-static-data', moduleName: 'buybox',runOn: 0},{name:'financingStaticData', path:'actions/get-financing-static-data', moduleName: 'order-details',runOn: 0}],\n definitionExtensions: ['account-profile','buybox','cart','checkout-shipping-address','checkout','content-block','media-gallery','navigation-menu','order-details','promo-banner','sign-up','text-block'],\n iNM: false,\n ns: '__local__',\n n: 'koelliker',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'koelliker.theme.settings.json',\n md: 'src/themes/koelliker'\n });\n \n\n isNotRegistered('seres') && (binding.modules['seres'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-seres' */\n 'partner/themes/koelliker/koelliker.tsx'),\n $type: 'themeModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'seres',\n p: '__local__',\n \n pdp: 'src/themes/koelliker/koelliker.definition.json',\n \n themeSettings: 'seres.theme.settings.json',\n md: 'src/themes/seres'\n });\n \n\n isNotRegistered('stepper-static-data') && (binding.modules['stepper-static-data'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stepper-static-data' */\n 'partner/modules/stepper-static-data/stepper-static-data.tsx'),\n $type: 'contentModule',\n da: [{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'stepper-static-data',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/stepper-static-data'\n });\n \n\n if (isNotRegistered('aiways')){\n const sanitizedActionPath = 'actions/get-financing-static-data';\n let dataAction = require('partner/actions/get-financing-static-data');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-contract')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-contract')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-financing')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-financing')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-financing')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-financing')){\n const sanitizedActionPath = 'actions/get-financing-static-data';\n let dataAction = require('partner/actions/get-financing-static-data');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-nexi')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-nexi')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-nexi')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-nexi')){\n const sanitizedActionPath = 'modules/checkout-nexi/actions/get-card-payment-accept-point';\n let dataAction = require('partner/modules/checkout-nexi/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument-custom')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument-custom')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument-custom')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument-custom')){\n const sanitizedActionPath = 'modules/checkout-payment-instrument-custom/actions/get-card-payment-accept-point';\n let dataAction = require('partner/modules/checkout-payment-instrument-custom/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('custom-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('financing-static-data')){\n const sanitizedActionPath = 'actions/get-financing-static-data';\n let dataAction = require('partner/actions/get-financing-static-data');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('koelliker')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('koelliker')){\n const sanitizedActionPath = 'actions/get-financing-static-data';\n let dataAction = require('partner/actions/get-financing-static-data');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('koelliker')){\n const sanitizedActionPath = 'actions/get-financing-static-data';\n let dataAction = require('partner/actions/get-financing-static-data');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('stepper-static-data')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nexport const viewDictionary = {};\n\nviewDictionary['__local__|__local__|modules|checkout-contract|checkout-contract'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-contract' */\n 'partner/modules/checkout-contract/checkout-contract.view.tsx'),\n cn: '__local__-__local__-checkout-contract'\n };\nviewDictionary['__local__|__local__|modules|checkout-deposit-payment|checkout-deposit-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-deposit-payment' */\n 'partner/modules/checkout-deposit-payment/checkout-deposit-payment.view.tsx'),\n cn: '__local__-__local__-checkout-deposit-payment'\n };\nviewDictionary['__local__|__local__|modules|checkout-financing|checkout-financing'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-financing' */\n 'partner/modules/checkout-financing/checkout-financing.view.tsx'),\n cn: '__local__-__local__-checkout-financing'\n };\nviewDictionary['__local__|__local__|modules|checkout-nexi|checkout-nexi'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-nexi' */\n 'partner/modules/checkout-nexi/checkout-nexi.view.tsx'),\n cn: '__local__-__local__-checkout-nexi'\n };\nviewDictionary['__local__|__local__|modules|checkout-payment-instrument-custom|checkout-payment-instrument-custom'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-payment-instrument-custom' */\n 'partner/modules/checkout-payment-instrument-custom/checkout-payment-instrument-custom.view.tsx'),\n cn: '__local__-__local__-checkout-payment-instrument-custom'\n };\nviewDictionary['__local__|__local__|modules|checkout-section-container-custom|checkout-section-container-custom'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-section-container-custom' */\n 'partner/modules/checkout-section-container-custom/checkout-section-container-custom.view.tsx'),\n cn: '__local__-__local__-checkout-section-container-custom'\n };\nviewDictionary['__local__|__local__|modules|custom-checkout-shipping-address|custom-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-custom-checkout-shipping-address' */\n 'partner/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.view.tsx'),\n cn: '__local__-__local__-custom-checkout-shipping-address'\n };\nviewDictionary['__local__|__local__|themes|aiways|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/aiways/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-profile' */\n 'partner/themes/koelliker/views/account-profile.view.tsx'),\n cn: '__local__-__local__-account-profile'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-buybox' */\n 'partner/themes/koelliker/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cart' */\n 'partner/themes/koelliker/views/cart.view.tsx'),\n cn: '__local__-__local__-cart'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-delivery-options' */\n 'partner/themes/koelliker/views/checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/koelliker/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/koelliker/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-navigation-menu' */\n 'partner/themes/koelliker/views/navigation-menu.view.tsx'),\n cn: '__local__-__local__-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/koelliker/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/koelliker/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-history' */\n 'partner/themes/koelliker/views/order-history.view.tsx'),\n cn: '__local__-__local__-order-history'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-ratings-histogram' */\n 'partner/themes/koelliker/views/ratings-histogram.view.tsx'),\n cn: '__local__-__local__-ratings-histogram'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-reviews-list' */\n 'partner/themes/koelliker/views/reviews-list.view.tsx'),\n cn: '__local__-__local__-reviews-list'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search-result-container' */\n 'partner/themes/koelliker/views/search-result-container.view.tsx'),\n cn: '__local__-__local__-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|koelliker|views|sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-up' */\n 'partner/themes/koelliker/views/sign-up.view.tsx'),\n cn: '__local__-__local__-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion-item|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion-item' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item.view.js'),\n cn: '@msdyn365-commerce-modules-accordion-accordion-item'\n };\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion|accordion'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion.view.js'),\n cn: '@msdyn365-commerce-modules-accordion-accordion'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|aad-generic|aad-generic'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-aad-generic' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-aad-generic'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-address-tile|account-address-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-address-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-address-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance-tile|account-customer-balance-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance|account-customer-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-customer-balance'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-generic-tile|account-generic-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-generic-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-generic-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-invoice-tile|account-invoice-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-invoice-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-invoice-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty-tile|account-loyalty-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-loyalty-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty|account-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-loyalty'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-order-templates-tile|account-order-templates-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-order-templates-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-order-templates-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile-edit|account-profile-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile-edit' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-profile-edit'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile|account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-welcome-tile|account-welcome-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-welcome-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-welcome-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-wishlist-tile|account-wishlist-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-wishlist-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-wishlist-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|b2b-requests-status|b2b-requests-status'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-b2b-requests-status' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status/b2b-requests-status.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-b2b-requests-status'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|b2b-requests-tile|b2b-requests-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-b2b-requests-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile/b2b-requests-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-b2b-requests-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-sign-up|loyalty-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-loyalty-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-terms|loyalty-terms'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-terms' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-loyalty-terms'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|organization-users-tile|organization-users-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-organization-users-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-organization-users-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset-verification|password-reset-verification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset-verification' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-password-reset-verification'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset|password-reset'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-password-reset'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-in|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-in' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-sign-in'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-up|sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|active-image|modules|active-image|active-image'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-active-image-active-image' */\n '@msdyn365-commerce-modules/active-image/dist/lib/modules/active-image/active-image.view.js'),\n cn: '@msdyn365-commerce-modules-active-image-active-image'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|account-management-address|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-account-management-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-account-management-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|business-account-address|business-account-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-business-account-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-business-account-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-billing-address|checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-billing-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-checkout-billing-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-shipping-address|checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-shipping-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-checkout-shipping-address'\n };\nviewDictionary['@msdyn365-commerce-modules|breadcrumb|modules|breadcrumb|breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-breadcrumb-breadcrumb' */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb.view.js'),\n cn: '@msdyn365-commerce-modules-breadcrumb-breadcrumb'\n };\nviewDictionary['@msdyn365-commerce-modules|bulk-purchase|modules|bulk-purchase|bulk-purchase'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-bulk-purchase-bulk-purchase' */\n '@msdyn365-commerce-modules/bulk-purchase/dist/lib/modules/bulk-purchase/bulk-purchase.view.js'),\n cn: '@msdyn365-commerce-modules-bulk-purchase-bulk-purchase'\n };\nviewDictionary['@msdyn365-commerce-modules|business-account-management|modules|business-sign-up|business-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-account-management-business-sign-up' */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-business-account-management-business-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|business-organization-list|modules|business-organization-list|business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-organization-list-business-organization-list' */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list.view.js'),\n cn: '@msdyn365-commerce-modules-business-organization-list-business-organization-list'\n };\nviewDictionary['@msdyn365-commerce-modules|business-partners|modules|business-partners|business-partners'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-partners-business-partners' */\n '@msdyn365-commerce-modules/business-partners/dist/lib/modules/business-partners/business-partners.view.js'),\n cn: '@msdyn365-commerce-modules-business-partners-business-partners'\n };\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|buybox|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-buybox' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-buybox-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|quickview|quickview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-quickview' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview/quickview.view.js'),\n cn: '@msdyn365-commerce-modules-buybox-quickview'\n };\nviewDictionary['@msdyn365-commerce-modules|carousel|modules|carousel|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-carousel-carousel' */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel.view.js'),\n cn: '@msdyn365-commerce-modules-carousel-carousel'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart-icon|cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart-icon' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|catalog-picker|modules|catalog-picker|catalog-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-catalog-picker-catalog-picker' */\n '@msdyn365-commerce-modules/catalog-picker/dist/lib/modules/catalog-picker/catalog-picker.view.js'),\n cn: '@msdyn365-commerce-modules-catalog-picker-catalog-picker'\n };\nviewDictionary['@msdyn365-commerce-modules|chat|modules|msdyn365-cs-chat-connector|msdyn365-cs-chat-connector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-chat-msdyn365-cs-chat-connector' */\n '@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-cs-chat-connector/msdyn365-cs-chat-connector.view.js'),\n cn: '@msdyn365-commerce-modules-chat-msdyn365-cs-chat-connector'\n };\nviewDictionary['@msdyn365-commerce-modules|chat|modules|msdyn365-pva-chat-connector|msdyn365-pva-chat-connector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-chat-msdyn365-pva-chat-connector' */\n '@msdyn365-commerce-modules/chat/dist/lib/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.view.js'),\n cn: '@msdyn365-commerce-modules-chat-msdyn365-pva-chat-connector'\n };\nviewDictionary['@msdyn365-commerce-modules|check-in-for-pickup|modules|check-in-for-pickup|check-in-for-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-check-in-for-pickup-check-in-for-pickup' */\n '@msdyn365-commerce-modules/check-in-for-pickup/dist/lib/modules/check-in-for-pickup/check-in-for-pickup.view.js'),\n cn: '@msdyn365-commerce-modules-check-in-for-pickup-check-in-for-pickup'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-apple-pay|checkout-apple-pay'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-apple-pay' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-apple-pay/checkout-apple-pay.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-apple-pay'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-customer-account-payment|checkout-customer-account-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-delivery-options|checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-delivery-options' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-delivery-options'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-express-payment-container|checkout-express-payment-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-express-payment-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express-payment-container/checkout-express-payment-container.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-express-payment-container'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-express|checkout-express'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-express' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-express/checkout-express.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-express'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-gift-card|checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-gift-card' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-gift-card'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-guest-profile|checkout-guest-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-guest-profile' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-guest-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-loyalty|checkout-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-loyalty' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-loyalty'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-payment-instrument|checkout-payment-instrument'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-pickup|checkout-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-pickup' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-pickup'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-section-container|checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-section-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-section-container'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-terms-and-conditions|checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|gift-card-balance-check|gift-card-balance-check'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-gift-card-balance-check' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-gift-card-balance-check'\n };\nviewDictionary['@msdyn365-commerce-modules|content-block|modules|content-block|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-content-block-content-block' */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block.view.js'),\n cn: '@msdyn365-commerce-modules-content-block-content-block'\n };\nviewDictionary['@msdyn365-commerce-modules|cookie-compliance|modules|cookie-compliance|cookie-compliance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance' */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance.view.js'),\n cn: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance'\n };\nviewDictionary['@msdyn365-commerce-modules|country-picker|modules|country-picker|country-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-country-picker-country-picker' */\n '@msdyn365-commerce-modules/country-picker/dist/lib/modules/country-picker/country-picker.view.js'),\n cn: '@msdyn365-commerce-modules-country-picker-country-picker'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-cart' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/cart.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-header' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/header.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-header'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-order-details' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-details.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-order-details'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-order-history' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-history.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-order-history'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-ratings-histogram' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-reviews-list' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/reviews-list.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-search-result-container' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/search-result-container.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-category|footer-category'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-category' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-category'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-item|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-item' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-item'\n };\nviewDictionary['@msdyn365-commerce-modules|header|modules|header|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-header-header' */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header.view.js'),\n cn: '@msdyn365-commerce-modules-header-header'\n };\nviewDictionary['@msdyn365-commerce-modules|iframe|modules|iframe|iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-iframe-iframe' */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe.view.js'),\n cn: '@msdyn365-commerce-modules-iframe-iframe'\n };\nviewDictionary['@msdyn365-commerce-modules|image-list|modules|image-list|image-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-image-list-image-list' */\n '@msdyn365-commerce-modules/image-list/dist/lib/modules/image-list/image-list.view.js'),\n cn: '@msdyn365-commerce-modules-image-list-image-list'\n };\nviewDictionary['@msdyn365-commerce-modules|interactive-feature-collection|modules|interactive-feature-collection|interactive-feature-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-interactive-feature-collection-interactive-feature-collection' */\n '@msdyn365-commerce-modules/interactive-feature-collection/dist/lib/modules/interactive-feature-collection/interactive-feature-collection.view.js'),\n cn: '@msdyn365-commerce-modules-interactive-feature-collection-interactive-feature-collection'\n };\nviewDictionary['@msdyn365-commerce-modules|interactive-feature-collection|modules|interactive-feature-item|interactive-feature-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-interactive-feature-collection-interactive-feature-item' */\n '@msdyn365-commerce-modules/interactive-feature-collection/dist/lib/modules/interactive-feature-item/interactive-feature-item.view.js'),\n cn: '@msdyn365-commerce-modules-interactive-feature-collection-interactive-feature-item'\n };\nviewDictionary['@msdyn365-commerce-modules|invoice-details|modules|invoice-details|invoice-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-details-invoice-details' */\n '@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details/invoice-details.view.js'),\n cn: '@msdyn365-commerce-modules-invoice-details-invoice-details'\n };\nviewDictionary['@msdyn365-commerce-modules|invoice|modules|invoices-list|invoices-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-invoices-list' */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list.view.js'),\n cn: '@msdyn365-commerce-modules-invoice-invoices-list'\n };\nviewDictionary['@msdyn365-commerce-modules|map|modules|map|map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-map-map' */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map.view.js'),\n cn: '@msdyn365-commerce-modules-map-map'\n };\nviewDictionary['@msdyn365-commerce-modules|media-gallery|modules|media-gallery|media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-media-gallery-media-gallery' */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery.view.js'),\n cn: '@msdyn365-commerce-modules-media-gallery-media-gallery'\n };\nviewDictionary['@msdyn365-commerce-modules|navigation-menu|modules|navigation-menu|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-navigation-menu-navigation-menu' */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-navigation-menu-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|notifications-lists|modules|notifications-list|notifications-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-notifications-lists-notifications-list' */\n '@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list/notifications-list.view.js'),\n cn: '@msdyn365-commerce-modules-notifications-lists-notifications-list'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|checkout-order-confirmation|checkout-order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-confirmation|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-confirmation'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-details|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-details' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-details'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-history|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-history' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-history'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-lookup|order-lookup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-lookup' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-lookup/order-lookup.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-lookup'\n };\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template-list|order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template-list' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list.view.js'),\n cn: '@msdyn365-commerce-modules-order-template-order-template-list'\n };\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template|order-template'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template.view.js'),\n cn: '@msdyn365-commerce-modules-order-template-order-template'\n };\nviewDictionary['@msdyn365-commerce-modules|product-collection|modules|product-collection|product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-collection-product-collection' */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection.view.js'),\n cn: '@msdyn365-commerce-modules-product-collection-product-collection'\n };\nviewDictionary['@msdyn365-commerce-modules|product-comparison|modules|product-comparison-button|product-comparison-button'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-comparison-product-comparison-button' */\n '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-button/product-comparison-button.view.js'),\n cn: '@msdyn365-commerce-modules-product-comparison-product-comparison-button'\n };\nviewDictionary['@msdyn365-commerce-modules|product-comparison|modules|product-comparison-preview|product-comparison-preview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-comparison-product-comparison-preview' */\n '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison-preview/product-comparison-preview.view.js'),\n cn: '@msdyn365-commerce-modules-product-comparison-product-comparison-preview'\n };\nviewDictionary['@msdyn365-commerce-modules|product-comparison|modules|product-comparison|product-comparison'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-comparison-product-comparison' */\n '@msdyn365-commerce-modules/product-comparison/dist/lib/modules/product-comparison/product-comparison.view.js'),\n cn: '@msdyn365-commerce-modules-product-comparison-product-comparison'\n };\nviewDictionary['@msdyn365-commerce-modules|product-specification|modules|product-specification|product-specification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-specification-product-specification' */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification.view.js'),\n cn: '@msdyn365-commerce-modules-product-specification-product-specification'\n };\nviewDictionary['@msdyn365-commerce-modules|promo-banner|modules|promo-banner|promo-banner'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-promo-banner-promo-banner' */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.view.js'),\n cn: '@msdyn365-commerce-modules-promo-banner-promo-banner'\n };\nviewDictionary['@msdyn365-commerce-modules|quick-order-grid|modules|quick-order-grid|quick-order-grid'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-quick-order-grid-quick-order-grid' */\n '@msdyn365-commerce-modules/quick-order-grid/dist/lib/modules/quick-order-grid/quick-order-grid.view.js'),\n cn: '@msdyn365-commerce-modules-quick-order-grid-quick-order-grid'\n };\nviewDictionary['@msdyn365-commerce-modules|quick-order|modules|quick-order|quick-order'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-quick-order-quick-order' */\n '@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order/quick-order.view.js'),\n cn: '@msdyn365-commerce-modules-quick-order-quick-order'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|ratings-histogram|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|reviews-list|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-reviews-list' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|write-review|write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-write-review' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-write-review'\n };\nviewDictionary['@msdyn365-commerce-modules|search-result-container|modules|search-result-container|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-result-container-search-result-container' */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container.view.js'),\n cn: '@msdyn365-commerce-modules-search-result-container-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-modules|search|modules|search|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-search' */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search.view.js'),\n cn: '@msdyn365-commerce-modules-search-search'\n };\nviewDictionary['@msdyn365-commerce-modules|site-picker|modules|site-picker|site-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-site-picker-site-picker' */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker.view.js'),\n cn: '@msdyn365-commerce-modules-site-picker-site-picker'\n };\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share-item|social-share-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share-item' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item.view.js'),\n cn: '@msdyn365-commerce-modules-social-share-social-share-item'\n };\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share|social-share'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share.view.js'),\n cn: '@msdyn365-commerce-modules-social-share-social-share'\n };\nviewDictionary['@msdyn365-commerce-modules|spacer|modules|spacer|spacer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-spacer-spacer' */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer.view.js'),\n cn: '@msdyn365-commerce-modules-spacer-spacer'\n };\nviewDictionary['@msdyn365-commerce-modules|store-selector|modules|store-selector|store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-store-selector-store-selector' */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.view.js'),\n cn: '@msdyn365-commerce-modules-store-selector-store-selector'\n };\nviewDictionary['@msdyn365-commerce-modules|subscribe|modules|subscribe|subscribe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-subscribe-subscribe' */\n '@msdyn365-commerce-modules/subscribe/dist/lib/modules/subscribe/subscribe.view.js'),\n cn: '@msdyn365-commerce-modules-subscribe-subscribe'\n };\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab-item|tab-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab-item' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item.view.js'),\n cn: '@msdyn365-commerce-modules-tab-tab-item'\n };\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab|tab'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab.view.js'),\n cn: '@msdyn365-commerce-modules-tab-tab'\n };\nviewDictionary['@msdyn365-commerce-modules|text-block|modules|text-block|text-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-text-block-text-block' */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block.view.js'),\n cn: '@msdyn365-commerce-modules-text-block-text-block'\n };\nviewDictionary['@msdyn365-commerce-modules|tile-list|modules|tile-list-item|tile-list-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tile-list-tile-list-item' */\n '@msdyn365-commerce-modules/tile-list/dist/lib/modules/tile-list-item/tile-list-item.view.js'),\n cn: '@msdyn365-commerce-modules-tile-list-tile-list-item'\n };\nviewDictionary['@msdyn365-commerce-modules|tile-list|modules|tile-list|tile-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tile-list-tile-list' */\n '@msdyn365-commerce-modules/tile-list/dist/lib/modules/tile-list/tile-list.view.js'),\n cn: '@msdyn365-commerce-modules-tile-list-tile-list'\n };\nviewDictionary['@msdyn365-commerce-modules|video-player|modules|video-player|video-player'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-video-player-video-player' */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player.view.js'),\n cn: '@msdyn365-commerce-modules-video-player-video-player'\n };\nviewDictionary['@msdyn365-commerce-modules|wishlist|modules|wishlist-items|wishlist-items'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-wishlist-wishlist-items' */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items.view.js'),\n cn: '@msdyn365-commerce-modules-wishlist-wishlist-items'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|b2b-requests-status'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-b2b-requests-status' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/b2b-requests-status.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-b2b-requests-status'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-business-organization-list' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/business-organization-list.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-business-organization-list'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-buybox' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/buybox.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-buybox'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart-icon' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/cart-icon.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/cart.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-content-block' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/content-block.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-content-block'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-footer-item' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/footer-item.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-footer-item'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-header' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/header.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-header'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-media-gallery' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/media-gallery.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-media-gallery'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-navigation-menu' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-order-details' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/order-details.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-order-details'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-order-history' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/order-history.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-order-history'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-order-template-list' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/order-template-list.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-order-template-list'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|quickview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-quickview' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/quickview.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-quickview'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-ratings-histogram' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-reviews-list' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/reviews-list.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|search-result-container-v2'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-search-result-container-v2' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/search-result-container-v2.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-search-result-container-v2'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-search-result-container' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/search-result-container.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-search' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/search.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-search'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-store-selector' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/store-selector.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-store-selector'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-theme-adventureworks-theme-kit-write-review' */\n '@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/write-review.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-write-review'\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IAccordionExpandedState } from './accordion-state';\n\nexport function createAccordionStateInput(result: IAccordionExpandedState): GenericInput {\n return new GenericInput('accordionExpandedState', result, 'IAccordionExpandedState');\n}\n\nconst createAccordionStateInputInternal = (): IActionInput => {\n return createAccordionStateInput({});\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createAccordionStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductLookupClause, ProductsDataActions, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IActiveImageConfig, IActivePointsData } from '../active-image';\n\n/**\n * ActiveImageInput.\n */\nexport class ActiveImageInput implements IActionInput {\n public config: IActiveImageConfig;\n\n private readonly _cacheKey: string = 'ActiveImage';\n\n public constructor(config: IActiveImageConfig) {\n this.config = config;\n\n if (this.config.activePoints && ArrayExtensions.hasElements(this.config.activePoints)) {\n for (const activePointData of this.config.activePoints) {\n if (activePointData.itemId) {\n this._cacheKey = `${this._cacheKey}-${activePointData.itemId.toString()}`;\n }\n }\n }\n }\n\n /**\n * GetCacheObjectType.\n * @returns - Returns string.\n */\n public getCacheObjectType = (): string => 'ActiveImageFullProductSearchResult';\n\n /**\n * GetCacheKey.\n * @returns - Returns string.\n */\n public getCacheKey = (): string => this._cacheKey;\n\n /**\n * DataCacheType.\n * @returns - CacheType string.\n */\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * CreateInput.\n * @param inputData - IActionContext.\n * @returns - IActionInput.\n */\nexport const createInput = (inputData: ICreateActionContext): IActionInput => {\n return new ActiveImageInput(inputData.config as IActiveImageConfig);\n};\n\n/**\n * Action.\n * @param input - ActiveImageInput.\n * @param context - IActionContext.\n * @returns - ProductSearchResult[].\n */\nexport const getActiveImageproductAction = async (input: ActiveImageInput, context: IActionContext): Promise => {\n const { config } = input;\n const itemIds: ProductLookupClause[] = [];\n if (config.activePoints) {\n config.activePoints.map((activePointData: IActivePointsData) => itemIds.push({ ItemId: activePointData.itemId }));\n }\n const searchCriteriaInput: ProductSearchCriteria = {};\n searchCriteriaInput.Context = {\n ChannelId: context.requestContext.apiSettings.channelId,\n CatalogId: getCatalogId(context.requestContext)\n };\n searchCriteriaInput.IncludeAttributes = true;\n searchCriteriaInput.ItemIds = itemIds;\n if (!config.activePoints || !ArrayExtensions.hasElements(config.activePoints)) {\n throw new Error('Fail to call ActiveImage API no active points configured.');\n }\n // eslint-disable-next-line no-return-await -- Disable because we want to return the promise.\n return await ProductsDataActions.searchByCriteriaAsync({ callerContext: context }, searchCriteriaInput);\n};\n\n/**\n * Action.\n * @param id - Id.\n * @param action - Action.\n * @returns - Results.\n */\nexport const actionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/active-image/get-active-image-products',\n action: getActiveImageproductAction as IAction,\n input: createInput\n});\n\nexport default actionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getAddressPurposesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get Address Purposes data action.\n */\nexport class GetAddressPurposesInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AddressPurpose', this.apiSettings);\n\n public getCacheObjectType = () => 'AddressPurpose';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetAddressPurposesInput => {\n return new GetAddressPurposesInput(inputData.requestContext.apiSettings);\n};\n\nexport async function getAddressPurposesAction(input: GetAddressPurposesInput, ctx: IActionContext): Promise {\n return getAddressPurposesAsync({\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n });\n}\n\nexport const getAddressPurposesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-address-purposes',\n action: >getAddressPurposesAction,\n input: createInput\n});\n\nexport default getAddressPurposesActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCountryRegionsByLanguageIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { CountryRegionInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get country regions data action.\n */\nexport class GetCountryRegionsInput implements IActionInput {\n public locale: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\n\n public getCacheObjectType = () => 'CountryRegionInfo';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryRegionsInput => {\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\n};\n\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\n // This API is returning more that 100 records. So, can't use the default page size for this.\n // Removing the query result setting.\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\n}\n\nexport const getCountryRegionsActionDataAction = createObservableDataAction({\n action: >getCountryRegionsAction,\n input: createInput\n});\n\nexport default getCountryRegionsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getCountryRegionsAction, GetCountryRegionsInput } from './get-country-regions';\nimport { getStateProvinceAction, GetStateProvincesInput } from './get-state-provinces';\n\n/**\n * Input class for get country regions data action.\n */\nexport class GetCountryStateInput implements IActionInput {\n public locale: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryStateInfo-${this.locale}`, this.apiSettings);\n\n public getCacheObjectType = () => 'StateProvinceInfo';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryStateInput => {\n const { locale, apiSettings } = inputData.requestContext;\n if (!(inputData.requestContext && locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n return new GetCountryStateInput(locale, apiSettings);\n};\n\nexport async function getCountryStateAction(input: GetCountryStateInput, ctx: IActionContext): Promise {\n const countryInput = new GetCountryRegionsInput(input.locale, input.apiSettings);\n const countryRegionsInfo = await getCountryRegionsAction(countryInput, ctx);\n\n const channelConfiguration = ctx.requestContext.channel;\n\n const marketISOCode = (channelConfiguration && channelConfiguration.ChannelCountryRegionISOCode) || 'US';\n const currentCountryRegion = countryRegionsInfo.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n const countryRegionId = (currentCountryRegion && currentCountryRegion.CountryRegionId) || 'USA';\n\n const stateInput = new GetStateProvincesInput(countryRegionId, input.apiSettings);\n return getStateProvinceAction(stateInput, ctx);\n}\n\nexport const getCountryStateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-country-state',\n action: >getCountryStateAction,\n input: createInput\n});\n\nexport default getCountryStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get state provinces data action.\n */\nexport class GetStateProvincesInput implements IActionInput {\n public countryRegionId: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\n this.countryRegionId = countryRegionId;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\n\n public getCacheObjectType = () => 'StateProvinceInfo';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\n return getStateProvincesAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n input.countryRegionId\n );\n}\n\nexport const getStateProvinceActionDataAction = createObservableDataAction({\n action: >getStateProvinceAction\n});\n\nexport default getStateProvinceActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, * as Msdyn365 from '@msdyn365-commerce/core';\n\n/**\n * Bot Framework input. Used to retrieve existing active bot framework session token.\n */\nexport class GetBotFrameworkInput implements Msdyn365.IActionInput {\n public getCacheKey = () => `CURRENT-BOTFRAMEWORKTOKEN`;\n public getCacheObjectType = () => 'CURRENT-BOTFRAMEWORK-KEY1';\n public dataCacheType = (): Msdyn365.CacheType => 'application';\n}\n\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\n return new GetBotFrameworkInput();\n};\n\nasync function action(input: GetBotFrameworkInput, ctx: Msdyn365.IActionContext): Promise {\n const ISecretValue = await msdyn365Commerce.secretManager?.getSecretValue(\n 'PVA-WEBCHANNELSECURITY-KEY',\n ctx.requestContext.apiSettings.baseUrl\n );\n const apiToken = ISecretValue?.value;\n return apiToken ?? '';\n}\n\nexport default Msdyn365.createObservableDataAction({\n action: >action,\n id: 'getBotFrameworkToken',\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext,\n isEmptyOrNullObject\n} from '@msdyn365-commerce/core';\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { CardPaymentAcceptPoint, CartsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport { get } from 'lodash';\n\n/**\n * Get card payment accept point input.\n */\nexport interface IGetCardPaymentAcceptPointInput {\n shouldShowBillingAddress?: boolean;\n paymentTenderType?: string;\n apiSettings: ICommerceApiSettings;\n amountDue?: number;\n}\n\n/**\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint.\n */\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\n public shouldShowBillingAddress?: boolean;\n\n public paymentTenderType?: string;\n\n public amountDue?: number;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility -- Existing code.\n constructor(input: IGetCardPaymentAcceptPointInput) {\n this.shouldShowBillingAddress = input.shouldShowBillingAddress;\n this.paymentTenderType = input.paymentTenderType;\n this.apiSettings = input.apiSettings;\n this.amountDue = input.amountDue;\n }\n\n /**\n * Get the cache key.\n * @returns Cache key.\n */\n public getCacheKey = (): string => buildCacheKey(`CardPaymentAcceptPoint-apple-pay`, this.apiSettings);\n\n /**\n * Get cache object type.\n * @returns Card payment accept point.\n */\n public getCacheObjectType = (): string => 'CardPaymentAcceptPoint';\n\n /**\n * Get data cache type.\n * @returns The cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create checkout apple pay input.\n * @param inputData - Get card payment accept point.\n * @returns CardPaymentAcceptInput.\n */\nexport const createCheckoutPaymentInstrumentInput = (\n inputData: ICreateActionContext\n): GetCardPaymentAcceptPointInput => {\n const { shouldShowBillingAddress, paymentTenderType, amountDue } = inputData.config ?? {};\n const getCardPaymentAcceptPointInput = {\n shouldShowBillingAddress,\n paymentTenderType,\n apiSettings: inputData.requestContext.apiSettings,\n amountDue\n };\n\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input - The get card payment accept point.\n * @param ctx - The action context.\n * @returns CardPaymentAcceptPoint.\n */\nexport async function getCardPaymentAcceptPointAction(\n input: GetCardPaymentAcceptPointInput,\n ctx: IActionContext\n): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Double check.\n if (!input) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\n }\n\n const { paymentTenderType = 'applepay', amountDue = 0 } = input;\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n if (\n isEmptyOrNullObject(checkoutState) ||\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\n ) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\n }\n\n // if (!checkoutState.checkoutCart.cart.CartLines || !ArrayExtensions.hasElements(checkoutState.checkoutCart.cart.CartLines)) {\n // ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\n // throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\n // }\n\n const requestUrl =\n typeof ctx.requestContext.url.requestUrl === 'string'\n ? new URL(ctx.requestContext.url.requestUrl)\n : ctx.requestContext.url.requestUrl;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Existing code.\n const origin = get(window, 'location.origin') || requestUrl.origin;\n\n const cardPaymentAcceptSettings = {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Any type.\n HostPageOrigin: origin,\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-assignment -- Any type.\n AdaptorPath: `${origin}/Connectors/` || origin,\n CardPaymentEnabled: false,\n CardTokenizationEnabled: true,\n HideBillingAddress: true,\n ...(paymentTenderType && { TenderTypeId: paymentTenderType }),\n PaymentAmount: amountDue !== 0 ? amountDue : checkoutState.checkoutCart.cart.AmountDue ?? 0,\n RequireShippingAddress: true\n };\n\n return CartsDataActions.getCardPaymentAcceptPointAsync(\n { callerContext: ctx, bypassCache: 'get' },\n checkoutState.checkoutCart.cart.Id,\n cardPaymentAcceptSettings,\n []\n )\n .then(cardPaymentAcceptPoint => {\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\n throw new Error(\n '[getCardPaymentAcceptPointAction]Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\n );\n }\n return cardPaymentAcceptPoint;\n })\n .catch(error => {\n ctx.telemetry.exception(error as Error);\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\n throw error;\n });\n}\n\n/**\n * Get card payment accept point.\n */\nexport const getCardPaymentAcceptPointActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce/checkout-apple-pay/get-card-payment-accept-point',\n action: getCardPaymentAcceptPointAction as IAction,\n input: createCheckoutPaymentInstrumentInput\n});\n\nexport default getCardPaymentAcceptPointActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext,\n isEmptyOrNullObject\n} from '@msdyn365-commerce/core';\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { CardPaymentAcceptPoint, CartsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport { get } from 'lodash';\n\n/**\n * Get card payment accept point input.\n */\nexport interface IGetCardPaymentAcceptPointInput {\n shouldShowBillingAddress?: boolean;\n paymentTenderType?: string;\n apiSettings: ICommerceApiSettings;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n amountDue?: number;\n}\n\n/**\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint.\n */\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\n public shouldShowBillingAddress?: boolean;\n\n public paymentTenderType?: string;\n\n public shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n\n public amountDue?: number;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility -- Existing code.\n constructor(input: IGetCardPaymentAcceptPointInput) {\n this.shouldShowBillingAddress = input.shouldShowBillingAddress;\n this.paymentTenderType = input.paymentTenderType;\n this.apiSettings = input.apiSettings;\n this.shouldEnableSinglePaymentAuthorizationCheckout = input.shouldEnableSinglePaymentAuthorizationCheckout;\n this.amountDue = input.amountDue;\n }\n\n /**\n * Get the cache key.\n * @returns Cache key.\n */\n public getCacheKey = (): string =>\n buildCacheKey(`CardPaymentAcceptPoint${this.paymentTenderType ? `-${this.paymentTenderType}-express` : ''}`, this.apiSettings);\n\n /**\n * Get cache object type.\n * @returns Card payment accept point.\n */\n public getCacheObjectType = (): string => 'CardPaymentAcceptPoint';\n\n /**\n * Get data cache type.\n * @returns The cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create checkout express input.\n * @param inputData - Get card payment accept point.\n * @returns CardPaymentAcceptInput.\n */\nexport const createCheckoutPaymentInstrumentInput = (\n inputData: ICreateActionContext\n): GetCardPaymentAcceptPointInput => {\n const { shouldShowBillingAddress, paymentTenderType, shouldEnableSinglePaymentAuthorizationCheckout, amountDue } =\n inputData.config ?? {};\n const getCardPaymentAcceptPointInput = {\n shouldShowBillingAddress,\n paymentTenderType,\n apiSettings: inputData.requestContext.apiSettings,\n shouldEnableSinglePaymentAuthorizationCheckout,\n amountDue\n };\n\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input - The get card payment accept point.\n * @param ctx - The action context.\n * @returns CardPaymentAcceptPoint.\n */\nexport async function getCardPaymentAcceptPointAction(\n input: GetCardPaymentAcceptPointInput,\n ctx: IActionContext\n): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Double check.\n if (!input) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\n }\n\n const { paymentTenderType, amountDue = 0 } = input;\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n if (\n isEmptyOrNullObject(checkoutState) ||\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\n ) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\n }\n\n if (!checkoutState.checkoutCart.cart.CartLines || !ArrayExtensions.hasElements(checkoutState.checkoutCart.cart.CartLines)) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\n throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\n }\n\n const requestUrl =\n typeof ctx.requestContext.url.requestUrl === 'string'\n ? new URL(ctx.requestContext.url.requestUrl)\n : ctx.requestContext.url.requestUrl;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Existing code.\n const origin = get(window, 'location.origin') || requestUrl.origin;\n\n const cardPaymentAcceptSettings = {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Any type.\n HostPageOrigin: origin,\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-assignment -- Any type.\n AdaptorPath: `${origin}/Connectors/` || origin,\n CardPaymentEnabled: false,\n CardTokenizationEnabled: true,\n HideBillingAddress: true,\n ...(paymentTenderType && { TenderTypeId: paymentTenderType }),\n PaymentAmount: amountDue !== 0 ? amountDue : checkoutState.checkoutCart.cart.AmountDue ?? 0,\n RequireShippingAddress: true\n };\n\n return CartsDataActions.getCardPaymentAcceptPointAsync(\n { callerContext: ctx, bypassCache: 'get' },\n checkoutState.checkoutCart.cart.Id,\n cardPaymentAcceptSettings,\n []\n )\n .then(cardPaymentAcceptPoint => {\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\n throw new Error(\n '[getCardPaymentAcceptPointAction]Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\n );\n }\n return cardPaymentAcceptPoint;\n })\n .catch(error => {\n ctx.telemetry.exception(error as Error);\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\n throw error;\n });\n}\n\n/**\n * Get card payment accept point.\n */\nexport const getCardPaymentAcceptPointActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce/checkout-express/get-card-payment-accept-point',\n action: getCardPaymentAcceptPointAction as IAction,\n input: createCheckoutPaymentInstrumentInput\n});\n\nexport default getCardPaymentAcceptPointActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext,\n isEmptyOrNullObject\n} from '@msdyn365-commerce/core';\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { getCardPaymentAcceptPointAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { CardPaymentAcceptPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport get from 'lodash/get';\n\nexport interface IGetCardPaymentAcceptPointInput {\n showBillingAddress?: boolean;\n paymenTenderType?: string;\n apiSettings: ICommerceApiSettings;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n amountDue?: number;\n shouldPassLocaleToiFrame?: boolean;\n}\n\n/**\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint.\n */\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\n public showBillingAddress?: boolean;\n\n public paymenTenderType?: string;\n\n public shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n\n public amountDue?: number;\n\n public shouldPassLocaleToiFrame?: boolean;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(input: IGetCardPaymentAcceptPointInput) {\n this.showBillingAddress = input.showBillingAddress;\n this.paymenTenderType = input.paymenTenderType;\n this.apiSettings = input.apiSettings;\n this.shouldEnableSinglePaymentAuthorizationCheckout = input.shouldEnableSinglePaymentAuthorizationCheckout;\n this.amountDue = input.amountDue;\n this.shouldPassLocaleToiFrame = input.shouldPassLocaleToiFrame;\n }\n\n public getCacheKey = () =>\n buildCacheKey(`CardPaymentAcceptPoint${this.paymenTenderType ? `-${this.paymenTenderType}` : ''}`, this.apiSettings);\n\n public getCacheObjectType = () => 'CardPaymentAcceptPoint';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createCheckoutPaymentInstrumentInput = (inputData: ICreateActionContext) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- keep existing name.\n const { showBillingAddress, paymenTenderType, shouldEnableSinglePaymentAuthorizationCheckout, amountDue, shouldPassLocaleToiFrame } =\n inputData.config ?? {};\n const getCardPaymentAcceptPointInput = {\n showBillingAddres: showBillingAddress,\n paymenTenderType,\n apiSettings: inputData.requestContext.apiSettings,\n shouldEnableSinglePaymentAuthorizationCheckout,\n amountDue,\n shouldPassLocaleToiFrame\n };\n\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getCardPaymentAcceptPointAction(\n input: GetCardPaymentAcceptPointInput,\n ctx: IActionContext\n): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\n }\n\n const { showBillingAddress, paymenTenderType, amountDue = 0, shouldPassLocaleToiFrame } = input;\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n if (\n isEmptyOrNullObject(checkoutState) ||\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\n ) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\n }\n\n if (!checkoutState.checkoutCart.cart.CartLines || checkoutState.checkoutCart.cart.CartLines.length === 0) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\n throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\n }\n\n const requestUrl =\n typeof ctx.requestContext.url.requestUrl === 'string'\n ? new URL(ctx.requestContext.url.requestUrl)\n : ctx.requestContext.url.requestUrl;\n const origin = get(window, 'location.origin') || requestUrl.origin;\n\n const cardPaymentAcceptSettings = {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\n HostPageOrigin: origin,\n AdaptorPath: `${origin}/Connectors/` || origin,\n CardPaymentEnabled: false,\n CardTokenizationEnabled: true,\n ...(!showBillingAddress && { HideBillingAddress: true }),\n ...(paymenTenderType && { TenderTypeId: paymenTenderType }),\n PaymentAmount: amountDue !== 0 ? amountDue : checkoutState.checkoutCart.cart.AmountDue ?? 0,\n Locale: shouldPassLocaleToiFrame ? ctx.requestContext.locale || 'en-us' : undefined\n };\n\n return getCardPaymentAcceptPointAsync(\n { callerContext: ctx, bypassCache: 'get' },\n checkoutState.checkoutCart.cart.Id,\n cardPaymentAcceptSettings,\n []\n )\n .then(cardPaymentAcceptPoint => {\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\n throw new Error(\n '[getCardPaymentAcceptPointAction] Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\n );\n }\n return cardPaymentAcceptPoint;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\n throw error;\n });\n}\n\nexport const getCardPaymentAcceptPointActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce/checkout-payment-instrument/get-card-payment-accept-point',\n action: >getCardPaymentAcceptPointAction,\n input: createCheckoutPaymentInstrumentInput\n});\n\nexport default getCardPaymentAcceptPointActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for ActiveCheckoutCartWithProducts data action.\n */\nexport class ActiveCheckoutCartProductsInput implements IActionInput {\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\n\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createInput = () => {\n return new ActiveCheckoutCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveCheckoutCartProductsAction(\n input: ActiveCheckoutCartProductsInput,\n ctx: IActionContext\n): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing'));\n throw new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing');\n }\n\n const checkoutState = await getCheckoutState(ctx);\n const cart = checkoutState.checkoutCart.cart;\n\n // If there are cart lines, make call to get products\n if (!checkoutState.checkoutCart.hasInvoiceLine && cart && cart.CartLines && cart.CartLines.length > 0) {\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(\n cartLine.ProductId,\n ctx.requestContext.apiSettings,\n undefined,\n undefined,\n ctx.requestContext,\n cartLine.CatalogId\n );\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then(products => {\n if (products) {\n return products;\n }\n return [];\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCheckoutCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return [];\n}\n\nexport const getActiveCheckoutCartProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/checkout/get-products-in-active-checkout-cart',\n action: >getActiveCheckoutCartProductsAction,\n input: createInput\n});\n\nexport default getActiveCheckoutCartProductsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { IMSDyn365Window } from '@msdyn365-commerce/core-internal';\nimport { Cart, CartLine, IAddCartLinesParam, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines added before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeAddToCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were added\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const addCartLinesParams = actionInput.queryParams();\n if (addCartLinesParams && addCartLinesParams.cartLines) {\n // Save info on added cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.addedCartLines = addCartLinesParams.cartLines;\n return;\n }\n }\n actionContext.telemetry.debug('AddToCart pre-data action hook failed - No added cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('AddToCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires an AddToCart event after AddCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been added\n * @param actionContext Action context\n */\nconst afterAddToCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const addedCartLines = actionContext.requestContext.telemetryData.addedCartLines;\n let addedProducts: IProductInfo[] = [];\n\n // Collect info on products added to cart\n if (addedCartLines) {\n try {\n addedProducts = await getProductInfoFromCartLinesAsync(addedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('AddCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire AddToCart event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.AddToCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: addedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/AddCartLines',\n postReaderHook: afterAddToCart,\n preReaderHook: beforeAddToCart\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * CopyCart data action pre-hook\n * @param inputs Data action inputs\n */\nconst beforeCopyCart = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\n/**\n * Fires an CheckOut event after CopyCart data action completed\n * @param _inputs Data action inputs\n * @param cart New checkout cart\n * @param actionContext Action context\n */\nconst afterCopyCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n let cartLineProductUnits: IProductInfo[] = [];\n\n // Collect info on products in the cart\n if (cartObject && cartObject.CartLines && Array.isArray(cartObject.CartLines) && cartObject.CartLines.length > 0) {\n try {\n cartLineProductUnits = await getProductInfoFromCartLinesAsync(cartObject.CartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('CopyCart post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire Checkout event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.CheckOut, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: cartLineProductUnits,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Copy',\n postReaderHook: afterCopyCart,\n preReaderHook: beforeCopyCart\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetById = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetById = async (\n _inputs: IActionInput | IActionInput[],\n simpleProduct: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n simpleProduct = await Promise.resolve(Array.isArray(simpleProduct) ? simpleProduct[0] : simpleProduct);\n\n // If simple product result is defined run the post hook\n if (simpleProduct) {\n const productInfo = getProductInfoFromSimpleProduct(simpleProduct);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n actionContext.requestContext.telemetryData[TelemetryEvent.ProductPageView] = productInfo ? [productInfo] : [];\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetById',\n postReaderHook: afterGetById,\n preReaderHook: beforeGetById\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetByIds = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetByIds = async (\n _inputs: IActionInput | IActionInput[],\n simpleProducts: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n if (!Array.isArray(simpleProducts)) {\n simpleProducts = [simpleProducts];\n }\n\n simpleProducts.forEach(async product => {\n if (product) {\n product = await Promise.resolve(product);\n const productInfo = getProductInfoFromSimpleProduct(product);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n }\n });\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetByIds',\n postReaderHook: afterGetByIds,\n preReaderHook: beforeGetByIds\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetVariantsByDimensionValues = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetVariantsByDimensionValues = async (\n _inputs: IActionInput | IActionInput[],\n simpleProducts: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n if (!Array.isArray(simpleProducts)) {\n simpleProducts = [simpleProducts];\n }\n\n simpleProducts.forEach(async product => {\n if (product) {\n product = await Promise.resolve(product);\n const productInfo = getProductInfoFromSimpleProduct(product);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n }\n });\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetVariantsByDimensionValues',\n postReaderHook: afterGetVariantsByDimensionValues,\n preReaderHook: beforeGetVariantsByDimensionValues\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, IProductTransaction, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Checkout data action pre-hook\n * @param inputs Data action inputs\n */\nconst beforePurchase = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\n/**\n * Fires a Purchase event after Checkout data action completed\n * @param _inputs Data action inputs\n * @param salesOrder Sales order for transaction\n * @param actionContext Action context\n */\nconst afterPurchase = async (\n _inputs: IActionInput | IActionInput[],\n salesOrder: SalesOrder | SalesOrder[],\n actionContext: IActionContext\n) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const salesObject = Array.isArray(salesOrder) ? salesOrder[0] : salesOrder;\n let saleLineProductUnits: IProductInfo[] = [];\n\n // Collect info on products in the sales order\n if (salesObject && salesObject.SalesLines && Array.isArray(salesObject.SalesLines) && salesObject.SalesLines.length > 0) {\n try {\n saleLineProductUnits = await getProductInfoFromCartLinesAsync(salesObject.SalesLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('Checkout post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Store the purchased product information so that we can avoid \"code triggered\" remove from cart telemetry event.\n actionContext.requestContext.telemetryData[TelemetryEvent.Purchase] = {\n id: salesObject.Id,\n affiliation: salesObject.ChannelId ? salesObject.ChannelId.toString() : '',\n revenue: salesObject.NetAmountWithoutTax,\n tax: salesObject.TaxAmount,\n // shippingCost?: // Confirm if it is delivery mode charge amount;\n products: saleLineProductUnits\n };\n\n // Fire Purchase event\n window._msdyn365.telemetry.logEvent(\n TelemetryEvent.Purchase,\n actionContext.requestContext.telemetryData[TelemetryEvent.Purchase]\n );\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Checkout',\n postReaderHook: afterPurchase,\n preReaderHook: beforePurchase\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\n\nconst beforeRead = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterRead = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n try {\n const activeCart = await Promise.resolve(Array.isArray(cart) ? cart[0] : cart);\n actionContext.requestContext.telemetryData.activeCart = activeCart;\n } catch (e) {\n actionContext.telemetry.debug('ReadCart post-data action hook failed.', e);\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Read',\n postReaderHook: afterRead,\n preReaderHook: beforeRead\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Cart, CartLine, IDataServiceRequest, IRemoveCartLinesParam } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, IProductTransaction } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines removed before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeRemoveFromCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were removed\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const removeCartLinesParams = actionInput.queryParams();\n if (removeCartLinesParams && removeCartLinesParams.cartLineIds) {\n // Save info on removed cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.removedCartLineIds = removeCartLinesParams.cartLineIds;\n return;\n }\n }\n actionContext.telemetry.debug('RemoveFromCart pre-data action hook failed - No removed cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('RemoveFromCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires a RemoveFromCart event after RemoveCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been removed\n * @param actionContext Action context\n */\nconst afterRemoveFromCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const removeCartLineIds = actionContext.requestContext.telemetryData.removedCartLineIds;\n const activeCart = actionContext.requestContext.telemetryData.activeCart;\n const productTransaction = actionContext.requestContext.telemetryData[TelemetryEvent.Purchase];\n const removedCartLines: CartLine[] = [];\n let removedProducts: IProductInfo[] = [];\n\n // Collect info on products removed from cart\n if (removeCartLineIds && activeCart && activeCart.CartLines) {\n activeCart.CartLines.forEach((cartLine: CartLine) => {\n if (\n cartLine.ProductId &&\n removeCartLineIds.indexOf(cartLine.LineId ? cartLine.LineId : '') !== -1 &&\n !(\n productTransaction &&\n productTransaction.products &&\n productTransaction.products.some(product => +product.productSku === cartLine.ProductId)\n )\n ) {\n removedCartLines.push(cartLine);\n }\n });\n\n if (removedCartLines.length > 0) {\n try {\n removedProducts = await getProductInfoFromCartLinesAsync(removedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('RemoveCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n }\n\n // Fire RemoveFromCart event if cart lines were removed\n if (removedCartLines && removedCartLines.length > 0) {\n window._msdyn365.telemetry.logEvent(TelemetryEvent.RemoveFromCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: removedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n } else {\n actionContext.telemetry.debug('No RemoveFromCart event fired, no removed cart lines found');\n }\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/RemoveCartLines',\n postReaderHook: afterRemoveFromCart,\n preReaderHook: beforeRemoveFromCart\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getByIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { IProductInfo } from '@msdyn365-commerce/telemetry-internal';\n\n/**\n * Converts cart line products into promise of array of product info\n * @param cartLines Cart Lines with product info to collect\n * @param actionContext Action context\n * @returns Array of product info\n */\nexport const getProductInfoFromCartLinesAsync = async (cartLines: CartLine[], actionContext: IActionContext): Promise => {\n if (actionContext.requestContext.channel === undefined) {\n throw new Error('Unable to make product call, channel ID not provided');\n }\n\n const productPromises: Promise[] = [];\n\n // Call GetById API for all products in cartLines\n for (let i = 0; i < cartLines.length; i++) {\n const cartLine: CartLine = cartLines[i];\n\n if (cartLine.ProductId) {\n // The product id in cartLine actually contains recordId and not master product id so we can use it up here to lookup product.\n productPromises.push(\n getByIdAsync({ callerContext: actionContext }, cartLine.ProductId, actionContext.requestContext.channel.RecordId).then(\n result => {\n // Construct basic IProductInfo object for product\n const productInfo = getProductInfoFromSimpleProduct(result);\n\n // Attach fields from the CartLine\n productInfo.productPrice = cartLine.Price ? cartLine.Price.toString() : '';\n productInfo.productQuantity = cartLine.Quantity ? cartLine.Quantity.toString() : '';\n\n return productInfo;\n },\n reason => {\n throw new Error(`Failed to get product details for product ${cartLine.ProductId}.\\n${reason}`);\n }\n )\n );\n }\n }\n\n // Return promise for array of product results\n return Promise.all(productPromises);\n};\n\n/**\n * Converts a SimpleProduct object into an IProductInfo object\n * @param simpleProduct Simple Product object\n * @returns Populated IProductInfo\n */\nexport const getProductInfoFromSimpleProduct = (simpleProduct: SimpleProduct): IProductInfo => {\n const recordId = simpleProduct.RecordId || '';\n\n return {\n // If master product id is not available then product record id is master product id\n productId: simpleProduct.MasterProductId ? simpleProduct.MasterProductId.toString() : recordId.toString(),\n productSku: recordId ? recordId.toString() : '',\n productName: simpleProduct.Name || simpleProduct.Description || '',\n productPrice: simpleProduct.Price ? simpleProduct.Price.toString() : '',\n productChannelId: '', // Not needed for each product, sent as part of all events\n productChannelName: '',\n productCategoryId: '',\n productCategoryName: '',\n productQuantity: '', // Cannot be deteremined from SimpleProduct, will be added from CartLine later\n productCurrency: '' // Not needed for each product, sent as part of all events with product data\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { IMSDyn365Window } from '@msdyn365-commerce/core-internal';\nimport { Cart, CartLine, IDataServiceRequest, IUpdateCartLinesParam } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines updated before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeUpdateCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were updated\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const updateCartLinesParams = actionInput.queryParams();\n if (updateCartLinesParams && updateCartLinesParams.cartLines) {\n // Save info on updated cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.updatedCartLines = updateCartLinesParams.cartLines;\n return;\n }\n }\n actionContext.telemetry.debug('UpdateCart pre-data action hook failed - No updated cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('UpdateCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires an UpdateInCart event after UpdateCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been added\n * @param actionContext Action context\n */\nconst afterUpdateCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const updatedCartLines = actionContext.requestContext.telemetryData.updatedCartLines;\n let updatedProducts: IProductInfo[] = [];\n\n // Collect info on products updated in cart\n if (updatedCartLines) {\n try {\n updatedProducts = await getProductInfoFromCartLinesAsync(updatedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('UpdateCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire UpdateInCart event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.UpdateInCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: updatedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/UpdateCartLines',\n postReaderHook: afterUpdateCart,\n preReaderHook: beforeUpdateCart\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IExpLogger } from '@msdyn365-commerce/telemetry-internal';\n\n/**\n * A basic implementation of the ExperimentationProvider interface used for testing\n */\nclass MsDyn365ExpTestConnectorListener implements IExpLogger {\n private userId: string = '';\n public initializeClientSide(config: any, userId: string): boolean {\n this.userId = userId;\n console.log(`Listener initialize called with config ${JSON.stringify(config)} and userId ${userId}`);\n return true;\n }\n public logEvent(eventName: string, payload: any, attributes?: any): void {\n console.log(`tracking events with event type - ${eventName}, payload - ${payload}, user id - ${this.userId}`);\n }\n}\n\nconst connectorListener = new MsDyn365ExpTestConnectorListener();\nexport default connectorListener;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any, max-lines */\nimport { IExperimentationProvider, IExperimentsResult, ISecretManager, IVariants, State } from '@msdyn365-commerce/core';\n/**\n * A basic implementation of the ExperimentationProvider interface used for testing\n */\nclass MsDyn365ExpTestConnector implements IExperimentationProvider {\n private variantSet1: IVariants[] = [\n {\n variantId: 'var1',\n experimentId: 'expid1'\n },\n {\n variantId: 'var1',\n experimentId: 'expid4'\n },\n {\n variantId: 'var1',\n experimentId: 'expid6'\n },\n {\n variantId: 'var1',\n experimentId: 'expid7'\n },\n {\n variantId: 'var1',\n experimentId: 'expid8'\n },\n {\n variantId: 'var1',\n experimentId: 'expid9'\n },\n {\n variantId: 'var1',\n experimentId: 'expid10'\n },\n {\n variantId: 'var1',\n experimentId: 'expid11'\n },\n {\n variantId: 'var1',\n experimentId: 'expid12'\n }\n ];\n\n private variantSet2: IVariants[] = [\n {\n variantId: 'var2',\n experimentId: 'expid1'\n },\n {\n variantId: 'var2',\n experimentId: 'expid5'\n },\n {\n variantId: 'var2',\n experimentId: 'expid7'\n },\n {\n variantId: 'var2',\n experimentId: 'expid8'\n },\n {\n variantId: 'var2',\n experimentId: 'expid9'\n },\n {\n variantId: 'var2',\n experimentId: 'expid10'\n },\n {\n variantId: 'var2',\n experimentId: 'expid11'\n },\n {\n variantId: 'var2',\n experimentId: 'expid12'\n }\n ];\n\n private variantSet3: IVariants[] = [\n {\n variantId: 'var1',\n experimentId: 'expid5'\n },\n {\n variantId: 'var2',\n experimentId: 'expid13'\n },\n {\n variantId: 'var2',\n experimentId: 'expid14'\n },\n {\n variantId: 'var2',\n experimentId: 'expid15'\n },\n {\n variantId: 'var2',\n experimentId: 'expid16'\n },\n {\n variantId: 'var2',\n experimentId: 'expid17'\n },\n {\n variantId: 'var2',\n experimentId: 'expid18'\n },\n {\n variantId: 'var2',\n experimentId: 'expid19'\n },\n {\n variantId: 'var2',\n experimentId: 'expid20'\n },\n {\n variantId: 'var2',\n experimentId: 'expid21'\n },\n {\n variantId: 'var2',\n experimentId: 'expid22'\n },\n {\n variantId: 'var2',\n experimentId: 'expid23'\n },\n {\n variantId: 'var2',\n experimentId: 'expid24'\n },\n {\n variantId: 'var2',\n experimentId: 'expid25'\n }\n ];\n\n private variantSet4: IVariants[] = [\n {\n variantId: 'var1',\n experimentId: 'expid5'\n },\n {\n variantId: 'var1',\n experimentId: 'expid1'\n },\n {\n variantId: 'var1',\n experimentId: 'expid13'\n },\n {\n variantId: 'var1',\n experimentId: 'expid14'\n },\n {\n variantId: 'var1',\n experimentId: 'expid15'\n },\n {\n variantId: 'var1',\n experimentId: 'expid16'\n },\n {\n variantId: 'var1',\n experimentId: 'expid17'\n },\n {\n variantId: 'var1',\n experimentId: 'expid18'\n },\n {\n variantId: 'var1',\n experimentId: 'expid19'\n },\n {\n variantId: 'var1',\n experimentId: 'expid20'\n },\n {\n variantId: 'var1',\n experimentId: 'expid21'\n },\n {\n variantId: 'var1',\n experimentId: 'expid22'\n },\n {\n variantId: 'var1',\n experimentId: 'expid23'\n },\n {\n variantId: 'var1',\n experimentId: 'expid24'\n },\n {\n variantId: 'var1',\n experimentId: 'expid25'\n }\n ];\n\n public getConfigForClientSideInit(): Promise {\n return Promise.resolve({});\n }\n public initializeClientSide(config: any): boolean {\n console.log(`Initialize client side called on MsDyn365ExpTestConnector with config ${config}`);\n return true;\n }\n\n public getExperiments(): Promise {\n return Promise.resolve({\n name: 'msdyn365-exp-test-2',\n experiments: [\n {\n id: 'expid1',\n friendlyName: 'experiment-1',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n link: 'www.msdyn365-exp-test-connector/expid1',\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var3',\n friendlyName: 'variant-3',\n status: State.Draft,\n weight: '0.2'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid2',\n friendlyName: 'experiment-2',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Paused,\n link: 'www.msdyn365-exp-test-connector/expid2',\n variations: [\n {\n id: 'var3',\n friendlyName: 'variant-3',\n status: State.Paused,\n weight: '1.0'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid3',\n friendlyName: 'experiment-3',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Archived,\n variations: [\n {\n id: 'var4',\n friendlyName: 'variant-4',\n status: State.Archived,\n weight: '1.0'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid4',\n friendlyName: 'experiment-4',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid5',\n friendlyName: 'experiment-5',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid6',\n friendlyName: 'experiment-6',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid7',\n friendlyName: 'experiment-7',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid8',\n friendlyName: 'experiment-8',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid9',\n friendlyName: 'experiment-9',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid10',\n friendlyName: 'experiment-10',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid11',\n friendlyName: 'experiment-11',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid12',\n friendlyName: 'experiment-12',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid13',\n friendlyName: 'experiment-13',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid14',\n friendlyName: 'experiment-14',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid15',\n friendlyName: 'experiment-15',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid16',\n friendlyName: 'experiment-16',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid17',\n friendlyName: 'experiment-17',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid18',\n friendlyName: 'experiment-18',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid19',\n friendlyName: 'experiment-19',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid20',\n friendlyName: 'experiment-20',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid21',\n friendlyName: 'experiment-21',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid22',\n friendlyName: 'experiment-22',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid23',\n friendlyName: 'experiment-23',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid24',\n friendlyName: 'experiment-24',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid25',\n friendlyName: 'experiment-25',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n }\n ]\n });\n }\n public getVariantsForUser(userId: string, attributes?: { [index: string]: string } | undefined): IVariants[] {\n if (userId.match(/^[0-3].*$/)) {\n return this.variantSet1;\n } else if (userId.match(/^[4-7].*$/)) {\n return this.variantSet2;\n } else if (userId.match(/^[8-9|a-b].*$/)) {\n return this.variantSet3;\n } else {\n return this.variantSet4;\n }\n }\n public activateExperiment(userId: string, experiments: IVariants[], attributes?: { [index: string]: string } | undefined): boolean {\n console.log(\n `Active experiment called on MsDyn365ExpTestConnector with userId: ${userId}, experiments: ${JSON.stringify(\n experiments\n )}, attributes: ${JSON.stringify(attributes)}`\n );\n return true;\n }\n public initialize(config: any, secretManager?: ISecretManager): Promise {\n console.log(`MsDyn365 Exp Test Connector called with config: ${JSON.stringify(config)}`);\n return Promise.resolve(true);\n }\n}\n\nconst connector = new MsDyn365ExpTestConnector();\nexport default connector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ChannelIdentity } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Interface of Channel Identity..\n */\ninterface IChannelIdentity {\n channelIdentities: ChannelIdentity[];\n}\n\n/**\n * Calls the Retail API and returns the channels.\n * @returns - List of channel identity.\n */\nconst getChannels = () => async (ctx: IActionContext): Promise => {\n return getChannelsAsync({\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n });\n};\n\n/**\n * Action input.\n */\nexport class GetChannelIdentitiesInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ChannelIdentities', this.apiSettings);\n\n public getCacheObjectType = () => 'ChannelIdentities';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData - Action Data Input.\n * @returns - Input object.\n */\nconst createChannelIdentitiesInput = (inputData: ICreateActionContext>) => {\n return new GetChannelIdentitiesInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Get channels action.\n * @param input - Input data.\n * @param context - Action context.\n * @returns - Channel Identity.\n */\nexport async function getChannelsAction(input: GetChannelIdentitiesInput, context: IActionContext): Promise {\n if (!context) {\n throw new Error('getChannelsAction - Action context cannot be null/undefined');\n }\n\n let channels: ChannelIdentity[] = [];\n\n try {\n channels = await getChannels()(context);\n } catch (error) {\n throw error;\n }\n\n return { channelIdentities: channels };\n}\n\n/**\n * Get sales order with hydrations action.\n * @param id - Unique Id for data action.\n * @param context - Action context.\n * @param input - Input for data action.\n * @returns Channel api response.\n */\nexport const getChannelsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-channels',\n action: >getChannelsAction,\n input: createChannelIdentitiesInput\n});\n\nexport default getChannelsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { OrgUnitLocation, SearchArea } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitLocationsByAreaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Interface of Org Unit Locations.\n */\ninterface IOrgUnitLocations {\n orgUnitLocations: OrgUnitLocation[];\n}\n\nconst searchArea: SearchArea = {\n Radius: Math.max(),\n DistanceUnitValue: 0 // 0 is miles\n};\n\n/**\n * Calls the Retail API and returns the orgUnitLocations.\n * @returns - List Org Unit Locations.\n */\nconst getOrgUnitLocations = () => async (ctx: IActionContext): Promise => {\n return getOrgUnitLocationsByAreaAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n searchArea\n );\n};\n\n/**\n * Action input.\n */\nexport class GetOrgUnitLocationsInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('OrgUnitLocations', this.apiSettings);\n\n public getCacheObjectType = () => 'OrgUnitLocations';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData - Action Context.\n * @returns - Org Unit Location input.\n */\nconst createOrgUnitLocationsInput = (inputData: ICreateActionContext>) => {\n return new GetOrgUnitLocationsInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Get orgUnitLocations action.\n * @param input - Org UNit Locations Input.\n * @param context - Action Context.\n */\nexport async function getOrgUnitLocationsAction(input: GetOrgUnitLocationsInput, context: IActionContext): Promise {\n if (!context) {\n throw new Error('getOrgUnitLocationsAction - Action context cannot be null/undefined');\n }\n\n let orgUnitLocations: OrgUnitLocation[] = [];\n\n try {\n orgUnitLocations = await getOrgUnitLocations()(context);\n } catch (error) {\n throw error;\n }\n\n return { orgUnitLocations };\n}\n\nexport const getOrgUnitLocationsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-org-unit-locations',\n action: >getOrgUnitLocationsAction,\n input: createOrgUnitLocationsInput\n});\n\nexport default getOrgUnitLocationsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductDeliveryOptions, SalesOrder, SimpleProduct, TransactionType } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n getSalesOrderDetailsBySalesIdAsync,\n getSalesOrderDetailsByTransactionIdAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g';\nimport {\n ArrayExtensions,\n buildCacheKey,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Sales order response interface.\n */\ninterface ISalesOrderWithHydrations {\n salesOrder: SalesOrder;\n products: SimpleProduct[];\n productDeliveryOptions?: ProductDeliveryOptions[];\n}\n\n/**\n * OrderTypes Types of orders.\n */\nexport enum orderTypes {\n salesOrder = 'salesOrder',\n transaction = 'transaction'\n}\n\n/**\n * Calls the Retail API and returns the sales order.\n * @param orderType - OrderType.\n * @param orderId - Unique OrderId for each order.\n * @returns Sales Order.\n */\nconst getSalesOrder = (orderType: string = '', orderId: string = '') => async (\n context: IActionContext\n): Promise => {\n // Local (1) searches the retail server database, and remote (2) searches\n // on the headquarters side. All (3) and none (0) are not supported.\n const localSearch = 1;\n return orderType === orderTypes.salesOrder\n ? getSalesOrderDetailsBySalesIdAsync({ callerContext: context }, orderId)\n : getSalesOrderDetailsByTransactionIdAsync({ callerContext: context }, orderId, localSearch);\n};\n\n/**\n * Calls the Retail API and returns the products.\n * @param productIds - The product ids of the product to retrieve.\n * @param channelId - The channel id for the products.\n * @returns Simple product data.\n */\nconst getProducts = (productIds: (string | number)[] = [], channelId?: number) => async (\n context: IActionContext\n): Promise => {\n const productInputs = productIds.map(\n productId => new ProductInput(productId, context.requestContext.apiSettings, channelId, undefined, context.requestContext)\n );\n return getSimpleProducts(productInputs, context);\n};\n\n/**\n * Action input.\n */\nexport class GetSalesOrderConfirmationWithHydrationsInput implements IActionInput {\n public orderType: string;\n\n public orderId: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(orderType: string, orderId: string, apiSettings: ICommerceApiSettings) {\n this.orderType = orderType;\n this.orderId = orderId;\n this.apiSettings = apiSettings;\n }\n\n /**\n * Get cache key.\n * @returns String.\n */\n public getCacheKey = () => buildCacheKey('SalesOrderConfirmationWithHydrations', this.apiSettings);\n\n /**\n * Get cache object.\n * @returns String.\n */\n public getCacheObjectType = () => `SalesOrderConfirmationWithHydrations-${this.orderType}-${this.orderId}`;\n\n /**\n * Get cache data type.\n * @returns String.\n */\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData - Actioncontext data.\n * @returns Sales Order Input.\n */\nconst createSalesOrderConfrimationWithHydrationsInput = (inputData: ICreateActionContext) => {\n const { salesId = '', transactionId = '' } = inputData.requestContext.query || {};\n if (salesId) {\n return new GetSalesOrderConfirmationWithHydrationsInput(orderTypes.salesOrder, salesId, inputData.requestContext.apiSettings);\n } else if (transactionId) {\n return new GetSalesOrderConfirmationWithHydrationsInput(\n orderTypes.transaction,\n transactionId,\n inputData.requestContext.apiSettings\n );\n }\n throw new Error('createSalesOrderConfrimationWithHydrationsInput - No salesId or transactionId provided.');\n};\n\n/**\n * Get sales order with hydrations action.\n * @param input - Input for data action.\n * @param context - Action context.\n * @returns Sales order response.\n */\nexport async function getSalesOrderConfirmationWithHydrationsAction(\n input: GetSalesOrderConfirmationWithHydrationsInput,\n context: IActionContext\n): Promise {\n if (!context) {\n throw new Error('getSalesOrderConfirmationWithHydrationsAction - Action context cannot be null/undefined');\n }\n\n const { orderType, orderId } = input;\n\n if (!orderType || !orderId) {\n context.trace('[getSalesOrderConfirmationWithHydrationsAction] No orderType or orderId provided.');\n return {};\n }\n\n const salesOrder = await getSalesOrder(orderType, orderId)(context);\n\n if (!salesOrder) {\n context.trace('[getSalesOrderWithHydrationsAction] No salesOrder found.');\n return {};\n }\n\n // If it is salesInvoice, return salesOrder and empty products\n if (salesOrder.TransactionTypeValue === TransactionType.SalesInvoice) {\n return {\n salesOrder,\n products: []\n };\n }\n\n if (!ArrayExtensions.hasElements(salesOrder.SalesLines)) {\n context.trace('[getSalesOrderWithHydrationsAction] No salesLine found.');\n return {};\n }\n\n const productIds = salesOrder.SalesLines.map(salesLine => salesLine.ProductId ?? '');\n\n if (!ArrayExtensions.hasElements(productIds)) {\n context.trace('[getSalesOrderWithHydrationsAction] No products in saleLines found.');\n return {};\n }\n\n const products = await getProducts(productIds, salesOrder.ChannelId)(context);\n\n if (!ArrayExtensions.hasElements(products)) {\n context.trace('[getSalesOrderWithHydrationsAction] No simple products found.');\n return {};\n }\n\n const validProducts = products.filter(product => !ObjectExtensions.isNullOrUndefined(product.RecordId));\n const filterPickup = 4;\n const deliveryOptions = await getDeliveryOptionsAsync(\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\n validProducts.map(product => product.RecordId),\n {},\n filterPickup\n )\n .then(result => {\n return result;\n })\n .catch((error: Error) => {\n context.trace(error.message);\n context.telemetry.exception(error);\n context.telemetry.debug('[getDeliveryOptionsForCartLineItems]Error executing action');\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n\n return {\n salesOrder,\n products,\n deliveryOptions\n };\n}\n\n/**\n * Get sales order with hydrations action.\n * @param id - Unique Id for data action.\n * @param context - Action context.\n * @param input - Input for data action.\n * @returns Sales order response.\n */\nexport const getSalesOrderConfirmationWithHydrationsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-sales-order-confirmation-with-hydrations',\n action: >getSalesOrderConfirmationWithHydrationsAction,\n input: createSalesOrderConfrimationWithHydrationsInput\n});\n\nexport default getSalesOrderConfirmationWithHydrationsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport {\n ChannelReferenceLookupCriteria,\n OrderShipments,\n SalesOrder,\n SalesOrdersDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IOrderHistory.\n */\nexport interface IOrderHistory {\n salesOrders: OrderShipments[];\n products: SimpleProduct[];\n}\n\n/**\n * Action input.\n */\nexport class GetSalesOrderDetailsByConfirmationInput implements IActionInput {\n public channelReferenceLookupCriteria: ChannelReferenceLookupCriteria | null;\n\n public confirmationId: string | undefined;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n public constructor(channelReferenceLookupCriteria: ChannelReferenceLookupCriteria | null, apiSettings: ICommerceApiSettings) {\n this.channelReferenceLookupCriteria = channelReferenceLookupCriteria;\n this.apiSettings = apiSettings;\n this.confirmationId = channelReferenceLookupCriteria?.ChannelReferenceId;\n }\n\n /**\n * GetCacheKey.\n * @returns - String.\n */\n public getCacheKey = (): string => buildCacheKey(`OrderDetails-${this.confirmationId ? this.confirmationId : ''}`, this.apiSettings);\n\n /**\n * GetCacheObjectType.\n * @returns - String.\n */\n public getCacheObjectType = (): string => 'OrderDetails';\n\n /**\n * DataCacheType.\n * @returns - String.\n */\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Get sales order details by confirmation id action.\n * @param input - GetOrderHistory hydration input.\n * @param context - Channel context.\n * @returns - Sales Order Details.\n */\nexport async function getSalesOrderDetailsByChannelReferenceIdAction(\n input: GetSalesOrderDetailsByConfirmationInput,\n context: IActionContext\n): Promise {\n return SalesOrdersDataActions.getOrderByChannelReferenceLookupCriteriaAsync(\n { callerContext: context },\n input.channelReferenceLookupCriteria\n );\n}\n\n/**\n * GetSalesOrderDetailsByConfirmationIdDataAction.\n * @returns -- IObservableAction.\n */\nexport const getSalesOrderDetailsByChannelReferenceIdDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/order-lookup/get-sales-order-details-by-confirmation-id',\n action: getSalesOrderDetailsByChannelReferenceIdAction as IAction\n});\n\nexport default getSalesOrderDetailsByChannelReferenceIdDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport {\n ChannelReferenceAdditionalLookupCriteria,\n ChannelReferenceLookupCriteria,\n ExtensibleEnumeration,\n IDictionary,\n ProductDeliveryOptions,\n ProductsDataActions,\n SalesOrder,\n SalesOrdersDataActions,\n SearchLocation,\n SimpleProduct,\n StoreOperationsDataActions,\n TransactionType,\n SalesLine\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n buildCacheKey,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n getSalesOrderDetailsByChannelReferenceIdAction,\n GetSalesOrderDetailsByConfirmationInput\n} from './get-sales-order-details-by-confirmation-id';\n\n/**\n * ISalesOrderWithHydrations.\n */\ninterface ISalesOrderWithHydrations {\n salesOrder: SalesOrder;\n products: SimpleProduct[];\n productDeliveryOptions?: ProductDeliveryOptions[];\n}\n\n/**\n * AdditionalLookupCriteria entity interface.\n */\nexport interface IAdditionalLookupCriteria {\n orderStatusLookUpParameterTypeName: string;\n orderStatusLookUpParameterValue: string;\n}\n\n/**\n * OrderTypes Types of orders.\n */\nexport enum orderTypes {\n salesOrder = 'salesOrder',\n transaction = 'transaction'\n}\n\n/**\n * GetQueryStringParameters.\n * @param context -- URL.\n * @returns Additional lookup criteria -- IAdditionalLookupCriteria[].\n */\nconst getQueryStringParameters = (context: IActionContext): IAdditionalLookupCriteria[] => {\n const addtionalLookupParameter: IAdditionalLookupCriteria[] = [];\n let query: IDictionary;\n if (context.requestContext.query) {\n query = context.requestContext.query;\n const queryArray = Object.entries(query);\n\n for (let index = 1; index <= queryArray.length; index++) {\n const additionalFieldName: string = `field${index}Name`;\n const additionalFieldValue = `field${index}Value`;\n if (additionalFieldName in query && additionalFieldValue in query) {\n addtionalLookupParameter.push({\n orderStatusLookUpParameterTypeName: query[additionalFieldName],\n orderStatusLookUpParameterValue: query[additionalFieldValue]\n });\n }\n }\n }\n return addtionalLookupParameter;\n};\n\n/**\n * Calls the Retail API and returns the sales order for anonymous user.\n * @param confirmationId -- Confirmation Id.\n * @returns SalesOrder -- Promise.\n */\nconst getSalesOrderDetailsByLookupCriteria = (confirmationId: string) => async (context: IActionContext): Promise => {\n const { propertyName = '', propertyValue = '' } = context.requestContext.query ?? {};\n\n const addtionalLookupParameter: IAdditionalLookupCriteria[] = getQueryStringParameters(context);\n\n const getExtensibleEnumerations = await StoreOperationsDataActions.getExtensibleEnumerationsAsync({ callerContext: context });\n\n const orderLookupExtensibleEnum: ExtensibleEnumeration[] =\n getExtensibleEnumerations.find(item => item.TypeName === 'OrderLookupAdditionalCriteriaType')?.ExtensibleEnumerations ?? [];\n\n const channelReferenceAdditionalLookupCriteria: ChannelReferenceAdditionalLookupCriteria[] = [];\n\n for (const item of orderLookupExtensibleEnum) {\n const retailProxyValue: string = item.Name.toLocaleLowerCase();\n const retailProxyTypeValue: number = item.Value;\n const orderLookupSearchPropertyName: string = propertyName.toLocaleLowerCase();\n if (retailProxyValue === orderLookupSearchPropertyName) {\n channelReferenceAdditionalLookupCriteria.push({\n OrderLookupAdditionalCriteriaTypeValue: item.Value,\n OrderLookupAdditionalCriteriaTypeParameterValue: propertyValue\n });\n }\n if (ArrayExtensions.hasElements(addtionalLookupParameter)) {\n for (const additionalItem of addtionalLookupParameter) {\n if (retailProxyValue === additionalItem.orderStatusLookUpParameterTypeName.toLocaleLowerCase()) {\n channelReferenceAdditionalLookupCriteria.push({\n OrderLookupAdditionalCriteriaTypeValue: retailProxyTypeValue,\n OrderLookupAdditionalCriteriaTypeParameterValue: additionalItem.orderStatusLookUpParameterValue\n });\n }\n }\n }\n }\n\n const channelReferenceLookupCriteria: ChannelReferenceLookupCriteria = {\n ChannelReferenceId: confirmationId,\n ChannelReferenceAdditionalLookupCriteria: channelReferenceAdditionalLookupCriteria\n };\n\n const input = new GetSalesOrderDetailsByConfirmationInput(channelReferenceLookupCriteria, context.requestContext.apiSettings);\n\n return getSalesOrderDetailsByChannelReferenceIdAction(input, context);\n};\n\n/**\n * Calls the Retail API and returns the sales order.\n * @param orderType -- Order Type.\n * @param orderId -- Order id.\n * @returns SalesOrder -- Promise.\n */\nconst getSalesOrder = (orderType: string = '', orderId: string = '') => async (context: IActionContext): Promise => {\n const { confirmationId = '' } = context.requestContext.query ?? {};\n\n if (confirmationId) {\n return getSalesOrderDetailsByLookupCriteria(confirmationId)(context);\n } else if (orderType === orderTypes.salesOrder) {\n return SalesOrdersDataActions.getSalesOrderDetailsBySalesIdAsync({ callerContext: context }, orderId);\n }\n\n return SalesOrdersDataActions.getSalesOrderDetailsByTransactionIdAsync({ callerContext: context }, orderId, SearchLocation.All);\n};\n\n/**\n * Calls the Retail API and returns the products.\n * @param productIds - The product ids of the product to retrieve.\n * @param channelId - The channel id for the products.\n * @returns Simple product data.\n */\nconst getProducts = (productIds: (string | number)[] = [], channelId?: number) => async (\n context: IActionContext\n): Promise => {\n const productInputs = productIds.map(\n productId => new ProductInput(productId, context.requestContext.apiSettings, channelId, undefined, context.requestContext)\n );\n return getSimpleProducts(productInputs, context);\n};\n\n/**\n * Action input.\n */\nexport class GetSalesOrderWithHydrationsInput implements IActionInput {\n public orderType: string | undefined;\n\n public orderId: string | undefined;\n\n public confirmationId: string | undefined;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n public constructor(\n orderType: string | undefined,\n orderId: string | undefined,\n apiSettings: ICommerceApiSettings,\n confirmationId?: string\n ) {\n this.orderType = orderType;\n this.orderId = orderId;\n this.apiSettings = apiSettings;\n this.confirmationId = confirmationId;\n }\n\n /**\n * GetCacheKey.\n * @returns String.\n */\n public getCacheKey = (): string => buildCacheKey('SalesOrderWithHydrations', this.apiSettings);\n\n /**\n * GetCacheObjectType.\n * @returns String.\n */\n public getCacheObjectType = (): string =>\n `SalesOrderWithHydrations-${this.orderType ?? ''}-${this.orderId ?? ''}-${this.confirmationId ?? ''}`;\n\n /**\n * DataCacheType.\n * @returns CacheType.\n */\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData -- InputData as ICreateActionContext.\n * @returns Action Input.\n */\nconst createSalesOrderWithHydrationsInput = (inputData: ICreateActionContext) => {\n const { salesId = '', transactionId = '', confirmationId = '' } = inputData.requestContext.query ?? {};\n\n if (confirmationId) {\n const orderType = undefined;\n const orderId = undefined;\n return new GetSalesOrderWithHydrationsInput(orderType, orderId, inputData.requestContext.apiSettings, confirmationId);\n } else if (salesId) {\n return new GetSalesOrderWithHydrationsInput(orderTypes.salesOrder, salesId, inputData.requestContext.apiSettings);\n } else if (transactionId) {\n return new GetSalesOrderWithHydrationsInput(orderTypes.transaction, transactionId, inputData.requestContext.apiSettings);\n }\n\n throw new Error('createSalesOrderWithHydrationsInput - No salesId, confirmationId or transactionId provided.');\n};\n\n/**\n * Get sales order with hydrations action.\n * @param input -- Input.\n * @param context -- Context.\n * @returns ISalesOrderWithHydrations.\n */\nexport async function getSalesOrderWithHydrationsAction(\n input: GetSalesOrderWithHydrationsInput,\n context: IActionContext\n): Promise {\n const { orderType, orderId } = input;\n\n const { confirmationId = '' } = context.requestContext.query ?? {};\n\n if (context.requestContext.user.isAuthenticated && (!orderType || !orderId) && !confirmationId) {\n context.trace('[getSalesOrderWithHydrationsAction] No orderType or orderId or confirmationId provided.');\n return {};\n }\n\n const salesOrder = await getSalesOrder(orderType, orderId)(context);\n if (salesOrder && salesOrder.SalesLines) {\n salesOrder.SalesLines = salesOrder.SalesLines.filter((saleline: SalesLine) => !saleline.IsVoided);\n }\n\n if (!salesOrder) {\n context.trace('[getSalesOrderWithHydrationsAction] No salesOrder found.');\n return {};\n }\n\n // If it is salesInvoice, return salesOrder and empty products\n if (salesOrder.TransactionTypeValue === TransactionType.SalesInvoice) {\n return {\n salesOrder,\n products: []\n };\n }\n\n if (!ArrayExtensions.hasElements(salesOrder.SalesLines)) {\n context.trace('[getSalesOrderWithHydrationsAction] No salesLine found.');\n return {};\n }\n\n const productIds = salesOrder.SalesLines.map(salesLine => salesLine.ProductId ?? '');\n\n if (!ArrayExtensions.hasElements(productIds)) {\n context.trace('[getSalesOrderWithHydrationsAction] No products in saleLines found.');\n return {};\n }\n\n const products = await getProducts(productIds, salesOrder.ChannelId)(context);\n\n if (!ArrayExtensions.hasElements(products)) {\n context.trace('[getSalesOrderWithHydrationsAction] No simple products found.');\n return {};\n }\n\n const validProducts = products.filter(product => !ObjectExtensions.isNullOrUndefined(product.RecordId));\n\n const deliveryOptions = await ProductsDataActions.getDeliveryOptionsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n validProducts.map(product => product.RecordId),\n {},\n 4\n )\n .then(result => {\n return result;\n })\n .catch((error: Error) => {\n context.trace(error.message);\n context.telemetry.exception(error);\n context.telemetry.debug('[getDeliveryOptionsForCartLineItems]Error executing action');\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n\n return {\n salesOrder,\n products,\n deliveryOptions\n };\n}\n\n/**\n * GetSalesOrderWithHydrationsAction Data Action.\n * @param options -- Options.\n */\nexport const getSalesOrderWithHydrationsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-sales-order-with-hydrations',\n action: getSalesOrderWithHydrationsAction as IAction,\n input: createSalesOrderWithHydrationsInput\n});\n\nexport default getSalesOrderWithHydrationsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetTenderTypesInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { TenderType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Tender Types Data Action.\n */\nexport const retailActionDataAction = createObservableDataAction({\n action: >retailAction,\n input: () => createGetTenderTypesInput({})\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport {\n buildCacheKeyWithUrlTokens,\n getFullOrderTemplate,\n GetFullOrderTemplateInput,\n IQueryResultSettingsModuleConfig,\n OrderTemplate,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for getActiveOrderTemplateLines data action.\n */\nexport class ActiveOrderTemplateLinesInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public orderTemplateId: string;\n\n public queryResultSettings: IQueryResultSettings;\n\n constructor(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig) {\n if (!requestContext.query?.id) {\n throw new Error('Failed to get order template id from the query.');\n }\n if (!config) {\n throw new Error('Failed to get order template module configuration');\n }\n this.orderTemplateId = requestContext.query.id;\n this.queryResultSettings = QueryResultSettingsProxy.fromModuleData(requestContext, config).QueryResultSettings;\n\n this.queryResultSettings.count = true;\n this.requestContext = requestContext;\n }\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ActiveOrderTemplateLines', this.requestContext);\n\n public getCacheObjectType = (): string => 'ActiveOrderTemplateLines';\n\n public dataCacheType = (): CacheType => 'instance';\n\n public shouldCacheOutput = () => false;\n}\n\n/**\n * Calls the Retail API and returns a ProductList object based on the passed GetCartInput.\n * @param input\n * @param context\n */\nexport async function getActiveOrderTemplateLines(input: ActiveOrderTemplateLinesInput, context: IActionContext): Promise {\n return getFullOrderTemplate(new GetFullOrderTemplateInput(input.orderTemplateId, input.queryResultSettings), context);\n}\n\nexport const getActiveOrderTemplateLinesDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-template/order-template/get-order-template-lines',\n action: >getActiveOrderTemplateLines,\n input: (context: ICreateActionContext) => {\n if (!context.config) {\n throw new Error('Failed to get order template module configuration');\n }\n return new ActiveOrderTemplateLinesInput(context.requestContext, context.config);\n }\n});\n\nexport default getActiveOrderTemplateLinesDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getFriendlyName,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport {\n buildCacheKeyWithUrlTokens,\n CurrentCategoryInput,\n getCategoryUrl,\n getCurrentCategory\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/**\n * Category Page Summary Input\n */\nexport class CategoryPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'CategoryPageSummary';\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('CategoryPageSummary', this.requestContext);\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createGetCurrentCategoryInput = (inputData: IActionContext): CurrentCategoryInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n/**\n * Get skip count.\n * @param inputData\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): string | undefined {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skip;\n}\n\nconst action = async (input: CategoryPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let currentCategoryResult;\n try {\n currentCategoryResult = await getCurrentCategory(createGetCurrentCategoryInput(context), context);\n } catch {\n // Do nothing, if the action fails fallback to values defined in data\n }\n if (currentCategoryResult) {\n const currentCategory = { ...currentCategoryResult };\n let categoryUrl: string | undefined;\n try {\n // Reset category's name neutralizedName\n const localName = getFriendlyName(context.requestContext.locale, currentCategory.NameTranslations);\n const neutralizedName = currentCategory.NeutralizedName || currentCategory.Name;\n currentCategory.Name = localName;\n currentCategory.NeutralizedName = neutralizedName;\n categoryUrl = getCategoryUrl(currentCategory);\n\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (categoryUrl && canonicalDomain) {\n categoryUrl = `https://${canonicalDomain}${categoryUrl}`.toLocaleLowerCase();\n const skipCount = getSkipCount(context);\n if (skipCount) {\n const Url = new URL(categoryUrl);\n const urlParams: URLSearchParams = new URLSearchParams(Url.search);\n urlParams.set('skip', skipCount);\n Url.search = urlParams.toString();\n categoryUrl = Url.toString();\n }\n } else {\n categoryUrl = undefined;\n }\n } catch {\n categoryUrl = undefined;\n }\n return {\n title: currentCategory.Name,\n sharingImageUrl: currentCategory.OfflineImage,\n canonicalUrl: categoryUrl,\n faviconUrl: config && config.faviconUrl\n };\n\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n }\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/category-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new CategoryPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { buildCacheKeyWithUrlTokens } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IDefaultPageSummaryConfig } from './default-page-summary.props.autogenerated';\n\nexport interface IPageSummaryData {\n title?: string;\n description?: string;\n keywords?: string;\n sharingImageUrl?: string;\n canonicalUrl?: string;\n faviconUrl?: string;\n}\n\n/**\n * Page Summary Input\n */\nexport class PageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'PageSummary';\n\n public getCacheKey = (): string => `${buildCacheKeyWithUrlTokens('PageSummary', this.requestContext)}-${this.config.title}`;\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst action = async (input: PageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n return {\n title: config && config.title,\n description: config && config.description,\n keywords: config && config.keywords,\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\n canonicalUrl:\n context.requestContext && context.requestContext.canonicalUrl\n ? context.requestContext.canonicalUrl.toLocaleLowerCase()\n : undefined,\n faviconUrl: config && config.faviconUrl\n };\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/default-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new PageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { Image, ISubList } from '@msdyn365-commerce-modules/data-types';\nimport { buildCacheKeyWithUrlTokens, getList, ListInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IProductItem } from '@msdyn365-commerce-modules/retail-actions/dist/types/get-list';\n\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/**\n * List Page Summary Input\n */\nexport class ListPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'ListPageSummary';\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ListPageSummary', this.requestContext);\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * List item type enum.\n */\nenum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Get the url of sub list.\n * @param listName\n * @param sitePath\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if (!sitePath) {\n return `/${listName}.l`;\n }\n\n // SitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get sub list item.\n * @param item\n * @param sitePathOfRequest\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path.\n * @param inputData\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page.\n * @param inputData\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count.\n * @param inputData\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount\n ? Number(inputData.requestContext.query.skipCount)\n : 0;\n}\n\n/**\n * Get images.\n * @param images\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // Add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get input list data.\n * @param inputData\n */\nfunction getInputListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\nconst createGetListInput = (inputData: IActionContext): ListInput => {\n const listData: IGeneric = getInputListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // If any elements in product list, then copy it and add to list items\n if (productList.length > 0) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // Build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // Add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // Save the last portion of product items.\n if (productList.length > 0) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nconst action = async (input: ListPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let listData;\n try {\n listData = await getList(createGetListInput(context), context);\n } catch {\n // Do nothing, if there's an error running the action fall back to values defined from data\n }\n if (listData && listData.Title) {\n return {\n title: listData.Title,\n description: listData.Description\n };\n\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n description: config.description\n };\n }\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/list-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new ListPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getAttributeValuesAsync, getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n ArrayExtensions,\n buildCacheKey,\n generateImageUrl,\n getProductUrlSync,\n getSelectedProductIdFromActionInput,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IPageSummaryData } from '../IPageSummaryData';\nimport { IProductPageSummaryConfig } from './product-page-summary.props.autogenerated';\n\n/**\n * Product Page Summary Input.\n */\nexport class ProductPageSummaryInput implements IActionInput {\n public apiSettings: ICommerceApiSettings;\n\n public config: IProductPageSummaryConfig;\n\n public productId: number;\n\n public catalogId?: number;\n\n public constructor(\n config: IProductPageSummaryConfig,\n apiSettings: ICommerceApiSettings,\n productId: number,\n requestContext?: IRequestContext\n ) {\n this.config = config || {};\n this.apiSettings = apiSettings;\n this.productId = productId;\n\n if (requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n public getCacheObjectType = (): string => 'ProductPageSummary';\n\n public getCacheKey = (): string =>\n `${buildCacheKey('ProductPageSummary', this.apiSettings)}-${this.config.title}-${this.productId}-${this.catalogId ?? 0}`;\n\n public dataCacheType = (): CacheType => 'application';\n}\n\nexport interface IProductPageSummary extends IPageSummaryData {\n price?: number;\n productId?: number;\n productBrand?: string;\n}\n\nconst createInput = (args: ICreateActionContext) => {\n const productId = getSelectedProductIdFromActionInput(args);\n\n if (productId) {\n return new ProductPageSummaryInput(\n args.config,\n args.requestContext.apiSettings,\n +productId,\n args.requestContext\n );\n }\n throw new Error('Unable to create ProductPageSummaryAction input, no productId found on module config or query');\n};\n\n// Checks product attributes for the presence of brand attribute to extract the brand name for product metadata\nconst getProductBrand = async (\n context: IActionContext,\n recordId: number,\n channelId: number,\n catalogId: number\n): Promise => {\n const productAttributes = await getAttributeValuesAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n recordId,\n channelId,\n catalogId\n );\n for (const productAttribute of productAttributes) {\n if (productAttribute.Name === 'Brand') {\n return productAttribute.TextValue;\n }\n }\n return;\n};\n\nconst action = async (input: ProductPageSummaryInput, context: IActionContext): Promise => {\n const { config, productId, apiSettings } = input;\n let simpleProductsData: SimpleProduct[] | undefined;\n try {\n simpleProductsData = ArrayExtensions.validValues(\n await getByIdsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n apiSettings.channelId,\n [productId],\n null,\n input.catalogId ?? 0\n )\n );\n } catch {\n // Do nothing, if there's an error we fall back to values defined from config\n }\n if (ArrayExtensions.hasElements(simpleProductsData)) {\n const simpleProductData = simpleProductsData[0];\n let productUrl: string | undefined;\n try {\n productUrl = getProductUrlSync(simpleProductData, context);\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (productUrl && canonicalDomain) {\n productUrl = `https://${canonicalDomain}${productUrl}`.toLocaleLowerCase();\n } else {\n productUrl = undefined;\n }\n } catch {\n productUrl = undefined;\n }\n let productBrand: string | undefined;\n try {\n productBrand = await getProductBrand(context, productId, apiSettings.channelId, input.catalogId ?? 0);\n } catch {\n productBrand = undefined;\n }\n return {\n title: simpleProductData.Name,\n description: simpleProductData.Description,\n sharingImageUrl: generateImageUrl(simpleProductData.PrimaryImageUrl, apiSettings),\n canonicalUrl: productUrl,\n faviconUrl: config && config.faviconUrl,\n productId: simpleProductData.RecordId,\n price: simpleProductData.AdjustedPrice,\n productBrand\n };\n\n // If the action fails fallback to values defined from config\n } else if (config) {\n return {\n title: config.title,\n description: config.description,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n }\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/product-page-summary',\n action: >action,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ProductComparisonItem, ProductComparisonState } from '../../product-comparison-state';\n\n/**\n * Represents the data for a single product in the comparison.\n */\nexport interface IProductComparisonProductData {\n itemId: string;\n product: SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Input class for GetProductsInProductComparisonInput data action.\n */\nexport class GetProductsInPreviewProductComparisonInput implements IActionInput {\n public readonly items: ProductComparisonItem[];\n\n public constructor(items: ProductComparisonItem[]) {\n this.items = items;\n }\n\n /**\n * Cache key.\n * @returns Cache key.\n */\n public getCacheKey = (): string => 'GetProductsInPreviewProductComparisonInput';\n\n /**\n * Cache object type.\n * @returns Cache object type.\n */\n public getCacheObjectType = (): string => 'GetProductsInPreviewProductComparisonInput';\n\n /**\n * Data cache type.\n * @returns Data cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates input for the data action.\n * @param inputData - Action context info.\n * @returns Action input.\n */\nexport const createGetProductsInPreviewProductComparisonInput = (\n inputData: ICreateActionContext>\n): GetProductsInPreviewProductComparisonInput => {\n const items = ProductComparisonState.instance(inputData.requestContext).items;\n return new GetProductsInPreviewProductComparisonInput(items);\n};\n\n/**\n * Retrieves product data for the items in the comparison.\n * @param input - Action input.\n * @param actionContext - Action context.\n * @returns Products data.\n */\nexport const getProductsInPreviewProductComparisonAction = async (\n input: GetProductsInPreviewProductComparisonInput,\n actionContext: IActionContext\n): Promise => {\n const catalogId = getCatalogId(actionContext.requestContext);\n\n const newInput = input.items.filter(item => item.catalogId === catalogId);\n if (!ArrayExtensions.hasElements(newInput)) {\n return [];\n }\n\n const productInputs = newInput.map(\n item => new ProductInput(item.productId, actionContext.requestContext.apiSettings, undefined, undefined, undefined, item.catalogId)\n );\n\n const simpleProducts = await getSimpleProducts(productInputs, actionContext);\n if (newInput.length !== simpleProducts.length) {\n throw new Error('Product comparison preview: Failed to retrieve products info.');\n }\n\n return newInput.map((item, index) => {\n return {\n itemId: ProductComparisonItem.getItemId(item.productId, item.catalogId),\n product: simpleProducts[index],\n catalogId: item.catalogId\n };\n });\n};\n\n/**\n * Data action to retrieve products info for the items in the comparison.\n */\nexport const getProductsInPreviewProductComparisonDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-comparison/product-comparison-preview/get-products-in-preview-product-comparison',\n action: getProductsInPreviewProductComparisonAction as IAction,\n input: createGetProductsInPreviewProductComparisonInput\n});\n\nexport default getProductsInPreviewProductComparisonDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ComparisonItem } from './comparison-item';\n\n/**\n * Represents a product for comparison.\n */\nexport class ProductComparisonItem extends ComparisonItem {\n public readonly productId: number;\n\n public readonly catalogId: number;\n\n public static getItemId(productId: number, catalogId: number): string {\n return `${productId}-${catalogId}`;\n }\n\n public constructor(productId: number, catalogId: number) {\n const itemId = ProductComparisonItem.getItemId(productId, catalogId);\n super(itemId);\n\n this.productId = productId;\n this.catalogId = catalogId;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Represents an item for comparison.\n */\nexport abstract class ComparisonItem {\n public readonly addedDate: Date;\n\n public readonly itemId: ItemId;\n\n public constructor(itemId: ItemId) {\n this.itemId = itemId;\n this.addedDate = new Date();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICookieContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ProductComparisonItem } from './base';\nimport { ComparisonManager } from './comparison-manager';\n\n/**\n * Represents a product comparison manager which operates a list of products and cookies to store the list.\n */\nexport class ProductComparisonState extends ComparisonManager {\n private static readonly _productComparisonItemsLocalStorageKey: string = '_msdyn365__productComparisonItems_';\n\n private static _instance?: ProductComparisonState;\n\n private readonly _requestContext: IRequestContext;\n\n public static instance(requestContext: IRequestContext): ProductComparisonState {\n const items = ProductComparisonState._retrieveItemsFromCookies(requestContext);\n\n if (!ProductComparisonState._instance) {\n ProductComparisonState._instance = new ProductComparisonState(requestContext, items);\n } else if (!ArrayExtensions.equals(ProductComparisonState._instance.items, items)) {\n ProductComparisonState._instance.setItems(items);\n }\n\n return ProductComparisonState._instance;\n }\n\n private static _getCookieStorageKey(requestContext: IRequestContext) {\n return `${ProductComparisonState._productComparisonItemsLocalStorageKey}__${requestContext.sitePath ?? ''}__${requestContext.user\n .customerAccountNumber ?? ''}`;\n }\n\n private static _retrieveItemsFromCookies(requestContext: IRequestContext): ProductComparisonItem[] {\n const items = ProductComparisonState._readFromCookie(\n requestContext.cookies,\n ProductComparisonState._getCookieStorageKey(requestContext)\n );\n if (!ArrayExtensions.hasElements(items)) {\n return [];\n }\n return items;\n }\n\n private static _readFromCookie(cookieContext: ICookieContext, cookieKey: string): ProductComparisonItem[] | undefined | null {\n if (!cookieKey) {\n return undefined;\n }\n\n if (!cookieContext.isConsentGiven()) {\n return undefined;\n }\n\n const cookieValue = cookieContext.get(cookieKey);\n\n return cookieValue.value;\n }\n\n private static _writeToCookie(cookieContext: ICookieContext, cookieKey: string, value: ProductComparisonItem[]): void {\n if (!cookieKey) {\n return;\n }\n\n cookieContext.set(cookieKey, value, { secure: true, maxAge: 5_184_000 });\n }\n\n private constructor(requestContext: IRequestContext, items: ProductComparisonItem[]) {\n super(...items);\n\n this._requestContext = requestContext;\n\n this.listModifiedEvent.subscribe({\n /**\n * Unique identifier of the subscriber. Used to identify the subscriber among the other subscribers for the same event.\n */\n instanceId: 'ProductComparisonState instance',\n\n /**\n * Method which should be called once the event is triggered.\n */\n handler: () => {\n ProductComparisonState._writeToCookie(\n this._requestContext.cookies,\n ProductComparisonState._getCookieStorageKey(requestContext),\n this.items\n );\n }\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Event } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ComparisonItem } from './base';\n\n/**\n * Represents base functionality of a comparison manager which operates a list of items for comparison.\n */\nexport class ComparisonManager = ComparisonItem> {\n public readonly listModifiedEvent: Event;\n\n public get lastUpdateDate(): Date {\n return this._lastUpdateDate;\n }\n\n private _lastUpdateDate: Date;\n\n private _comparisonItems: Item[];\n\n public get items(): Item[] {\n return this._comparisonItems;\n }\n\n public constructor(...items: Item[]) {\n this._comparisonItems = items;\n this.listModifiedEvent = new Event();\n this._lastUpdateDate = new Date(Date.now());\n }\n\n public setItems(items: Item[]): void {\n this._comparisonItems = items;\n this._update();\n }\n\n public addItem(item: Item): void {\n this._comparisonItems.push(item);\n this._update();\n }\n\n public clearAll(): void {\n this.setItems([]);\n }\n\n public removeItem(item: Item): void {\n this._comparisonItems = this._comparisonItems.filter(currentItem => currentItem !== item);\n this._update();\n }\n\n public removeItemById(itemId: ItemId): void {\n this._comparisonItems = this._comparisonItems.filter(currentItem => currentItem.itemId !== itemId);\n this._update();\n }\n\n public hasItem(item: Item): boolean {\n return this.items.includes(item);\n }\n\n public hasItemById(itemId: ItemId): boolean {\n return this.items.some(item => item.itemId === itemId);\n }\n\n private _update(): void {\n this._lastUpdateDate = new Date(Date.now());\n this.listModifiedEvent.trigger();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct, RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { AttributeValue, ProductDimensionValueInventoryAvailability, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n AttributesForSelectedVariantInput,\n FullProductInput,\n getAttributesForSelectedVariantAction,\n getFullProductsAction,\n getRatingsSummary,\n GetRatingsSummaryInput,\n ProductDetailsCriteria,\n getDimensionAvailabilitiesForProductsAction,\n ProductsDimensionAvailabilitiesInput\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ProductComparisonItem, ProductComparisonState } from '../../product-comparison-state';\n\n/**\n * Represents the specifications of the product.\n */\nexport interface IProductSpecification {\n productId: number;\n catalogId: number;\n specificationsList: AttributeValue[];\n}\n\n/**\n * Represents the dimension of single product.\n */\nexport interface IDimensionResult {\n result: ProductDimensionValueInventoryAvailability[][];\n}\n\n/**\n * Represents the dimension of the product.\n */\nexport interface IProductDimensionAvailibility {\n dimensions: IDimensionResult[];\n recordId: number;\n masterId: number;\n}\n/**\n * Represents the data for a single product comparison item.\n */\nexport interface IProductComparisonItemData {\n itemId: string;\n productInfo: SimpleProduct;\n catalogId: number;\n price?: ProductPrice;\n rating?: RatingsSummary;\n specifications?: IProductSpecification;\n dimensions?: IProductDimensionAvailibility;\n}\n\n/**\n * Input class for GetProductsInProductComparisonInput data action.\n */\nexport class GetProductsInProductComparisonInput implements IActionInput {\n public readonly items: ProductComparisonItem[];\n\n public constructor(items: ProductComparisonItem[]) {\n this.items = items;\n }\n\n /**\n * Cache key.\n * @returns Cache key.\n */\n public getCacheKey = (): string => 'GetProductsInProductComparisonInput';\n\n /**\n * Cache object type.\n * @returns Cache object type.\n */\n public getCacheObjectType = (): string => 'GetProductsInProductComparison';\n\n /**\n * Data cache type.\n * @returns Data cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates input for the data action.\n * @param inputData - Action context info.\n * @returns Action input.\n */\nexport const createGetProductsInProductComparisonInput = (\n inputData: ICreateActionContext>\n): GetProductsInProductComparisonInput => {\n const items = ProductComparisonState.instance(inputData.requestContext).items;\n return new GetProductsInProductComparisonInput(items);\n};\n\n/**\n * Loads full product info for each comparison item.\n * @param input - Data action input.\n * @param actionContext - Action context.\n * @returns Full product info.\n */\nconst loadFullProducts = async (input: GetProductsInProductComparisonInput, actionContext: IActionContext) => {\n const fullProductInput = input.items.map(\n item =>\n new FullProductInput(\n item.productId,\n actionContext.requestContext.apiSettings,\n new ProductDetailsCriteria(true, true),\n actionContext.requestContext,\n item.catalogId\n )\n );\n\n let productsInfo = await getFullProductsAction(fullProductInput, actionContext);\n productsInfo = ArrayExtensions.validValues(productsInfo);\n\n return productsInfo;\n};\n\n/**\n * Loads ratings for each comparison item.\n * @param input - Data action input.\n * @param actionContext - Action context.\n * @returns Ratings info.\n */\nconst loadRatings = async (input: GetProductsInProductComparisonInput, actionContext: IActionContext) => {\n const apiSettings = actionContext.requestContext.apiSettings;\n const ratingInputs = input.items.map(\n item => new GetRatingsSummaryInput(item.productId.toString(), apiSettings.rnr.id || '', apiSettings.rnr.url || '')\n );\n\n const ratingsPromises = ratingInputs.map(ratingInput => getRatingsSummary(ratingInput, actionContext));\n let ratings = await Promise.all(ratingsPromises);\n ratings = ArrayExtensions.validValues(ratings);\n\n return ratings;\n};\n\n/**\n * Loads product specification for the given product.\n * @param item - Input item.\n * @param product - Product for specification.\n * @param actionContext - Action context.\n * @returns Product specifications.\n */\nconst loadProductSpecifications = async (item: ProductComparisonItem, product: FullProduct, actionContext: IActionContext) => {\n const apiSettings = actionContext.requestContext.apiSettings;\n const input = new AttributesForSelectedVariantInput(\n product.ProductDetails.RecordId,\n apiSettings.channelId,\n product.ProductDetails,\n item.catalogId\n );\n const specificationsList = await getAttributesForSelectedVariantAction(input, actionContext);\n\n const productSpecification: IProductSpecification = {\n productId: product.ProductDetails.RecordId,\n specificationsList,\n catalogId: item.catalogId\n };\n return productSpecification;\n};\n\n/**\n * Loads product specification for each comparison item.\n * @param input - Action input.\n * @param products - Products for specification.\n * @param actionContext - Action context.\n * @returns Products specifications info.\n */\nconst loadProductsSpecifications = async (\n input: GetProductsInProductComparisonInput,\n products: FullProduct[],\n actionContext: IActionContext\n) => {\n const productsSpecificationsPromises = products.map(async (product, index) => {\n const item = input.items[index];\n return loadProductSpecifications(item, product, actionContext);\n });\n\n let productsSpecifications = await Promise.all(productsSpecificationsPromises);\n productsSpecifications = ArrayExtensions.validValues(productsSpecifications);\n\n return productsSpecifications;\n};\n\n/**\n * Loads product dimension for each comparison item.\n * @param products - Products for specification.\n * @param actionContext - Action context.\n * @returns Products specifications info.\n */\nconst loadProductsDimensions = async (products: FullProduct[], actionContext: IActionContext) => {\n const productsDimensionPromises = products.map(async product => {\n const dimensionResult: IDimensionResult[] = [];\n\n for (const item of product.ProductDetails.Dimensions!) {\n const input = new ProductsDimensionAvailabilitiesInput(\n product.ProductDetails.MasterProductId ?? product.ProductDetails.RecordId,\n item.DimensionTypeValue,\n actionContext.requestContext\n );\n await getDimensionAvailabilitiesForProductsAction([input], actionContext).then(result => {\n dimensionResult.push({ result });\n });\n }\n\n product.ProductDetails.Dimensions?.map(async item => {\n return dimensionResult;\n });\n\n const getUpdatedDimension: IProductDimensionAvailibility | undefined =\n dimensionResult.length > 0\n ? {\n dimensions: dimensionResult,\n recordId: product.ProductDetails.RecordId,\n masterId: product.ProductDetails.MasterProductId!\n }\n : undefined;\n return getUpdatedDimension;\n });\n\n let productsDimensions = await Promise.all(productsDimensionPromises);\n productsDimensions = ArrayExtensions.validValues(productsDimensions);\n return productsDimensions;\n};\n\n/**\n * Retrieves product data for the items in the comparison.\n * @param input - Action input.\n * @param actionContext - Action context.\n * @returns Products data.\n */\nexport const getProductsInProductComparisonAction = async (\n input: GetProductsInProductComparisonInput,\n actionContext: IActionContext\n): Promise => {\n const catalogId = getCatalogId(actionContext.requestContext);\n\n const newInput: GetProductsInProductComparisonInput = {\n items: input.items.filter(item => item.catalogId === catalogId),\n getCacheKey: input.getCacheKey,\n getCacheObjectType: input.getCacheObjectType,\n dataCacheType: input.dataCacheType\n };\n\n if (!ArrayExtensions.hasElements(newInput.items)) {\n return [];\n }\n\n const productsPromises = loadFullProducts(newInput, actionContext);\n const ratingsPromises = loadRatings(newInput, actionContext);\n const [products, ratings] = await Promise.all([productsPromises, ratingsPromises]);\n const productDimensions = await loadProductsDimensions(products, actionContext);\n const productsSpecifications = await loadProductsSpecifications(newInput, products, actionContext);\n\n const productsData = newInput.items.map((item, index) => {\n const product = products[index];\n const productData: IProductComparisonItemData = {\n itemId: item.itemId,\n productInfo: product.ProductDetails,\n price: product.ProductPrice,\n catalogId: item.catalogId\n };\n productData.rating = ratings.find(rating => rating.productId === productData.productInfo.RecordId.toString());\n productData.specifications = productsSpecifications.find(\n productSpecifications =>\n productSpecifications.productId === productData.productInfo.RecordId &&\n productSpecifications.catalogId === productData.catalogId\n );\n productData.dimensions = productDimensions.find(dimension => dimension?.recordId === productData.productInfo.RecordId);\n return productData;\n });\n return productsData;\n};\n\n/**\n * Data action to retrieve products info for the items in the comparison.\n */\nexport const getActiveCheckoutCartProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-comparison/product-comparison/get-products-in-product-comparison',\n action: getProductsInProductComparisonAction as IAction,\n input: createGetProductsInProductComparisonInput\n});\n\nexport default getActiveCheckoutCartProductsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { AttributeValue, ProductsDataActions, SimpleProduct, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n getAttributeValuesByConfiguration,\n getSelectedProductIdFromActionInput,\n getSelectedVariant,\n QueryResultSettingsProxy,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Chains getting the SelectedVariant with GetActivePrice.\n */\nexport class AttributesForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.catalogId = catalogId || 0;\n }\n\n public getCacheKey = () => 'AttributesForSelectedVariant';\n\n public getCacheObjectType = () => 'ProductAttributeValue';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createAttributesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): AttributesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n const catalogId = getCatalogId(inputData.requestContext);\n\n if (productId) {\n return new AttributesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, undefined, catalogId);\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * Calls the Retail API a get a list of dimension values for a given product.\n * @param input - The input.\n * @param context - The context.\n * @returns The attribute values.\n */\nexport async function getAttributesForSelectedVariantAction(\n input: AttributesForSelectedVariantInput,\n context: IActionContext\n): Promise {\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(\n input.productId,\n input.channelId,\n undefined,\n undefined,\n context.requestContext\n );\n\n return getSelectedVariant(selectedVariantInput, context);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return ProductsDataActions.getAttributeValuesAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n activeProduct.RecordId,\n input.channelId,\n input.catalogId\n );\n }\n\n return null;\n })\n .then(async (attributeValues: AttributeValue[] | null) => {\n const channelInventoryConfiguration = await StoreOperationsDataActions.getInventoryConfigurationAsync({\n callerContext: context\n });\n\n return { attributeValues, channelInventoryConfiguration };\n })\n .then(result => {\n return getAttributeValuesByConfiguration(result.attributeValues, result.channelInventoryConfiguration);\n })\n .catch((error: Error) => {\n context.trace(error.message);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-info/get-attributes-for-selected-variant',\n action: >getAttributesForSelectedVariantAction,\n input: createAttributesForSelectedVariantInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport {\n buildCacheKeyWithUrlTokens,\n getFullProductList,\n GetFullProductListInput,\n QuickOrderTemplate\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for getActiveOrderTemplateLines data action.\n */\nexport class ActiveProductListInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public productListId: string | undefined;\n\n public constructor(requestContext: IRequestContext, productListId?: string) {\n this.requestContext = requestContext;\n this.productListId = productListId;\n }\n\n /**\n * GetCacheObjectType.\n * @returns - Returns string.\n */\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ActiveProductList', this.requestContext);\n\n /**\n * GetCacheKey.\n * @returns - Returns string.\n */\n public getCacheObjectType = (): string => 'ActiveProductList';\n\n /**\n * DataCacheType.\n * @returns - CacheType string.\n */\n public dataCacheType = (): CacheType => 'instance';\n\n /**\n * Set Cache output.\n * @returns - Flag for cache output.\n */\n public shouldCacheOutput = (): boolean => false;\n}\n\n/**\n * Calls the Retail API and returns a ProductList object for user.\n * @param input - ProductList Input.\n * @param context - ActionContext.\n * @returns - OrderTemplate.\n */\nexport async function getActiveProductList(input: ActiveProductListInput, context: IActionContext): Promise {\n const fullProductListInput = new GetFullProductListInput(input.productListId);\n const productList = await getFullProductList(fullProductListInput, context);\n return productList;\n}\n\n/**\n * Calls the Retail API and returns a ProductList object for user.\n * @param input - ProductList Input.\n * @param context - ActionContext.\n * @returns - ProductList.\n */\nexport const getActiveProductListDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/quick-order-grid/get-product-list',\n action: getActiveProductList as IAction,\n\n /**\n * Method to call for input.\n * @param context - ActionContext.\n * @returns - Input for action..\n */\n input: (context: ICreateActionContext) => {\n return new ActiveProductListInput(context.requestContext);\n }\n});\n\nexport default getActiveProductListDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Reviews } from '@msdyn365-commerce/commerce-entities';\nimport {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n sendRequest\n} from '@msdyn365-commerce/core';\nimport { getRnrEndpointId, getRnrPartnerId, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { GetProductReviewsInput } from './inputs/get-product-reviews-input';\n\n/**\n * TODO: Use this function to create the input required to make the API call.\n * @param input\n */\nexport const createInputForProductReviews = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n // Task #211227597 Remove these hardcoded values.\n return new GetProductReviewsInput(productId, getRnrPartnerId(input), input.requestContext.locale, getRnrEndpointId(input));\n }\n throw new Error('[GetProductReviews] Not all necessary parameters found while creating Input for GetProductReviewsApi');\n};\n\nexport async function getReviewsForGivenProduct(input: GetProductReviewsInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[GetProductReviews] Invalid input. ProductId = ${input.productId}, TenantId = ${input.tenantId}, localeListFilter = ${input.localeListFilter}`\n );\n }\n let requestUrl =\n `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}` +\n `?tenantId=${input.tenantId}` +\n `&localeListFilter=${input.localeListFilter}` +\n `&pageSize=${input.pageSize}` +\n `&orderBy=${input.orderBy}` +\n `&skipItems=${input.skipItems}`;\n\n if (input.starFilters !== undefined && input.starFilters.length > 0) {\n requestUrl = `${requestUrl}&starFilters=${input.starFilters}`;\n }\n\n if (input.pageToken !== null) {\n requestUrl = `${requestUrl}&pageToken=${input.pageToken}`;\n }\n return sendRequest(requestUrl, 'get')\n .then(response => {\n if (response.data && response.data.items && response.data.items.length > 0) {\n return {\n items: response.data.items.filter(i => !i.isTakenDown),\n pagingInfo: response.data.pagingInfo\n };\n }\n ctx.trace('[GetProductReviews] No reviews found for this product.');\n return response.data;\n })\n .catch(error => {\n ctx.trace('[GetProductReviews] Failed to get reviews for product');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetProductReviews] Failed to get reviews for product');\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetProductReviewsInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0 && input.localeListFilter.length > 0 && input.pageSize > 0;\n}\n\nexport const getReviewsForGivenProductDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/get-product-reviews',\n action: >getReviewsForGivenProduct,\n input: createInputForProductReviews\n});\n\nexport default getReviewsForGivenProductDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n sendRequest\n} from '@msdyn365-commerce/core';\nimport { getRnrAuthEndpointId, getRnrPartnerId, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { GetUserReviewInput } from './inputs/get-user-review-input';\n\n/**\n * This method builds the input for the getUserReviewApi call.\n * @param input\n */\nconst createInput = (input: ICreateActionContext): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n const userInfo = input.requestContext.user;\n if (productId && userInfo && userInfo.isAuthenticated) {\n // Task #211227597 Remove these hardcoded values.\n return new GetUserReviewInput(productId, getRnrPartnerId(input), userInfo.token, getRnrAuthEndpointId(input));\n }\n throw new Error('[GetUserReview] Not all necessary parameters found while creating Input for GetUserReviewAPI');\n};\n\n/**\n * This method gets the user's review from the RnR service endpoint.\n * @param input\n * @param ctx\n */\nasync function getUserReview(input: GetUserReviewInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n const errorMessage = `[GettUserReview] Failed to get user's review due to bad input ${input}`;\n ctx.trace(errorMessage);\n throw new Error(errorMessage);\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}/user?tenantId=${input.tenantId}`;\n\n return sendRequest(requestUrl, 'get', null, { headers: { Authorization: `id_token ${input.authorization}` } })\n .then(response => {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- These are valid status code for requests.\n if (response.status !== 200 && response.status !== 201) {\n throw new Error(`An error occurred in getting user review. Response message - ${response.statusText}`);\n }\n return response.data;\n })\n .catch(error => {\n ctx.trace(\"[GettUserReview] Failed to get user's review for product\");\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(\"[GettUserReview] Failed to get user's review for product\");\n ctx.trace(error);\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetUserReviewInput): boolean {\n return input.productId.length > 0 && input.authorization.length > 0 && input.tenantId.length > 0;\n}\n\nexport const getUserReviewDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/get-user-review',\n action: >getUserReview,\n input: createInput\n});\n\nexport default getUserReviewDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nexport type OrderBy =\n | 'None'\n | 'MostRecent'\n | 'Oldest'\n | 'HighestRating'\n | 'LowestRating'\n | 'MostHelpful'\n | 'LeastHelpful'\n | 'MostAsked'\n | 'MostAnswered'\n | 'LeastConcerns'\n | 'MostConcerns'\n | 'ReviewerNameAsc'\n | 'ReviewerNameDesc';\n\n/**\n * ReviewsGetRatingsSummary Input Action.\n */\nexport class GetProductReviewsInput implements IActionInput {\n /**\n * The Id representing the product to get the reviews for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The market for which to get the reviews from.\n */\n public localeListFilter: string;\n\n /**\n * Number of reviews to be shown on each page.\n */\n public pageSize: number;\n\n /**\n * Order in which reviews to be shown.\n */\n public orderBy: string;\n\n /**\n * Need to set this value if reviews need to be filtered with specific star rating .\n */\n public starFilters?: string;\n\n /**\n * Need to set this value if we need to skip few reviews.\n */\n public skipItems: number;\n\n /**\n * The continuation token.\n */\n public pageToken: string | null;\n\n /**\n * Selects which data sources to use to retrieve data.\n */\n public dataSources: string | null;\n\n /**\n * The ratings and reviews service endpoint.\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n localeListFilter: string,\n serviceEndpoint: string,\n orderBy: string = 'MostHelpful',\n starFilters: string = '',\n skipItems: number = 0,\n pageSize: number = 10,\n pageToken: string | null = null,\n dataSources: string | null = null\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.localeListFilter = localeListFilter;\n\n // Max page size which Rnr API supports is 25.\n // Hence if config has page size more than 25, we'll default it to 25.\n this.pageSize = pageSize > 25 ? 25 : pageSize;\n this.orderBy = orderBy;\n this.starFilters = starFilters;\n this.skipItems = skipItems;\n this.pageToken = pageToken;\n this.dataSources = dataSources;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () =>\n `${this.productId}-${this.tenantId}-${this.localeListFilter}-${this.pageSize}-${this.orderBy}-${this.starFilters}-${this.skipItems}`;\n\n public getCacheObjectType = () => 'ProductReview';\n\n public dataCacheType = (): CacheType => 'request';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * These are the get user review API inputs.\n */\nexport class GetUserReviewInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The user's authorization token.\n */\n public authorization: string;\n\n /**\n * The ratings and reviews service endpoint.\n */\n public serviceEndpoint: string;\n\n constructor(productId: string, tenantId: string, authorization: string, serviceEndpoint: string) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.authorization = authorization;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'GetUserReview';\n\n public getCacheObjectType = () => 'GetUserReview';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nexport interface IRatingsReviewsState {\n filterKey: string;\n}\n\nexport function createRatingsReviewsStateInput(result: IRatingsReviewsState): GenericInput {\n return new GenericInput('ratingsReviewsState', result, 'ratingsReviewsStateInput');\n}\n\nconst createInternalRatingsReviewsStateInput = (): IActionInput => {\n return createRatingsReviewsStateInput({ filterKey: '1;2;3;4;5' });\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createInternalRatingsReviewsStateInput\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\nimport { createReadAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\nexport interface IAddressManagementData {\n address: Address;\n}\nexport interface IAddressManagementInput extends IActionInput {\n address: Address;\n userAccountNumber?: string;\n}\n\n/**\n * The input class for the addAddress data action.\n */\nexport class AddressManagementInput implements IAddressManagementInput {\n public address: Address;\n\n public userAccountNumber?: string;\n\n constructor(address: Address, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.address = address;\n }\n\n public getCacheKey = () => 'AddAddress';\n\n public getCacheObjectType = () => 'AddAddress';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the addAddress data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createAddressManagementInput = (\n inputData: ICreateActionContext, IAddressManagementData>\n): IAddressManagementInput => {\n if (inputData.requestContext.user.isAuthenticated) {\n throw new Error('User is not authenticated. Cannot call UpdateAddress API');\n }\n\n const { address } = inputData.data || { address: undefined };\n\n if (!address) {\n throw new Error('address is not provided. Cannot call UpdateAddress API');\n }\n\n return new AddressManagementInput(address);\n};\n\nexport async function doAddressManagementOperation(\n input: IAddressManagementInput,\n ctx: IActionContext,\n operationHandler: (customer: Customer, address: Address) => Customer\n): Promise {\n const { userAccountNumber, address } = input;\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, userAccountNumber, 'none');\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to create customer');\n }\n\n const newCustomer = operationHandler({ ...customer }, address);\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Not able to update customer');\n }\n\n ctx.update(createReadAsync(updatedCustomer.AccountNumber), updatedCustomer);\n\n return updatedCustomer.Addresses || [];\n}\n\nexport function addAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = [...(customer.Addresses || [])];\n customer.Addresses.push(address);\n return customer;\n}\n\nexport async function addAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, addAddressHandler);\n}\n\n/**\n * The addAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Adds the passed address information to the retireved customer, and\n * then updates that customer via the update RetailServer API.\n */\nexport const addAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-address',\n action: >addAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n\nexport default addAddressActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductListLine, ProductListsDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport { ArrayExtensions } from './utilities';\n\n/**\n * Input class for the AddItemToProductList data action.\n */\nexport class AddItemToProductListInput implements IActionInput {\n public readonly productListId: string;\n\n public readonly productId: number;\n\n public readonly quantity: number;\n\n public readonly unitOfMeasure: string;\n\n public constructor(productListId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.productListId = productListId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => 'AddItemToProductListInput';\n\n /**\n * Get Cachetype Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'AddItemToProductListInput';\n\n /**\n * Get Cachetype.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the AddItemToProductList method.\n * @param inputData - The input data passed to the createInput method.\n * @param productListId - The id of product list to update.\n * @param productId - The id of a product to add.\n * @param quantity - How many items of this product to add.\n * @param unitOfMeasure - Product measuring unit.\n * @returns - Input data for productlist add api.\n */\nexport const addItemToProductListInput = (\n inputData: ICreateActionContext,\n productListId: string,\n productId: number,\n quantity: number,\n unitOfMeasure: string\n): AddItemToProductListInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create product list. User is not authenticated.');\n }\n return new AddItemToProductListInput(productListId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the AddItemToProductList data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - ProductList.\n */\nexport async function addItemToProductListAction(input: AddItemToProductListInput, context: IActionContext): Promise {\n try {\n const productListLineToAdd: ProductListLine = {\n ProductListId: input.productListId,\n ProductId: input.productId,\n Quantity: input.quantity,\n UnitOfMeasure: input.unitOfMeasure\n };\n\n const productListLine: ProductListLine[] = await ProductListsDataActions.addProductListLinesAsync(\n {\n callerContext: context\n },\n input.productListId,\n [productListLineToAdd]\n );\n\n if (ArrayExtensions.hasElements(productListLine) && productListLine[0].ProductListId) {\n return productListLine[0];\n }\n context.telemetry.error('Product list line was not returned when adding it to quick order bag');\n throw new Error('Product list line was not returned when adding it to quick order bag');\n } catch (error) {\n context.telemetry.error('Not able to add an item to quick order bag', error);\n throw error;\n }\n}\n\n/**\n * The AddItemToOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport const addItemToProductListActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-item-to-product-list',\n action: addItemToProductListAction as IAction,\n input: addItemToProductListInput\n});\n\nexport default addItemToProductListActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { createBusinessPartnerUserAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\n/**\n * Input class for addOrganizationUser data action.\n */\nexport class AddOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => 'AddOrganizationUser';\n\n public getCacheObjectType = () => 'AddOrganizationUser';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for addOrganizationUser data action.\n * @param inputData\n * @param newUser\n */\nexport const createAddOrganizationUserInput = (\n inputData: ICreateActionContext>,\n newUser: BusinessPartnerUser\n): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new AddOrganizationUserInput(newUser);\n};\n\n/**\n * The addOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser.\n * @param input\n * @param ctx\n */\nexport async function addOrganizationUser(input: AddOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return getCurrentAsync({ callerContext: ctx })\n .then((businessPartner: BusinessPartner) => {\n // Set the new accounts businessPartnerId from the admin account\n user.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n return createBusinessPartnerUserAsync({ callerContext: ctx }, user)\n .then(newUser => {\n return newUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[add-organization-user] Unable to create BusinessPartnerUser account');\n throw new Error('[add-organization-user] Unable to create BusinessPartnerUser account');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[add-organization-user] Unable to get BusinessPartner Admin account');\n throw new Error('[add-organization-user] Unable to get BusinessPartner Admin account');\n });\n}\n\n/**\n * The addOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and adds that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport const addOrganizationUserDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-organization-user',\n action: >addOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createAddOrganizationUserInput)\n});\n\nexport default addOrganizationUserDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IHTTPRequestOptions,\n IHTTPResponse,\n sendCommerceRequest\n} from '@msdyn365-commerce/core';\nimport { Address, CartTenderLine, SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Check Out action Input.\n */\nexport class CheckOutInput implements IActionInput {\n public cartId: string;\n\n public cartVersion: number;\n\n public receiptEmail?: string;\n\n public cartTenderLines?: CartTenderLine[];\n\n public billingAddress?: Address;\n\n constructor(cartId: string, cartVersion: number, receiptEmail?: string, cartTenderLines?: CartTenderLine[], billingAddress?: Address) {\n this.cartId = cartId;\n this.cartVersion = cartVersion;\n this.receiptEmail = receiptEmail;\n this.cartTenderLines = cartTenderLines;\n this.billingAddress = billingAddress;\n }\n\n public getCacheKey = () => `${this.cartId}-${this.cartVersion}`;\n\n public getCacheObjectType = () => 'CheckOut';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail API to check out and returns sales order.\n * @param input\n * @param ctx\n */\nexport async function checkOutAction(input: CheckOutInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n const requestUrl = `${apiSettings.baseUrl}Commerce/Carts('${input.cartId}')/Checkout?api-version=7.3`;\n const requestOptions: IHTTPRequestOptions = {\n headers: {\n oun: apiSettings.oun,\n 'Content-Type': 'application/json'\n }\n };\n\n if (requestOptions.headers && ctx.requestContext.user.token) {\n requestOptions.headers.Authorization = `id_token ${ctx.requestContext.user.token}`;\n }\n\n if (input.cartTenderLines && input.cartTenderLines.length > 0) {\n input.cartTenderLines = input.cartTenderLines.map((cartTenderLineItem: CartTenderLine) => {\n // @ts-expect-error\n cartTenderLineItem['@odata.type'] = '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine';\n\n // @ts-expect-error\n cartTenderLineItem['Amount@odata.type'] = '#Decimal';\n\n if (cartTenderLineItem.TokenizedPaymentCard) {\n // @ts-expect-error\n cartTenderLineItem.TokenizedPaymentCard['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard';\n\n // Force the House prop to be set, so that call succeeds\n if (!cartTenderLineItem.TokenizedPaymentCard.House) {\n cartTenderLineItem.TokenizedPaymentCard.House = 'N/A';\n }\n\n if (cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo) {\n // @ts-expect-error\n cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo';\n }\n\n if (input.billingAddress) {\n const { Phone, ThreeLetterISORegionName = '', Street, City, State, ZipCode } = input.billingAddress;\n cartTenderLineItem.TokenizedPaymentCard = {\n ...cartTenderLineItem.TokenizedPaymentCard,\n Phone,\n Country: ThreeLetterISORegionName.toUpperCase(),\n Address1: Street,\n City,\n State,\n Zip: ZipCode\n };\n }\n }\n\n return cartTenderLineItem;\n });\n }\n\n const requestBody = {\n receiptEmail: input.receiptEmail,\n cartVersion: input.cartVersion || null,\n ...(input.cartTenderLines && { cartTenderLines: input.cartTenderLines })\n };\n\n // Perform check-out operation\n return sendCommerceRequest(requestUrl, 'post', requestBody, requestOptions).then((response: IHTTPResponse) => {\n if (response.status >= 200 && response.status < 300 && response.data) {\n return response.data;\n } else if (response.data) {\n throw response.data;\n }\n throw new Error('[checkOutAction] Invalid response recieved from RetailServer');\n });\n}\n\nexport const checkOutActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/checkout',\n action: >checkOutAction\n});\nexport default checkOutActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductList, ProductListsDataActions } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for the CreateProductList data action.\n */\nexport class CreateProductListInput implements IActionInput {\n public readonly templateName: string;\n\n public readonly templateType: number;\n\n public constructor(templateName: string, templateType: number) {\n this.templateName = templateName;\n this.templateType = templateType;\n }\n\n /**\n * GetCacheObjectType.\n * @returns - Returns string.\n */\n public getCacheKey = (): string => 'CreateProductListInput';\n\n /**\n * GetCacheKey.\n * @returns - Returns string.\n */\n public getCacheObjectType = (): string => 'CreateProductListInput';\n\n /**\n * DataCacheType.\n * @returns - CacheType string.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the CreateProductList method.\n * @param inputData - The input data passed to the createInput method.\n * @param templateName - The name of template.\n * @param templateType - The type of template.\n * @returns - The Action input.\n */\nexport const createProductListInput = (\n inputData: ICreateActionContext,\n templateName: string,\n templateType: number\n): CreateProductListInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create product list. User is not authenticated.');\n }\n return new CreateProductListInput(templateName, templateType);\n};\n\n/**\n * The action method for the CreateProductList data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - ProductList object.\n */\nexport async function createProductListAction(input: CreateProductListInput, context: IActionContext): Promise {\n try {\n const orderTemplate: ProductList = {\n Id: '',\n Name: input.templateName,\n ProductListTypeValue: input.templateType\n };\n const createdProductList = await ProductListsDataActions.createProductListAsync(\n {\n callerContext: context\n },\n orderTemplate\n );\n if (createdProductList.Id !== '') {\n return createdProductList;\n }\n context.telemetry.error('Created product list was null');\n throw new Error('Created product list was null');\n } catch (error) {\n context.telemetry.error('Not able to create product list', error);\n throw error;\n }\n}\n\n/**\n * The CreateProductList Data Action.\n * Returns created Product List.\n */\nexport const createProductListActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/create-product-list',\n action: createProductListAction as IAction,\n input: createProductListInput\n});\n\nexport default createProductListActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\n\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\nexport function deleteAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId)];\n return customer;\n}\n\nexport async function deleteAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, deleteAddressHandler);\n}\n\n/**\n * The deleteAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Removes all address information from the retireved customer, and\n * then updates that customer via the update RetailServer API.\n */\nexport const deleteAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-address',\n action: >deleteAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n\nexport default deleteAddressActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser, NullResult } from '@msdyn365-commerce/retail-proxy';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\n/**\n * Input class for DeleteOrganizationUser data action.\n */\nexport class DeleteOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => 'DeleteOrganizationUser';\n\n public getCacheObjectType = () => 'DeleteOrganizationUser';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for DeleteOrganizationUser data action.\n * @param inputData\n * @param newUser\n */\nexport const createDeleteOrganizationUserInput = (\n inputData: ICreateActionContext>,\n newUser: BusinessPartnerUser\n): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new DeleteOrganizationUserInput(newUser);\n};\n\n/**\n * The DeleteOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser.\n * @param input\n * @param ctx\n */\nexport async function deleteOrganizationUser(input: DeleteOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return deleteAsync({ callerContext: ctx }, user).catch(error => {\n console.log(error);\n ctx.telemetry.debug('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n throw new Error('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n });\n}\n\n/**\n * The DeleteOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and Deletes that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport const deleteOrganizationUserDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-organization-user',\n action: >deleteOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createDeleteOrganizationUserInput)\n});\n\nexport default deleteOrganizationUserDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\n/**\n * Input class for edit organization user data action.\n */\nexport class EditOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => 'EditOrganizationUser';\n\n public getCacheObjectType = () => 'EditOrganizationUser';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for edit organization user data action.\n * @param inputData\n * @param newUser\n */\nexport const createEditOrganizationUserInput = (\n inputData: ICreateActionContext>,\n newUser: BusinessPartnerUser\n): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new EditOrganizationUserInput(newUser);\n};\n\nexport async function editOrganizationUser(input: EditOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return updateAsync({ callerContext: ctx }, user)\n .then(updatedUser => {\n return updatedUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n throw new Error('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n });\n}\n\n/**\n * The EditOrganizationUser data action\n * Takes in an instance of a BusinessPartnerUser and updates the\n * same user with the new information.\n */\nexport const editOrganizationUserDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/Edit-organization-user',\n action: >editOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createEditOrganizationUserInput)\n});\n\nexport default editOrganizationUserDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * Generic input type for use with generic data actions.\n */\nexport class GenericInput implements IActionInput {\n public result: T;\n\n public cacheKey: string;\n\n public cacheObjectType: string;\n\n constructor(cacheKey: string, result: T, cacheObjectType: string) {\n this.cacheKey = cacheKey;\n this.cacheObjectType = cacheObjectType;\n this.result = result;\n }\n\n public getCacheKey = () => `Generic-${this.cacheKey}`;\n\n public getCacheObjectType = () => `${this.cacheObjectType}`;\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Generic data action that is just used for passing data around the app.\n *\n * Note that this doesn't actually expose a data action, its just a base action\n * that others can use to create a data action with their own input.\n * @param input\n * @param ctx\n */\nexport async function getGenericAction(input: GenericInput, ctx: IActionContext): Promise {\n return input.result;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { Address } from '@msdyn365-commerce/retail-proxy';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for the getAddress data action.\n */\nexport class AddressInput implements IActionInput {\n public userAccountNumber?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetAddress-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetAddress';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getAddress method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetAddressInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create address input. User is not authenticated.');\n }\n\n return new AddressInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getAddress data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getAddressAction(input: AddressInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, input.userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to get customer');\n }\n\n return customer.Addresses || [];\n}\n\n/**\n * The getAddress data action\n * Gets a customers information via the read RetailServer API\n * Returns address information associated with the retrieved customer.\n */\nexport const getAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-address',\n action: >getAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetAddressInput\n});\n\nexport default getAddressActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getAttributeDefinitionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AttributeDefinition, AttributeDefinitionCriteria } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get attribute definitions data action.\n */\nexport class GetAttributeDefinitionsInput implements IActionInput {\n public attributeDefinitionCriteria?: AttributeDefinitionCriteria;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, attributeDefinitionCriteria?: AttributeDefinitionCriteria) {\n this.attributeDefinitionCriteria = attributeDefinitionCriteria;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AttributeDefinitions', this.apiSettings);\n\n public getCacheObjectType = () => 'CustomerAttribute';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetAttributeDefinitionsInput => {\n const { apiSettings, channel } = inputData.requestContext;\n if (!channel || !channel.CustomerAttributeGroupId) {\n throw new Error('[getAttributeDefinitions][createInput]: Customer attribute group id is not found.');\n }\n\n return new GetAttributeDefinitionsInput(apiSettings, { AttributeGroupIdentifier: channel.CustomerAttributeGroupId });\n};\n\nconst getAttributeDefinitionsAction = async (input: GetAttributeDefinitionsInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.channel && ctx.requestContext.channel.CustomerAttributeGroupId) {\n return getAttributeDefinitionsAsync({ callerContext: ctx }, input.attributeDefinitionCriteria || null).then(response => {\n return response;\n });\n }\n\n ctx.trace('[getAttributeDefinitions]Invalid input passed to action');\n return [];\n};\n\nexport const getAttributeDefinitionsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-custom-attributes',\n action: >getAttributeDefinitionsAction,\n input: createInput\n});\n\nexport default getAttributeDefinitionsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { getSelectedProductIdFromActionInput, SelectedVariantInput } from '.';\nimport { getSelectedVariantActionDataAction } from './get-selected-variant';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Chains getting the SelectedVariant with GetActivePrice.\n */\nexport class AttributesForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.catalogId = catalogId || 0;\n }\n\n public getCacheKey = () => 'AttributesForSelectedVariant';\n\n public getCacheObjectType = () => 'ProductAttributeValue';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createAttributesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): AttributesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n const catalogId = getCatalogId(inputData.requestContext);\n\n if (productId) {\n return new AttributesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, undefined, catalogId);\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * Calls the Retail API a get a list of dimension values for a given product.\n * @param input\n * @param ctx\n */\nexport async function getAttributesForSelectedVariantAction(\n input: AttributesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(\n input.productId,\n input.channelId,\n undefined,\n undefined,\n ctx.requestContext\n );\n\n return getSelectedVariantActionDataAction(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getAttributeValuesAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n activeProduct.RecordId,\n input.channelId,\n input.catalogId\n );\n }\n\n return null;\n })\n .then((attributeValues: AttributeValue[] | null) => {\n const resultArray = attributeValues;\n if (resultArray) {\n return resultArray;\n }\n\n return [];\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPriceForSelectedVariantAction]Error executing action');\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport const getAttributesForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-attributes-for-selected-variant',\n action: >getAttributesForSelectedVariantAction,\n input: createAttributesForSelectedVariantInput\n});\n\nexport default getAttributesForSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, ChannelDeliveryOptionConfiguration, FeatureState, ProductWarehouse } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport {\n getEstimatedAvailabilityAsync,\n getEstimatedProductWarehouseAvailabilityAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport {\n ActiveCartProductsInput,\n ArrayExtensions,\n buildCacheKey,\n createInventoryAvailabilitySearchCriteria,\n getActiveCartProductsAction,\n IProductInventoryInformation,\n mapAggregatedProductInventoryInformation,\n mapProductInventoryInformation\n} from '.';\nimport { FeatureStateInput, getFeatureStateActionDataAction } from './get-feature-state';\n\n/**\n * Input class for availabilities for items in cart.\n */\nexport class ProductAvailabilitiesForCartLineItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCartLineItemsAvailability', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCartLineItemsAvailability';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param cartLine\n * @param featureSate\n * @param channelDeliveryOptionConfig\n * @param pickupDeliveryMode\n */\nconst getDeliveryMode = (\n cartLine: CartLine,\n featureSate: boolean = false,\n channelDeliveryOptionConfig: ChannelDeliveryOptionConfiguration,\n pickupDeliveryMode?: string\n) => {\n if (!featureSate) {\n return cartLine.DeliveryMode === pickupDeliveryMode;\n }\n return (\n cartLine.DeliveryMode ===\n channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode)\n );\n};\n\n/**\n * Calls the Retail API to get the product availabilities for items in the cart.\n * @param input\n * @param ctx\n */\n// eslint-disable-next-line complexity\nexport async function getAvailabilitiesForCartLineItems(\n input: ProductAvailabilitiesForCartLineItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForCartLineItems]No valid Input was provided, failing');\n }\n\n const shippingItems: CartLine[] = [];\n const bopisItems = [];\n let productAvailabilities: IProductInventoryInformation[] = [];\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let channelDeliveryOptionConfig: any;\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx });\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n /**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\n async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateActionDataAction(new FeatureStateInput(), context);\n }\n const featureState = await getFeatureState(ctx);\n const retailMultiplePickUpOptionEnabled = featureState?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled) {\n channelDeliveryOptionConfig = await getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx });\n }\n const PickupDeliveryModeCode = channelConfiguration.PickupDeliveryModeCode;\n const EmailDeliveryModeCode = channelConfiguration.EmailDeliveryModeCode;\n\n if (!cart || !channelConfiguration || !products || products.length === 0) {\n ctx.trace('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n if (cart && cart.Id && cart.CartLines && cart.CartLines.length > 0 && channelConfiguration) {\n for (const cartLine of cart.CartLines) {\n if (\n cartLine.DeliveryMode &&\n cartLine.DeliveryMode !== '' &&\n getDeliveryMode(cartLine, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, PickupDeliveryModeCode)\n ) {\n bopisItems.push(cartLine);\n } else if (EmailDeliveryModeCode === '' || cartLine.DeliveryMode !== EmailDeliveryModeCode) {\n shippingItems.push(cartLine);\n }\n }\n }\n\n if (shippingItems && shippingItems.length > 0) {\n let productIds = shippingItems.map(x => x.ProductId!);\n productIds = ArrayExtensions.unique(productIds);\n const searchCriteria = createInventoryAvailabilitySearchCriteria(ctx, productIds, true);\n const shippingProductAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get' },\n searchCriteria\n );\n\n if (\n shippingProductAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities.length > 0\n ) {\n productAvailabilities = mapAggregatedProductInventoryInformation(ctx, shippingProductAvailabilities);\n }\n }\n\n if (bopisItems && bopisItems.length > 0) {\n const productWarehouses: ProductWarehouse[] = [];\n\n for (const bopisItem of bopisItems) {\n const productWarehouse: ProductWarehouse = {\n ProductId: bopisItem.ProductId,\n InventLocationId: bopisItem.WarehouseId\n };\n\n if (ctx.requestContext.channel && ctx.requestContext.channel.InventLocationDataAreaId) {\n productWarehouse.DataAreaId = ctx.requestContext.channel.InventLocationDataAreaId;\n }\n productWarehouses.push(productWarehouse);\n }\n const quantityUnitTypeSales: number = 2;\n const getProductWarehouseAvail = await getEstimatedProductWarehouseAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get', queryResultSettings: {} },\n productWarehouses,\n quantityUnitTypeSales\n );\n\n if (\n getProductWarehouseAvail &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities.length > 0\n ) {\n const productWarehouseMapping = mapProductInventoryInformation(\n ctx,\n getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities\n );\n if (productWarehouseMapping && productWarehouseMapping.length > 0) {\n for (const item of productWarehouseMapping) {\n productAvailabilities.push(item);\n }\n }\n }\n }\n\n if (productAvailabilities && productAvailabilities.length > 0) {\n return productAvailabilities;\n }\n\n ctx.trace('[getAvailabilitiesForCartLineItems] unable to get availabilities for product');\n return [];\n}\n\nexport const getAvailabilitiesForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-availabilities-cartlines',\n action: >getAvailabilitiesForCartLineItems,\n input: createInput\n});\n\nexport default getAvailabilitiesForCartLineItemsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getOperationRequestsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\nimport { getCurrentBusinessPartnerUser, GetCurrentBusinessPartnerUserInput } from './get-current-business-partner-user';\nimport { StringExtensions } from './utilities';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action.\n */\nexport class GetBusinessPartnerOperationRequestsInput implements IActionInput {\n public fromDate: Date;\n\n public toDate: Date;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, fromDate: Date, toDate: Date) {\n this.apiSettings = apiSettings;\n this.fromDate = fromDate;\n this.toDate = toDate;\n }\n\n public getCacheKey = () => buildCacheKey('BusinessPartnerOperationRequests-cacheKey', this.apiSettings);\n\n public getCacheObjectType = () => 'BusinessPartnerOperationRequest[]';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetBusinessPartnerOperationRequestsInput => {\n const fromDate = new Date(Date.now() - 86_400_000 * 3); // 3 days ago.\n\n const toDate: Date = new Date(Date.now());\n return new GetBusinessPartnerOperationRequestsInput(inputData.requestContext.apiSettings, fromDate, toDate);\n};\n\nexport async function getBusinessPartnerOperationRequestsAction(\n input: GetBusinessPartnerOperationRequestsInput,\n ctx: IActionContext\n): Promise {\n if (input) {\n const userInput = new GetCurrentBusinessPartnerUserInput(ctx.requestContext.apiSettings);\n const user: BusinessPartnerUser | undefined = await getCurrentBusinessPartnerUser(userInput, ctx);\n\n if (user && !StringExtensions.isNullOrEmpty(user.B2BUserId)) {\n return getOperationRequestsAsync({ callerContext: ctx }, user.B2BUserId, input.fromDate, input.toDate);\n }\n\n return [];\n }\n\n ctx.trace('[getBusinessPartnerOperationRequest]Invalid input passed to action');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-business-partner-operation-requests',\n action: >getBusinessPartnerOperationRequestsAction,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { CatalogsDataActions, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input for get-catalogs data action.\n */\nexport class CatalogsInput implements IActionInput {\n public readonly channelId: number;\n\n public readonly customerAccountNumber?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n private readonly locale?: string;\n\n public constructor(context: IRequestContext, customerAccountNumber?: string) {\n this.channelId = context.apiSettings.channelId ? Number(context.apiSettings.channelId) : 0;\n this.customerAccountNumber = customerAccountNumber ? customerAccountNumber : context.user.customerAccountNumber;\n this.apiSettings = context.apiSettings;\n this.locale = context.locale || '';\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- customer account number can be undefined.\n public getCacheKey = (): string => buildCacheKey(`${this.channelId}|${this.customerAccountNumber}`, this.apiSettings, this.locale);\n\n /**\n * Get Cache object type.\n * @returns - Cache object type.\n */\n public getCacheObjectType = (): string => 'productCatalogs';\n\n /**\n * Get data cache type.\n * @returns - Cache type enum.\n */\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData - The input data passed to the createInput method.\n * @param customerAccountNumber - Customer account number.\n * @returns - Catalogs input.\n */\nexport const createCatalogsInput = (inputData: ICreateActionContext>, customerAccountNumber?: string): IActionInput => {\n if (!inputData.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get product catalog. User is not authenticated.');\n }\n return new CatalogsInput(inputData.requestContext, customerAccountNumber);\n};\n\n/**\n * Calls the Retail API and returns the product catalog for an user.\n * @param input - Catalogs Input.\n * @param context - Current context.\n * @returns - Product catalog for the user.\n */\nexport async function getCatalogAction(input: CatalogsInput, context: IActionContext): Promise {\n const productCatalogs = await CatalogsDataActions.getCatalogsAsync({ callerContext: context }, input.channelId, true);\n return productCatalogs;\n}\n\n/**\n * The GetProductCatalogs Data Action\n * Returns product catalogs.\n */\nexport const getCatalogActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-catalogs',\n action: getCatalogAction as IAction,\n input: createCatalogsInput\n});\n\nexport default getCatalogActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { Category, TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\n\nimport getCategoryAction, { CategoriesInput as RawCategoriesInput } from './get-categories';\nimport { getCategoryUrl } from './utilities/Url-builder';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input for get-categories data action.\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n\n public readonly channelId: number;\n\n private readonly catalogId: number;\n\n private readonly sitePath: string;\n\n private readonly _mappedToHierarchy: boolean;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n private readonly locale?: string;\n\n public constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? +context.apiSettings.channelId : 0;\n this.sitePath = (context && context.sitePath) || '';\n this.apiSettings = context.apiSettings;\n this.locale = context.locale || '';\n this.catalogId = getCatalogId(context);\n }\n\n public getCacheKey = () =>\n buildCacheKey(`${this.channelId}|${this.sitePath}|top-${this.maxItems || 250} | ${this.catalogId}`, this.apiSettings, this.locale);\n\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n\n public dataCacheType = (): CacheType => 'request';\n\n public getLocale = (): string => this.locale || '';\n}\n\nconst getFriendlyName = (locale?: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n};\n\nexport interface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Creates a hierarchy of categories based on the ParentCategory property.\n * @param categoryList Categories that will be converted into a hierarchy.\n * @param ctx\n * @param locale\n * @returns Hierarchy of categories in array.\n */\nexport const mapCategoryToHierarchy = (categoryList: Category[], ctx: IActionContext, locale?: string): CategoryHierarchy[] => {\n if (!categoryList || categoryList.length === 0) {\n return [];\n }\n\n const categoryMap: ICategoryMap = categoryList.reduce((memo: ICategoryMap, category: Category) => {\n const localName = getFriendlyName(locale, category.NameTranslations);\n const categoryHierarchy = { ...category };\n categoryHierarchy.NeutralizedName = category.Name;\n categoryHierarchy.Name = localName || categoryHierarchy.NeutralizedName;\n memo[category.RecordId] = categoryHierarchy;\n return memo;\n }, {});\n\n let zeroCategory = categoryMap[0];\n\n Object.keys(categoryMap).forEach((id: string) => {\n const element = categoryMap[+id];\n const parentId = element.ParentCategory;\n element.Url = getCategoryUrl(element, ctx, categoryMap);\n if (parentId === 0) {\n zeroCategory = element;\n return;\n }\n\n const parent = parentId && categoryMap[parentId];\n if (parent) {\n parent.Children = parent.Children || [];\n parent.Children.push(element);\n }\n });\n\n return (zeroCategory && zeroCategory.Children) || [];\n};\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, true, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a hierarchy.\n * @param input\n * @param ctx\n */\nexport async function getCategoryHierarchyAction(input: CategoriesInput, ctx: IActionContext): Promise {\n const categories = await getCategoryAction(new RawCategoriesInput(ctx.requestContext, false, input.maxItems), ctx);\n return mapCategoryToHierarchy(categories, ctx, input.getLocale());\n}\n\nexport const getCategoryHierarchyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories-hierarchy',\n action: >getCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n\nexport default getCategoryHierarchyActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { CategoriesDataActions } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input for get-categories data action.\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n\n public readonly channelId: number;\n\n public readonly catalogId?: number;\n\n private readonly _mappedToHierarchy: boolean;\n\n public constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Required.\n this.channelId = context?.apiSettings?.channelId ? Number(context.apiSettings.channelId) : 0;\n this.catalogId = getCatalogId(context);\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => `${this.channelId}|top-${this.maxItems || 250}|${this.catalogId ?? 0}`;\n\n /**\n * Get Cache type Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n\n /**\n * Get Cache type.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData -- Input data.\n * @returns -- IActionInput.\n */\nexport const createCategoriesInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config?.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, false, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a flat list.\n * @param input - Input.\n * @param ctx - Context.\n * @returns - CategoryHierarchy.\n */\nexport async function getCategoryAction(input: CategoriesInput, ctx: IActionContext): Promise {\n return ((await CategoriesDataActions.getCategoriesAsync(\n {\n callerContext: ctx\n },\n input.channelId,\n input.catalogId\n )) as unknown) as CategoryHierarchy[];\n}\n\n/**\n * The getCategory Data Action.\n */\nexport const getCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories',\n action: getCategoryAction as IAction,\n input: createCategoriesInput\n});\n\nexport default getCategoryActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n getCategoriesUrlSync,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ICategoryPath, ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { getCategoryPathsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { CategoryPathLookup } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey, getSelectedProductIdFromActionInput } from './utilities/utils';\n\n/**\n * Category path input.\n */\nexport class GetCategoryPathsInput implements IActionInput {\n public readonly ChannelId: number;\n\n public readonly CatalogId: number;\n\n public readonly categoryPathLooksups: CategoryPathLookup[];\n\n public readonly apiSettings: ICommerceApiSettings;\n\n private readonly locale: string;\n\n private constructedCacheKey: string;\n\n public constructor(context: IRequestContext, categoryPathLooksups: CategoryPathLookup[]) {\n this.ChannelId = context.apiSettings.channelId;\n this.CatalogId = getCatalogId(context);\n this.categoryPathLooksups = categoryPathLooksups;\n this.apiSettings = context.apiSettings;\n this.constructedCacheKey = '';\n categoryPathLooksups.forEach(categoryPath => {\n this.constructedCacheKey += `${categoryPath.ProductId && categoryPath.ProductId.toString()}|`;\n });\n this.constructedCacheKey += `${this.ChannelId.toString()}|`;\n this.constructedCacheKey += `${this.CatalogId.toString()}|`;\n this.locale = context.locale;\n }\n\n public getCacheKey = () => buildCacheKey(this.constructedCacheKey, this.apiSettings, this.locale);\n\n public getCacheObjectType = () => 'CategoryPath';\n\n public dataCacheType = (): CacheType => 'request';\n\n /**\n * Retrieves locale to use for the current API call.\n * @returns A string which represents locale.\n */\n public getLocale = (): string => this.locale;\n}\n\n/**\n * Creates the input required to make the getCategoryPath retail api call.\n * @param inputData\n */\nexport const createGetCategoryPathsInput = (inputData: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n if (productId) {\n return new GetCategoryPathsInput(inputData.requestContext, [{ ProductId: +productId }]);\n }\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * Calls the Retail API and returns the category path for a product.\n * @param input\n * @param ctx\n */\nexport async function getCategoryPathsAction(input: GetCategoryPathsInput, ctx: IActionContext): Promise {\n const categoryPathResults = await getCategoryPathsAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n input.ChannelId,\n input.CatalogId,\n input.categoryPathLooksups\n );\n const categoryPath = categoryPathResults[0].CategoryPath && categoryPathResults[0].CategoryPath[0];\n const categoryUrl = getCategoriesUrlSync(categoryPath, ctx);\n if (categoryUrl) {\n /* Do not return the root category of the product*/\n return categoryUrl.slice(1);\n }\n return [];\n}\n\nexport const getCategoryPathsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-category-paths',\n action: >getCategoryPathsAction,\n input: createGetCategoryPathsInput\n});\n\nexport default getCategoryPathsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get channel delivery option configuration data action.\n */\nexport class GetChannelDeliveryConfigurationInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ChannelDeliveryConfiguration', this.apiSettings);\n\n public getCacheObjectType = () => 'ChannelDeliveryConfiguration';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetChannelDeliveryConfigurationInput => {\n const { apiSettings } = inputData.requestContext;\n if (!apiSettings) {\n throw new Error('[getChannelDeliveryOptionConfiguration][createInput]: API setting not available.');\n }\n\n return new GetChannelDeliveryConfigurationInput(apiSettings);\n};\n\nconst getChannelDeliveryOptionConfigurationAction = async (\n input: GetChannelDeliveryConfigurationInput,\n ctx: IActionContext\n): Promise => {\n if (input) {\n return getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx }).then(response => {\n return response;\n });\n }\n\n ctx.trace('[get-channel-delivery-option-configuration]Invalid input passed to action');\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-channel-delivery-option-configuration',\n action: >getChannelDeliveryOptionConfigurationAction,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport { copyAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport Cookie from 'js-cookie';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for getCheckoutCart data action.\n */\nexport class GetCheckoutCartInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCheckoutCart', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCheckoutCart';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new GetCheckoutCartInput(inputData.requestContext.apiSettings);\n};\n\nconst CartCookieName: string = msdyn365Commerce.CartCookie || 'cart';\n\n/**\n * Data action to copy the cart for checkout actions.\n * @param input\n * @param ctx\n */\nexport async function getCheckoutCart(input: GetCheckoutCartInput, ctx: IActionContext): Promise {\n const cartId = Cookie.get(CartCookieName) || '';\n if (cartId) {\n const currentCartState = await getCartState(ctx);\n const activeCart = currentCartState.cart;\n\n // Check if there is an active cart and it isn't empty\n if (activeCart && Object.keys(activeCart).length > 0) {\n const checkoutCart = await copyAsync({ callerContext: ctx }, activeCart.Id, 2);\n\n if (checkoutCart) {\n return Array.isArray(checkoutCart) ? checkoutCart[0] : checkoutCart;\n }\n } else {\n ctx.trace(\"[get-checkout-cart] Can't create a checkout cart since active cart is empty\");\n }\n }\n\n return {};\n}\n\nexport const getCheckoutCartDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-checkout-cart',\n action: >getCheckoutCart,\n input: createInput\n});\n\nexport default getCheckoutCartDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser, Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get current business partner user data action.\n */\nexport class GetCurrentBusinessPartnerUserInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CurrentBusinessPartnerUser', this.apiSettings);\n\n public getCacheObjectType = () => 'BusinessPartner';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const createGetCurrentBusinessPartnerUserInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new GetCurrentBusinessPartnerUserInput(requestContext.apiSettings);\n};\n\nexport async function getCurrentBusinessPartnerUser(\n input: GetCurrentBusinessPartnerUserInput,\n ctx: IActionContext\n): Promise {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings);\n const customer: Customer = await getCustomer(customerInput, ctx);\n\n if (customer?.IsB2b) {\n return getCurrentAsync({ callerContext: ctx });\n }\n return undefined;\n}\n\nexport default createObservableDataAction({\n id: 'get-current-business-partner-user',\n action: >getCurrentBusinessPartnerUser,\n input: createGetCurrentBusinessPartnerUserInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\n\nimport getCategoriesHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport { ArrayExtensions } from './utilities';\n\n/**\n * Action Input Class for get-current-category-hierarchy.\n */\nexport class CurrentCategoryHierarchyInput extends CategoriesInput {\n public activeCategoryId: number;\n\n public constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number, activeCategoryId?: number) {\n super(context, mappedToHierarchy, maxItems);\n const defaultActiveCategoryId = 0;\n this.activeCategoryId = activeCategoryId ?? defaultActiveCategoryId;\n }\n\n // @ts-expect-error: Overriding cache object type\n public getCacheObjectType = () => 'CurrentCategoryHierarchy';\n\n public getCacheKey = () => `${this.activeCategoryId}-${this.channelId}`;\n}\n\n/**\n * Creates the input required for the data action.\n * @param inputData\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config?.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n let activeCategoryId =\n inputData.requestContext.urlTokens.pageType === 'Category' ? inputData.requestContext.urlTokens.itemId : undefined;\n activeCategoryId = activeCategoryId ?? inputData.requestContext.query?.categoryId;\n const activeCategoryParsedId = activeCategoryId ? Number.parseInt(activeCategoryId, 10) : undefined;\n\n return new CurrentCategoryHierarchyInput(inputData.requestContext, true, topItems, activeCategoryParsedId);\n};\n\n/**\n * Finds the given category in the list of categories and returns an array with the info on where it's located.\n * @param categories - Categories list to search from.\n * @param categoryId - The category id to find.\n * @returns A list of categories starting from the given category id, ending up the root parent.\n */\nconst findCategoryHierarchy = (categories: CategoryHierarchy[], categoryId: number): CategoryHierarchy[] | null => {\n for (const category of categories) {\n if (category.RecordId === categoryId) {\n return [category];\n }\n\n if (ArrayExtensions.hasElements(category.Children)) {\n const innerCategoryHierarchy = findCategoryHierarchy(category.Children, categoryId);\n if (ArrayExtensions.hasElements(innerCategoryHierarchy)) {\n innerCategoryHierarchy.push(category);\n return innerCategoryHierarchy;\n }\n }\n }\n\n return null;\n};\n\n/**\n * Get the hierarchy of categories that are currently active as a parent -> child array.\n * Return will be as follows: [ParentCategory, Child, SubChild, SubSubChild].\n * @param input\n * @param ctx\n */\nexport async function getCurrentCategoryHierarchyAction(\n input: CurrentCategoryHierarchyInput,\n ctx: IActionContext\n): Promise {\n const fullCategoryHierarchy = await getCategoriesHierarchy(new CategoriesInput(ctx.requestContext, true, input.maxItems), ctx);\n const categoryArray = findCategoryHierarchy(fullCategoryHierarchy, input.activeCategoryId) ?? [];\n const sortedCategoryArray = categoryArray.reverse();\n return sortedCategoryArray;\n}\n\nexport const getCurrentCategoryHierarchyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category-hierarchy',\n action: getCurrentCategoryHierarchyAction as IAction,\n input: createCategoriesHierarchyInput\n});\n\nexport default getCurrentCategoryHierarchyActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getParameterizeFeatureFlags,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric,\n IParameterizeFeatureFlags,\n IRequestContext\n} from '@msdyn365-commerce/core';\n\nimport { buildCacheKey } from '.';\nimport getCategoryHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport { parameterize } from './utilities/Url-builder';\n\n/**\n * Input class for GetCurrentCategory data action.\n */\nexport class CurrentCategoryInput implements IActionInput {\n public categoryId?: number;\n\n public categorySlug?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n private readonly locale?: string;\n\n constructor(context: IRequestContext) {\n let categoryId;\n let categorySlug;\n if (context.query && context.query.categoryId) {\n categoryId = Number(context.query.categoryId);\n\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n } else if (context.urlTokens && context.urlTokens.recordId) {\n categoryId = Number(context.urlTokens.recordId);\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n } else if (context.urlTokens && context.urlTokens.categories && context.urlTokens.categories.length > 0) {\n const categories: string[] = (context.urlTokens.categories);\n\n if (categories.length === 0) {\n throw new Error('Failed to get category name from urlTokens');\n }\n\n // TODO: fix getParameterizeFeatureFlags to take requestContext as input.\n const tempActionContext = {\n requestContext: context\n };\n categorySlug = `/${categories\n .map(category => {\n // @ts-expect-error TODO: fix getParameterizeFeatureFlags to take requestContext as an input\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = getParameterizeFeatureFlags(tempActionContext);\n return parameterize(category, undefined, parameterizeFeatureFlags);\n })\n .join('/')}`;\n }\n this.categoryId = categoryId;\n this.categorySlug = categorySlug;\n this.apiSettings = context.apiSettings;\n this.locale = context.locale || '';\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}`, this.apiSettings, this.locale);\n\n public getCacheObjectType = () => 'Current-Category';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates a current category input from an ICreateActionContext.\n * @param inputData\n */\nexport const createGetCurrentCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Rescrusive Search Method to find a given category amongts a complete CategoryHierarcy.\n * @param categories The current Category Hierarchy.\n * @param categorySlug The category slug being searched for.\n * @param categoryId The category Id being search for.\n */\nexport function searchCategory(categories: CategoryHierarchy[], categorySlug?: string, categoryId?: number): CategoryHierarchy | undefined {\n let foundCategory;\n categories.forEach((cat: CategoryHierarchy) => {\n if ((categoryId && cat.RecordId === categoryId) || (categorySlug && cat.Slug === categorySlug)) {\n return (foundCategory = cat);\n } else if (cat.Children && cat.Children.length > 0) {\n const matchingChild = searchCategory(cat.Children, categorySlug, categoryId);\n if (matchingChild) {\n foundCategory = matchingChild;\n }\n }\n });\n return foundCategory;\n}\n\n/**\n * Action method for the getCurrentCategory Data Action.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getCurrentCategoryAction(input: CurrentCategoryInput, ctx: IActionContext): Promise {\n if (input.categorySlug || input.categoryId) {\n const categoryInput = new CategoriesInput(ctx.requestContext, true);\n const categories = await getCategoryHierarchy(categoryInput, ctx);\n if (!categories) {\n ctx.trace('[getCurrentCategory] Unable to get categories from server');\n return;\n }\n\n const category = searchCategory(categories, input.categorySlug, input.categoryId);\n if (!category) {\n ctx.trace('[getCurrentCategory] Unable to find category');\n return;\n }\n return category;\n }\n}\n\n/**\n * The getCurrentCategory data action\n * First makes a call to the getCategories RetailServer API\n * to get a list of every available category, then returns a CategoryHierarchy\n * based on the categoryId query param set in the URL of the request.\n */\nexport const getCurrentCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category',\n action: >getCurrentCategoryAction,\n input: createGetCurrentCategoryInput\n});\n\nexport default getCurrentCategoryActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getCustomerBalanceAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the GetCustomerBalance data action.\n */\nexport class GetCustomerBalanceInput implements IActionInput {\n public customerAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, customerAccountNumber?: string) {\n this.customerAccountNumber = customerAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CustomerBalance-${this.customerAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetCustomerBalance';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the GetCustomerBalance method.\n * @param inputData The input data passed to the createInput method.\n */\n\nexport const createGetCustomerBalanceInput = (inputData: ICreateActionContext): GetCustomerBalanceInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get customer balance input. User is not authenticated.');\n }\n\n return new GetCustomerBalanceInput(requestContext.apiSettings);\n};\n\n/**\n * The action method for the GetCustomerBalance data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getCustomerBalanceAction(input: GetCustomerBalanceInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(input.apiSettings, input.customerAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n ctx.telemetry.error('Not able to get customer', new Error('Not able to get customer'));\n }\n\n return getCustomerBalanceAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n customer.AccountNumber,\n customer.InvoiceAccount\n );\n}\n\n/**\n * The GetCustomerBalance data action\n * Returns the customer's balance.\n */\nexport const getCustomerBalanceActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-balance',\n action: >getCustomerBalanceAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetCustomerBalanceInput\n});\n\nexport default getCustomerBalanceActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { LoyaltyCard, retailAction } from '@msdyn365-commerce/retail-proxy';\nimport { createGetCustomerLoyaltyCardsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createCustomerLoyaltyCardsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData.requestContext && inputData.requestContext.user && inputData.requestContext.user.isAuthenticated) {\n return createGetCustomerLoyaltyCardsInput({}, null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-loyalty-cards',\n action: >retailAction,\n input: createCustomerLoyaltyCardsInput\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { Customer, CustomersDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action.\n */\nexport class GetCustomerInput implements IActionInput {\n public customerAccountNumber?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n private readonly cacheType?: CacheType;\n\n public constructor(apiSettings: ICommerceApiSettings, accountNumber?: string, cacheType?: CacheType) {\n this.customerAccountNumber = accountNumber;\n this.apiSettings = apiSettings;\n this.cacheType = cacheType;\n }\n\n /**\n * GetCacheKey.\n * @returns - Returns string.\n */\n public getCacheKey = (): string => buildCacheKey(`Customer-${this.customerAccountNumber}`, this.apiSettings);\n\n /**\n * GetCacheObjectType.\n * @returns - Cache Object Type string.\n */\n public getCacheObjectType = (): string => 'Customer';\n\n /**\n * DataCacheType.\n * @returns - CacheType string.\n */\n public dataCacheType = (): CacheType => {\n return this.cacheType ? this.cacheType : 'request';\n };\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData -- The input data passed to the createInput method.\n * @returns - ProductAvailabilitiesForSelectedVariant or error.\n */\nconst createInput = (inputData: ICreateActionContext>): GetCustomerInput => {\n const { user, apiSettings } = inputData.requestContext;\n if (!user.token || !user.isAuthenticated) {\n throw new Error('[getCustomer][createInput]: User is not Authenticated.');\n }\n\n return new GetCustomerInput(apiSettings);\n};\n\n/**\n * GetCustomerAction.\n * @param input - GetCustomerInput.\n * @param ctx - Action Context.\n * @returns - Customer information.\n */\nconst getCustomerAction = async (input: GetCustomerInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.user.isAuthenticated) {\n // TO-DO- Need to clean up this code once SDK releases new proxy that handles null.\n return CustomersDataActions.readAsync({ callerContext: ctx, bypassCache: 'get' }, input.customerAccountNumber || '').then(\n response => {\n return Array.isArray(response) ? response[0] : response;\n }\n );\n }\n\n ctx.trace('[getCustomer]Invalid input passed to action');\n return {};\n};\n\n/**\n * The customer data action.\n */\nexport const getCustomerActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer',\n action: >getCustomerAction,\n input: createInput\n});\n\nexport default getCustomerActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ProductAvailableQuantity, ProductDeliveryOptions, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport { ActiveCartProductsInput, buildCacheKey, getActiveCartProductsAction } from '.';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for delivery options for items in cart.\n */\nexport class ProductDeliveryOptionsForCartLineItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCartLineItemsDeliveryOptions', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCartLineItemsDeliveryOptions';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductDeliveryOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the delivery options for items in the cart.\n * @param input\n * @param ctx\n */\nexport async function getDeliveryOptionsForCartLineItems(\n input: ProductDeliveryOptionsForCartLineItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getDeliveryOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if (!cart || !products || products.length === 0) {\n ctx.trace('[getDeliveryOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n return ProductsDataActions.getDeliveryOptionsAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n products.map(x => x.RecordId),\n {},\n null\n )\n .then(result => {\n return result;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getDeliveryOptionsForCartLineItems]Error executing action');\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport const getDeliveryOptionsForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-cartlines',\n action: >getDeliveryOptionsForCartLineItems,\n input: createInput\n});\n\nexport default getDeliveryOptionsForCartLineItemsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n FilterDeliveryModeOption,\n ProductDeliveryOptions,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '.';\nimport { FeatureStateInput, getFeatureStateActionDataAction } from './get-feature-state';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetDeliveryOptionsForSelectedVariant Data Action.\n */\nexport class GetDeliveryOptionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n public customerId: string;\n\n public featureState?: boolean;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string, featureState?: boolean) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n this.featureState = featureState;\n }\n\n public getCacheKey = () => 'DeliveryOptionsForSelectedVariant';\n\n public getCacheObjectType = () => 'DeliveryOptions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateActionDataAction(new FeatureStateInput(), context);\n}\n\n/**\n * The createInput method for the GetDeliveryOptionsForSelectedVariant Data Action.\n * @param inputData The input data for the createInput method.\n */\nexport const createDeliveryOptionsForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): GetDeliveryOptionsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDeliveryOptionsForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined,\n undefined\n );\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * The Action Method for the GetDeliveryOptionsForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's supported delivery options\n * via the getDeliveryOptionsAsync RetailServer API.\n * @param input\n * @param ctx\n */\nexport async function getDeliveryOptionsForSelectedVariantAction(\n input: GetDeliveryOptionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n if (input.featureState === undefined) {\n const featureState = await getFeatureState(ctx);\n input.featureState = featureState?.find(\n item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n )?.IsEnabled;\n }\n\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(\n input.productId,\n input.channelId,\n undefined,\n undefined,\n ctx.requestContext\n );\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getDeliveryOptionsAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n [activeProduct.RecordId],\n {},\n\n // For service item, should not apply the filter, otherwise there will be no electronic delivery mode\n input.featureState && productResult?.ItemTypeValue !== ReleasedProductType.Service\n ? FilterDeliveryModeOption.FilterOutNonPickupDeliveryMode\n : null\n ).then(response => {\n if (response && response.length > 0) {\n return response[0];\n }\n\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getDeliveryOptionsForSelectedVariantAction]Error executing action');\n throw new Error('[getDeliveryOptionsForSelectedVariantAction]Error executing action');\n });\n}\n\nexport const getDeliveryOptionsForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-selected-variant',\n action: >getDeliveryOptionsForSelectedVariantAction,\n input: createDeliveryOptionsForSelectedVariantInput\n});\n\nexport default getDeliveryOptionsForSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductDimensionType, ProductDimensionValueInventoryAvailability, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\n\nimport {\n getDimensionAvailabilitiesForProductsAction,\n ProductsDimensionAvailabilitiesInput\n} from './get-dimension-availabilities-for-products';\nimport {\n ArrayExtensions,\n checkIfShouldDisplayAsSwatch,\n DimensionTypes,\n getInventoryLevelCodeFromDimensionValue,\n IDimensionsApp,\n InventoryLevelValues\n} from './utilities';\n\n/**\n * Input class for the GetDimensionAvailabilitiesForProductSearchResult Data Action.\n */\nexport class DimensionAvailabilitiesForProductSearchResultInput implements IActionInput {\n public products: ProductSearchResult[];\n\n public dimensionContext: ICoreContext;\n\n public constructor(products: ProductSearchResult[], dimensionContext: ICoreContext) {\n this.products = products;\n this.dimensionContext = dimensionContext;\n }\n\n /**\n * Get the cache key.\n * @returns The cache key.\n */\n public getCacheKey = (): string =>\n `DimensionAvailabilitiesForProductSearchResult-${this.products.map(product => product.RecordId).join('-')}`;\n\n /**\n * Get the cache object type.\n * @returns The cache object type.\n */\n public getCacheObjectType = (): string => 'ProductDimensionValueInventoryAvailability';\n\n /**\n * Define the data cache type.\n * @returns The cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the GetDimensionAvailabilitiesForProductSearchResultDataAction.\n * @param products -- The product search result.\n * @param dimensionContext -- The dimension app context.\n * @returns The input.\n */\nexport const createDimensionAvailabilitiesForProductSearchResultInput = (\n products: ProductSearchResult[],\n dimensionContext: ICoreContext\n): DimensionAvailabilitiesForProductSearchResultInput => {\n return new DimensionAvailabilitiesForProductSearchResultInput(products, dimensionContext);\n};\n\n/**\n * The Action Method for the GetDimensionAvailabilitiesForProductSearchResultInput Data Action\n * Gets the active price for product search result via the getDimensionAvailabilitiesForProduct API.\n * @param input -- The data input.\n * @param context -- The core context.\n * @returns The ProductsDimensionsAvailabilities.\n */\nexport async function getDimensionAvailabilitiesForProductSearchResultAction(\n input: DimensionAvailabilitiesForProductSearchResultInput,\n context: IActionContext\n): Promise {\n const products = input.products;\n const productsDimensionInputs: ProductsDimensionAvailabilitiesInput[] = [];\n const inventoryLevel = input.dimensionContext.app.config.inventoryLevel;\n\n for (const product of products) {\n const filteredProductAttributes = product.AttributeValues?.filter(attributeValue => {\n return checkIfShouldDisplayAsSwatch((attributeValue.Name?.toLocaleLowerCase() ?? '') as DimensionTypes, input.dimensionContext);\n });\n\n if (ArrayExtensions.hasElements(filteredProductAttributes)) {\n for (const attributeValue of filteredProductAttributes) {\n if (attributeValue.Name) {\n const productionDimensionType: ProductDimensionType =\n ProductDimensionType[attributeValue.Name as keyof typeof ProductDimensionType];\n\n productsDimensionInputs.push(\n new ProductsDimensionAvailabilitiesInput(\n product.MasterProductId ?? product.RecordId,\n productionDimensionType,\n context.requestContext\n )\n );\n }\n }\n }\n }\n\n if (!ArrayExtensions.hasElements(productsDimensionInputs)) {\n return Promise.resolve([]);\n }\n\n try {\n const dimensionForProducts: ProductDimensionValueInventoryAvailability[][] = await getDimensionAvailabilitiesForProductsAction(\n productsDimensionInputs,\n context\n );\n const productsDimensionAvailabilities = productsDimensionInputs.map((dimensionInput, index) => {\n return dimensionForProducts[index].map(dimensionValuesWithInventory => {\n const inventoryLevelCode = getInventoryLevelCodeFromDimensionValue(dimensionValuesWithInventory, inventoryLevel);\n const dimensionValue = dimensionValuesWithInventory.DimensionValue!;\n return {\n value: dimensionValue.Value ?? '',\n isDisabled: inventoryLevelCode === InventoryLevelValues.outOfStock,\n masterProductId: dimensionInput.masterProductId\n };\n });\n });\n\n if (!ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n context.telemetry.warning('ProductsDimensionAvailabilities is empty');\n return Promise.resolve([]);\n }\n\n return Promise.resolve(productsDimensionAvailabilities);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- existing error.\n context.telemetry.warning(error);\n }\n\n return Promise.resolve([]);\n}\n\n/**\n * The GetDimensionAvailabilitiesForProductSearchResult data action.\n */\nexport const getDimensionAvailabilitiesForProductSearchResultDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-dimension-availabilities-for-product-search-result',\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- existing pattern.\n action: >getDimensionAvailabilitiesForProductSearchResultAction,\n input: createDimensionAvailabilitiesForProductSearchResultInput\n});\n\nexport default getDimensionAvailabilitiesForProductSearchResultDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport {\n ProductDimensionAvailabilitySearchCriteria,\n ProductDimensionType,\n ProductDimensionValueInventoryAvailability,\n ProductsDataActions\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ArrayExtensions } from './utilities';\nimport { createInventoryAvailabilitySearchCriteria } from './utilities/product-inventory-utils';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Interface for IProductDimension.\n */\nexport interface IProductDimension {\n masterProductId: number;\n requestDimensionType: ProductDimensionType;\n}\n\n/**\n * Product Input.\n */\nexport class ProductsDimensionAvailabilitiesInput implements IActionInput {\n public masterProductId: number;\n\n public requestDimensionType: ProductDimensionType;\n\n public catalogId?: number;\n\n public constructor(masterProductId: number, requestDimensionType: ProductDimensionType, requestContext?: IRequestContext) {\n this.masterProductId = masterProductId;\n this.requestDimensionType = requestDimensionType;\n\n if (requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n /**\n * Cache key.\n * @returns String.\n */\n public getCacheKey: () => string = () => {\n return `MasterProductId-${this.masterProductId.toString()}-DimensionType-${this.requestDimensionType}-Availabilities-${this\n .catalogId ?? 0}`;\n };\n\n /**\n * Cache object type.\n * @returns String.\n */\n public getCacheObjectType = (): string => 'MasterProductDimensionAvailabilities';\n\n /**\n * Cache type.\n * @returns String.\n */\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Create input method for the getDimensionsForSelectedVariant data action.\n * @param inputData - The input data passed to the createInput method.\n * @returns - The input for the data action.\n */\nexport const createProductsDimensionAvailabilitiesInput = (\n inputData: ICreateActionContext>\n): ProductsDimensionAvailabilitiesInput[] => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore type of config.\n const productsDimensions: IProductDimension[] = inputData.config?.productsDimensions;\n\n return productsDimensions.map((productDimension: IProductDimension) => {\n return new ProductsDimensionAvailabilitiesInput(\n productDimension.masterProductId,\n productDimension.requestDimensionType,\n inputData.requestContext\n );\n });\n};\n\n/**\n * Action Method for the getDimensionsForSelectedVariant Data Action.\n * @param inputs - Input for the data action.\n * @param context - Action context.\n * @returns Master product dimensions with availabilities.\n */\nexport async function getDimensionAvailabilitiesForProductsAction(\n inputs: ProductsDimensionAvailabilitiesInput[],\n context: IActionContext\n): Promise {\n if (!Array.isArray(inputs) || !ArrayExtensions.hasElements(inputs)) {\n context.trace('[getDimensionAvailabilitiesForProductsAction] Invalid or empty inputs passed.');\n return [];\n }\n\n const promise = inputs.map(input => {\n // As per default PDP loads shipping inventory policies, so making swatch to pick the same configuration\n const shippingInventoryConfiguration = createInventoryAvailabilitySearchCriteria(\n context,\n [input.masterProductId],\n true,\n undefined,\n undefined\n );\n\n const searchCriteria: ProductDimensionAvailabilitySearchCriteria = {\n RequestedDimensionTypeValue: input.requestDimensionType,\n MatchingDimensionValues: undefined,\n DefaultWarehouseOnly: shippingInventoryConfiguration.DefaultWarehouseOnly,\n FilterByChannelFulfillmentGroup: shippingInventoryConfiguration.FilterByChannelFulfillmentGroup,\n DeliveryModeTypeFilterValue: shippingInventoryConfiguration.DeliveryModeTypeFilterValue,\n CatalogId: input.catalogId\n };\n\n const dimensionValuesPromise = ProductsDataActions.getDimensionValuesWithEstimatedAvailabilitiesAsync(\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\n input.masterProductId,\n searchCriteria\n );\n\n return dimensionValuesPromise;\n });\n\n // eslint-disable-next-line no-return-await -- existing code\n return await Promise.all(promise);\n}\n\n/**\n * The GetDimensionAvailabilitiesForProductsAction\n * Gets the available product dimensions for the master product via the getDimensionValues RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-dimension-availabilities-for-products',\n action: getDimensionAvailabilitiesForProductsAction as IAction,\n input: createProductsDimensionAvailabilitiesInput,\n isBatched: true\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull, ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport {\n ProductDimension,\n ProductDimensionAvailabilitySearchCriteria,\n ProductDimensionValue,\n ProductDimensionValueInventoryAvailability,\n ProductsDataActions\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ArrayExtensions } from './utilities';\nimport { createInventoryAvailabilitySearchCriteria } from './utilities/product-inventory-utils';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getDimensionValuesFromQuery, getSelectedProductIdFromActionInput } from './utilities/utils';\n\n/**\n * Defines the dimension value type for get dimensions for selected variant data action.\n * Includes old API format for backward compatibility and new API info for availabilities for new logic.\n */\nexport interface IDimensionValueForSelectedVariant extends ProductDimensionValueInventoryAvailability, ProductDimensionValue {}\n\n/**\n * Defines the returned type for get dimensions for selected variant data action.\n * Includes old API format for backward compatibility and new API info for availabilities for new logic.\n */\nexport interface IDimensionForSelectedVariant extends ProductDimensionFull, IProductDimensionsWithAvailabilitiesFull {}\n\n/**\n * Input class for the getDimensionsForSelectedVariant data action.\n */\nexport class GetDimensionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public matchingDimensionValues: ProductDimension[];\n\n public catalogId?: number;\n\n public constructor(\n productId: number,\n channelId: number,\n matchingDimensionValues?: ProductDimension[],\n requestContext?: IRequestContext\n ) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n\n if (requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n /**\n * Cache key.\n * @returns String.\n */\n public getCacheKey: () => string = () => `DimensionsForSelectedVariantInput-${this.productId}-${this.channelId}-${this.catalogId ?? 0}`;\n\n /**\n * Cache object type.\n * @returns String.\n */\n public getCacheObjectType: () => string = () => 'DimensionsForSelectedVariantInput';\n\n /**\n * Cache type.\n * @returns String.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create input method for the getDimensionsForSelectedVariant data action.\n * @param inputData - The input data passed to the createInput method.\n * @returns - The input for the data action.\n */\nconst createDimensionsForSelectedVariantInput = (inputData: ICreateActionContext>): GetDimensionsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDimensionsForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n getDimensionValuesFromQuery(inputData.requestContext.url.requestUrl),\n inputData.requestContext\n );\n }\n throw new Error('Unable to create DimensionsForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * Converts new API type with availabilities to old API type to preserve backward compatibility.\n * @param dimensions - Dimensions to convert.\n * @returns Dimensions in old API format.\n */\nconst prepareDimensionsDataResult = (dimensions: IProductDimensionsWithAvailabilitiesFull[]): IDimensionForSelectedVariant[] => {\n return dimensions.map(newDimension => {\n const oldDimension: IDimensionForSelectedVariant = { ...newDimension };\n oldDimension.DimensionValues = ArrayExtensions.validValues(\n newDimension.dimensionValuesWithInventory?.map(value => value.DimensionValue)\n );\n return oldDimension;\n });\n};\n\n/**\n * Action Method for the getDimensionsForSelectedVariant Data Action.\n * @param input - Input for the data action.\n * @param context - Action context.\n * @returns Product dimensions with availability.\n */\nexport async function getDimensionsForSelectedVariantAction(\n input: GetDimensionsForSelectedVariantInput,\n context: IActionContext\n): Promise {\n const activeProducts = ArrayExtensions.validValues(\n await ProductsDataActions.getByIdsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n input.channelId,\n [input.productId],\n null,\n input.catalogId ?? 0\n )\n );\n\n if (!ArrayExtensions.hasElements(activeProducts)) {\n return [];\n }\n\n const activeProduct = activeProducts[0];\n\n if (!ArrayExtensions.hasElements(activeProduct.Dimensions)) {\n return [];\n }\n\n const promises = activeProduct.Dimensions.map(dimension => {\n const shippingInventoryConfiguration = createInventoryAvailabilitySearchCriteria(context, [], true, undefined, undefined);\n\n const searchCriteria: ProductDimensionAvailabilitySearchCriteria = {\n RequestedDimensionTypeValue: dimension.DimensionTypeValue,\n MatchingDimensionValues: input.matchingDimensionValues.filter(item => item.DimensionTypeValue !== dimension.DimensionTypeValue),\n DefaultWarehouseOnly: shippingInventoryConfiguration.DefaultWarehouseOnly,\n FilterByChannelFulfillmentGroup: shippingInventoryConfiguration.FilterByChannelFulfillmentGroup,\n DeliveryModeTypeFilterValue: shippingInventoryConfiguration.DeliveryModeTypeFilterValue,\n CatalogId: input.catalogId\n };\n\n const dimensionValuesPromise = ProductsDataActions.getDimensionValuesWithEstimatedAvailabilitiesAsync(\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\n activeProduct.MasterProductId ? activeProduct.MasterProductId : activeProduct.RecordId,\n searchCriteria\n );\n const fullDimensionPromise = dimensionValuesPromise.then(dimensionValues => {\n const fullDimension: IProductDimensionsWithAvailabilitiesFull = {\n ...dimension,\n dimensionValuesWithInventory: dimensionValues\n };\n return fullDimension;\n });\n\n return fullDimensionPromise;\n });\n\n const dimensionValuesResults = await Promise.all(promises);\n\n return prepareDimensionsDataResult(dimensionValuesResults);\n}\n\n/**\n * The GetDimensionsForSelectedVariantDataAction\n * Get the currently selected Variant via the getSelectedVariant data action, and the gets the\n * available product dimensions for the variant via the getDimensionValues RetailServer API.\n */\nexport const getDimensionsForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-dimensions/for-selected-variant',\n action: getDimensionsForSelectedVariantAction as IAction,\n input: createDimensionsForSelectedVariantInput\n});\n\nexport default getDimensionsForSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { FeatureState, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the getFeatureState data action.\n * The life time of the data action is 'application'.\n */\nexport class FeatureStateInput implements IActionInput {\n // Any additional feature names that needs to be checked in the code for enablement needs to be appended here:\n public readonly featureNames: string[] = [\n 'Dynamics.AX.Application.RetailB2BEcommerceFeature',\n 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature',\n 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature',\n 'Dynamics.AX.Application.RetailSearchPriceRangeFeature',\n 'Dynamics.AX.Application.RetailSalesAgreementPriceSupportFeature',\n 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature',\n 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature'\n ];\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => 'FeatureState';\n\n /**\n * Get Cache type Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'FeatureState';\n\n /**\n * Get Cache type.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * CreateInput method for the getFeatureState method.\n * @param inputData -- The input data passed to the createInput method.\n * @returns - Input for data action.\n */\nexport const createGetFeatureStateInput = (inputData: ICreateActionContext>): IActionInput => {\n return new FeatureStateInput();\n};\n\n/**\n * The action method for the getFeatureState data action.\n * @param input -- The action input.\n * @param ctx -- The action context.\n * @returns -- Feature state.\n */\nexport async function getFeatureStateAction(input: FeatureStateInput, ctx: IActionContext): Promise {\n const featureState = await StoreOperationsDataActions.getFeatureStatesAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n input.featureNames\n );\n return featureState;\n}\n\n/**\n * The getFeatureState data action.\n * Gets the feature state via the read RetailServer API.\n * @returns Address information associated with the retrieved customer.\n */\nexport const getFeatureStateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-feature-state',\n action: getFeatureStateAction as IAction,\n input: createGetFeatureStateInput\n});\n\nexport default getFeatureStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n ChannelDeliveryOption,\n DeliveryModeTypeFilter,\n FeatureState,\n ItemAvailability,\n OrgUnitAvailability,\n OrgUnitLocation,\n ProductWarehouseInventoryInformation,\n SearchArea,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n getChannelDeliveryOptionsAsync,\n getOrgUnitLocationsByAreaAsync,\n getStoreHoursAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { FeatureStateInput, getFeatureStateActionDataAction } from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\nimport { DeliveryMode, IProductInventoryInformation } from './utilities/product-inventory-information';\nimport { createInventoryAvailabilitySearchCriteria, mapProductInventoryInformation } from './utilities/product-inventory-utils';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Get selected variant action input class.\n */\nexport class GetFullAvailableInventoryNearbyInput implements IActionInput {\n public latitude?: number;\n\n public longitude?: number;\n\n public radius?: number;\n\n public productId?: number;\n\n public DistanceUnitValue?: number;\n\n public IgnoreLocation?: boolean;\n\n constructor(\n _productId?: number,\n _latitude?: number,\n _longitude?: number,\n _radius?: number,\n _DistanceUnitValue?: number,\n _IgnoreLocation?: boolean\n ) {\n this.productId = _productId;\n this.latitude = _latitude;\n this.longitude = _longitude;\n this.radius = _radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => 'GetFullAvailableInventoryNearbyInputCache';\n\n public getCacheObjectType = () => 'GetFullAvailableInventoryNearbyInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData - The input data passed to the createInput method.\n * @returns GetFullAvailableInventoryNearbyInput - The action input.\n */\nexport const createGetFullAvailableInventoryNearbyInput = (\n inputData: ICreateActionContext>\n): GetFullAvailableInventoryNearbyInput => {\n return new GetFullAvailableInventoryNearbyInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context - The context.\n * @returns FeatureState - The feature state.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateActionDataAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data aciton.\n * @param input - The action input class.\n * @param ctx - The action context.\n * @returns IFullOrgUnitAvailability - The full org unit availability.\n */\nexport async function getFullAvailableInventoryNearbyAction(\n input: GetFullAvailableInventoryNearbyInput,\n ctx: IActionContext\n): Promise {\n // No valid product we want to return undefined so module knows there are no results yet\n if (!input.productId) {\n return undefined;\n }\n\n if (((!input.radius && input.radius !== 0) || !input.latitude || !input.longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.latitude,\n Longitude: input.longitude,\n Radius: input.radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(\n item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n )?.IsEnabled;\n const searchCriteria = createInventoryAvailabilitySearchCriteria(ctx, [input.productId], false, true, searchArea, DeliveryMode.pickup);\n return getEstimatedAvailabilityAsync({ callerContext: ctx }, searchCriteria)\n .then(async (productWarehouseInformation: ProductWarehouseInventoryInformation) => {\n // For store selector, inventory should always come from an individual store\n const productInventoryInformation = mapProductInventoryInformation(\n ctx,\n productWarehouseInformation.ProductWarehouseInventoryAvailabilities\n );\n return getOrgUnitLocationsByAreaAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n searchArea,\n DeliveryModeTypeFilter.Pickup\n )\n .then(async (stores: OrgUnitLocation[]) => {\n // Constructing a store mapping based on the InventoryId.\n const storeMap = new Map();\n stores.forEach(store => {\n if (store.InventoryLocationId) {\n storeMap.set(store.InventoryLocationId, store);\n }\n });\n\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n\n // If multiple pickup mode is enable then call getchanneldeliveryoption\n if (retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n\n const availabilityPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(\n _channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId\n );\n return _getAvailabilityWithHours(store, productInventoryInformation, storeMap, ctx, locationDeliveryOption);\n });\n\n return Promise.all(availabilityPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby');\n return [];\n });\n })\n .catch((error: Error) => {\n ctx.trace(\n '[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.'\n );\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(\n '[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.'\n );\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information along with store hours and product availability.\n * @param orgUnitLocation - The org unit location.\n * @param productInventoryInformation - The product inventory information.\n * @param storeMap - A map that contains store information group by the inventory location id.\n * @param ctx The action context.\n * @param channelDeleiveryOptions - The channel delivery options.\n * @returns IFullOrgUnitAvailability - The full org unit availability.\n */\nasync function _getAvailabilityWithHours(\n orgUnitLocation: OrgUnitLocation,\n productInventoryInformation: IProductInventoryInformation[],\n storeMap: Map,\n ctx: IActionContext,\n channelDeleiveryOptions: ChannelDeliveryOption | undefined\n): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n const itemAvailabilities: ItemAvailability[] = [];\n if (productInventoryInformation && storeMap) {\n productInventoryInformation.forEach(element => {\n if (\n element.InventLocationId &&\n storeMap.has(element.InventLocationId) &&\n element.InventLocationId === orgUnitLocation.InventoryLocationId\n ) {\n itemAvailabilities.push({ AvailableQuantity: element.ProductAvailableQuantity?.AvailableQuantity });\n }\n });\n }\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation,\n ItemAvailabilities: itemAvailabilities\n };\n\n if (hours && !(hours instanceof Error)) {\n return {\n OrgUnitAvailability: availability,\n StoreHours: hours,\n ProductInventoryInformation: productInventoryInformation,\n OrgUnitPickUpDeliveryModes: channelDeleiveryOptions\n };\n }\n\n return {\n OrgUnitAvailability: availability,\n ProductInventoryInformation: productInventoryInformation,\n OrgUnitPickUpDeliveryModes: channelDeleiveryOptions\n };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting availability with hours');\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the channel delivery option information.\n * @param channelCollection - The org unit channel Id list.\n * @param ctx - The action context.\n * @returns ChannelDeliveryOption - The channel delivery option collection.\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number | undefined)[],\n ctx: IActionContext\n): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if (id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // To get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n channelIdList,\n 4\n )\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(\n '[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options'\n );\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(\n '[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options'\n );\n return [];\n });\n}\n\n/**\n * The complete getFullAvailableInventoryNearby data action.\n */\nexport const getFullAvailableInventoryNearbyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-available-inventory-nearby',\n action: >getFullAvailableInventoryNearbyAction,\n input: createGetFullAvailableInventoryNearbyInput\n});\n\nexport default getFullAvailableInventoryNearbyActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\n\nimport { QuickOrderTemplateLine } from './quick-order-template-line';\n\n/**\n * Quick Order template class.\n */\nexport class QuickOrderTemplate {\n public productList: ProductList;\n\n public quickOrderTemplateLines: QuickOrderTemplateLine[];\n\n public totalLines: number;\n\n public constructor(productList: ProductList, quickOrderTemplateLines: QuickOrderTemplateLine[], totalLines: number) {\n this.productList = productList;\n this.quickOrderTemplateLines = quickOrderTemplateLines;\n this.totalLines = totalLines;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\n\nimport getProductList, { GetProductListInput } from './get-product-list';\nimport getProductListLines, { GetProductListLinesInput } from './get-product-list-lines';\nimport { QuickOrderTemplate } from './utilities/quick-order-templates';\n\n/**\n * Input class for the GetProductList data action.\n */\nexport class GetFullProductListInput implements IActionInput {\n public productListId: string | undefined;\n\n public constructor(productListId?: string) {\n this.productListId = productListId;\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => 'GetFullProductList';\n\n /**\n * Get Cachetype Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'GetFullProductList';\n\n /**\n * Get Cachetype.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetProductList method.\n * @param inputData - The input data passed to the createInput method.\n * @param productListId - ProductListId.\n * @returns - Input for data action.\n */\nexport const createGetFullProductListInput = (inputData: ICreateActionContext, productListId?: string): GetFullProductListInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full product list. User is not authenticated.');\n }\n\n return new GetFullProductListInput(productListId);\n};\n\n/**\n * The action method for the GetFullProductList data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - Quick Order Template object.\n */\nexport async function getFullProductListAction(input: GetFullProductListInput, context: IActionContext): Promise {\n if (!context.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full quick order template. User is not authenticated.');\n }\n\n const inputParameters = new GetProductListInput(input.productListId);\n const quickorderTemplate = await getProductList(inputParameters, context).then(productLists => {\n const inputLines = new GetProductListLinesInput(productLists[0].Id);\n return getProductListLines(inputLines, context).then(linesState => {\n return new QuickOrderTemplate(productLists[0], linesState.lines, linesState.totalCount);\n });\n });\n return quickorderTemplate;\n}\n\n/**\n * The GetFullProductList Data Action\n * Returns order templates.\n */\nexport const getFullProductListActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-product-list',\n action: getFullProductListAction as IAction,\n input: createGetFullProductListInput\n});\n\nexport default getFullProductListActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct, IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Refine search for full products input.\n */\nexport class FullProductsRefineSearchByCategoryInput implements IActionInput {\n public readonly categoryId?: number;\n\n public readonly channelId?: number;\n\n public readonly refinementCriteria: ProductRefinerValue[];\n\n public readonly catalogId: number;\n\n public ProductDetailsCriteria?: ProductDetailsCriteria;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId ?? 0;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => 'FullProductsRefineSearchByCategoryInputCache';\n\n public getCacheObjectType = () => 'FullProductsRefineSearchByCategoryInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls.\n * @param inputData\n */\nexport const createFullProductsRefineSearchByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByCategoryInput(queryResultSettingsProxy);\n }\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n const categoryId = Number(inputData.requestContext.query.categoryId);\n const channelId = inputData.requestContext.apiSettings.channelId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n return new FullProductsRefineSearchByCategoryInput(\n queryResultSettingsProxy,\n categoryId,\n +channelId,\n refinementCriteria,\n undefined,\n productDetailsCriteria\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * Calls the refine-search-by-category action.\n * Based on search result calls get-full-products to get all the product details.\n * @param input\n * @param ctx\n */\nexport async function getFullProductsByRefineSearchCategoryAction(\n input: FullProductsRefineSearchByCategoryInput,\n ctx: IActionContext\n): Promise {\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n const hasSortingColumn =\n input.queryResultSettingsProxy.QueryResultSettings &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns.length > 0;\n if (input.refinementCriteria.length === 0 && !hasSortingColumn) {\n ctx.telemetry.trace('[getFullProductsByRefineSearchCategoryAction] No refiners or sorting specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n const catalogId = getCatalogId(ctx.requestContext);\n\n let refinementCriteria: ProductRefinerValue[] = [];\n const fullProductInputs = await refineSearchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId || catalogId,\n input.categoryId || 0,\n input.refinementCriteria\n ).then(searchResults => {\n refinementCriteria = input.refinementCriteria;\n return searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(\n product.RecordId,\n apiSettings,\n input.ProductDetailsCriteria || new ProductDetailsCriteria(),\n ctx.requestContext\n );\n }\n );\n });\n\n if (fullProductInputs.length > 0) {\n const productResult = await (>getFullProducts(fullProductInputs, ctx));\n return {\n productSearchResult: productResult,\n refinementCriteria\n };\n }\n return {\n productSearchResult: [],\n refinementCriteria\n };\n}\n\nexport const getFullProductsByRefineSearchCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-category',\n action: >getFullProductsByRefineSearchCategoryAction,\n input: createFullProductsRefineSearchByCategoryInput,\n isBatched: false\n});\n\nexport default getFullProductsByRefineSearchCategoryActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { ProductDetailsCriteria } from './get-full-products';\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getRefinedFullProducts, IRefinableProductsInput } from './utilities/refiner-utils';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Input for refining products returned by the search text.\n */\nexport class FullProductsRefineSearchByTextInput implements IActionInput, IRefinableProductsInput {\n public readonly searchText: string;\n\n public readonly channelId?: number;\n\n public readonly refinementCriteria: ProductRefinerValue[];\n\n public readonly itemsPerPage?: number;\n\n public readonly skipCount?: number;\n\n public readonly catalogId: number;\n\n public productDetailsCriteria?: ProductDetailsCriteria;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n public constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n searchText?: string,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.searchText = searchText || '';\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId ?? 0;\n this.productDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => 'FullProductsRefineSearchByTextInputCache';\n\n public getCacheObjectType = () => 'FullProductsRefineSearchByTextInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls.\n * @param inputData\n */\nexport const createFullProductsRefineSearchByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByTextInput(queryResultSettingsProxy);\n }\n\n const searchInputData = parseSearchData(inputData);\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n\n return new FullProductsRefineSearchByTextInput(\n queryResultSettingsProxy,\n searchInputData.q,\n searchInputData.channelId,\n refinementCriteria,\n undefined,\n productDetailsCriteria\n );\n};\n\n/**\n * Calls the refine-search-by-text action.\n * Based on search result calls get-full-products to get all the product details.\n * @param input\n * @param ctx\n */\nexport function getFullProductsByRefineSearchTextAction(\n input: FullProductsRefineSearchByTextInput,\n ctx: IActionContext\n): Promise {\n const catalogId = getCatalogId(ctx.requestContext);\n\n return getRefinedFullProducts(input, ctx, () => {\n return refineSearchByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId || catalogId,\n input.searchText,\n input.refinementCriteria\n );\n });\n}\n\nexport const getFullProductsByRefineSearchTextActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-text',\n action: >getFullProductsByRefineSearchTextAction,\n input: createFullProductsRefineSearchByTextInput,\n isBatched: false\n});\n\nexport default getFullProductsByRefineSearchTextActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from '../get-full-products';\n\n/**\n * Common refinable products input includes both product detail criteria and refinement criteria.\n */\nexport interface IRefinableProductsInput {\n refinementCriteria: ProductRefinerValue[];\n productDetailsCriteria?: ProductDetailsCriteria;\n}\n\n/**\n * If refinement criteria is set, then gets refined products.\n * @param input Refinable products input.\n * @param ctx Action context.\n * @param getRefinedProducts Callback function to get a promise (e.g. RefineSearchByCategoryAsync, refineSearchByTextAsync)\n * that is executed to get refined products or full set of products.\n */\nexport async function getRefinedFullProducts(\n input: IRefinableProductsInput,\n ctx: IActionContext,\n getRefinedProducts: () => Promise\n): Promise {\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n if (input.refinementCriteria.length === 0) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] No refiners specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let fullProductInputs: FullProductInput[] = [];\n\n const searchResults = await getRefinedProducts();\n if (!searchResults) {\n ctx.telemetry.error('[getFullProductsByRefineSearchCategoryAction] no searchResults returned');\n } else {\n fullProductInputs = searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(\n product.RecordId,\n apiSettings,\n input.productDetailsCriteria || new ProductDetailsCriteria(),\n ctx.requestContext\n );\n }\n );\n }\n\n if (fullProductInputs.length > 0) {\n const productResult = await getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria: input.refinementCriteria\n };\n }\n return {\n productSearchResult: [],\n refinementCriteria: input.refinementCriteria\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCatalogId, IRequestContext, versionLt } from '@msdyn365-commerce/core-internal';\nimport { getCartFromCustomer } from '@msdyn365-commerce/global-state';\nimport { AffiliationLoyaltyTier, ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\nimport { getActivePricesAsync, getProductRatingsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getSimpleProducts, { ProductInput } from './get-simple-products';\nimport { ArrayExtensions, QueryResultSettingsProxy } from './utilities';\nimport { buildCacheKey, generateKey, getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Full Product Input.\n */\nexport class FullProductInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public readonly catalogId?: number;\n\n public ProductDetailsCriteria: ProductDetailsCriteria;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n public constructor(\n productId: number | string,\n apiSettings: ICommerceApiSettings,\n criteria: ProductDetailsCriteria,\n requestContext?: IRequestContext,\n catalogId?: number\n ) {\n this.productId = typeof productId === 'string' ? Number.parseInt(productId, 10) : productId;\n this.ProductDetailsCriteria = criteria;\n this.apiSettings = apiSettings;\n this.channelId = apiSettings.channelId;\n this.catalogId = catalogId;\n\n if (this.catalogId === undefined && requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n public getCacheKey = () => {\n const { getPrice, getRating } = this.ProductDetailsCriteria;\n return buildCacheKey(generateKey([this.productId, this.catalogId, getPrice, getRating]), this.apiSettings);\n };\n\n public getCacheObjectType = () => 'FullProduct';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Class to define criteria to get full product like price, ratings etc.\n */\nexport class ProductDetailsCriteria {\n public getPrice: boolean;\n\n public getRating: boolean;\n\n constructor(getPrice?: boolean, getRating?: boolean) {\n this.getPrice = getPrice || false;\n this.getRating = getRating || false;\n }\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (typeof productIds === 'string') {\n productIds = productIds.split(',');\n }\n if (Array.isArray(productIds) && productIds.length > 0) {\n return productIds.map((productId: string) => {\n return new FullProductInput(+productId, inputData.requestContext.apiSettings, productDetailsCriteria, inputData.requestContext);\n });\n }\n return [];\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput.\n * @param inputs\n * @param ctx\n */\nexport async function getFullProductsAction(inputs: FullProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || inputs.length === 0) {\n ctx.trace('[getFullProductsAction] Invalid or empty inputs passed.');\n return {};\n }\n\n const { apiSettings } = ctx.requestContext;\n const productInputs = inputs.map(\n (input: FullProductInput): ProductInput => {\n return new ProductInput(input.productId, apiSettings, undefined, undefined, ctx.requestContext);\n }\n );\n\n return getSimpleProducts(productInputs, ctx)\n .then(result => {\n return result.map(product => {\n return { ProductDetails: product };\n });\n })\n .then((productCollection: FullProduct[]) => {\n const validProductIds = new Set(productCollection.map(input => input.ProductDetails && input.ProductDetails.RecordId));\n\n const ratingsAndPricePromises = [\n _getActivePrices(inputs, validProductIds, productCollection, ctx),\n _getProductRatings(inputs, validProductIds, productCollection, ctx)\n ];\n return Promise.all(ratingsAndPricePromises).then(() => {\n return productCollection;\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get Simple products');\n return [];\n });\n}\n\nasync function _getActivePrices(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n let catalogId = 0;\n if (ArrayExtensions.hasElements(inputs)) {\n catalogId = inputs[0].catalogId ?? 0;\n }\n\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: catalogId };\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getPrice && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n let affiliations: AffiliationLoyaltyTier[] | undefined = [];\n if (ctx.requestContext.user.isAuthenticated) {\n const cart = await getCartFromCustomer(ctx);\n affiliations = cart?.AffiliationLines;\n }\n\n if (validInputs.length === 0) {\n return Promise.resolve();\n }\n\n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n projectDomain,\n validInputs,\n new Date(),\n null,\n affiliations,\n true\n )\n .then(result => {\n result.forEach(productPrice => {\n const fullProduct: FullProduct | undefined = productCollection.find(x => {\n return x.ProductDetails && x.ProductDetails.RecordId === productPrice.ProductId;\n });\n if (fullProduct) {\n // If RS Version < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (versionLt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n fullProduct.ProductPrice = productPrice;\n }\n });\n })\n .catch((error: Error) => {\n const telemetry = ctx.telemetry;\n telemetry.debug('[getActivePricesAsync] Unable to get active price.');\n telemetry.exception(error);\n });\n}\n\nasync function _getProductRatings(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getRating && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n if (validInputs.length === 0) {\n return Promise.resolve();\n }\n\n return getProductRatingsAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n validInputs\n )\n .then(result => {\n result.forEach(productRating => {\n const fullProduct: FullProduct | undefined = productCollection.find(x => {\n return x.ProductDetails && x.ProductDetails.RecordId === productRating.ProductId;\n });\n if (fullProduct) {\n fullProduct.ProductRating = productRating;\n }\n });\n })\n .catch(error => {\n const telemetry = ctx.telemetry;\n telemetry.debug('[getProductRatingsAsync] Unable to get product ratings.');\n telemetry.exception(error);\n });\n}\n\nexport const getFullProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products',\n action: >getFullProductsAction,\n input: createInput,\n isBatched: true\n});\n\nexport default getFullProductsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\n\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from '.';\n\n/**\n * Input class for getActiveWishlistItems data action.\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => 'ActiveWishlistItems';\n\n public getCacheObjectType = () => 'ActiveWishlistItems';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if (ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n null\n );\n\n if (wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n if (wishlists[0].CommerceListLines) {\n wishlists[0].CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if (commerceListLine.ProductId) {\n productInputs.push(\n new FullProductInput(\n commerceListLine.ProductId,\n ctx.requestContext.apiSettings,\n getProductDetailsCriteriaFromActionInput(ctx),\n ctx.requestContext\n )\n );\n }\n });\n }\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n }\n return [];\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getActiveWishlistItems]Unable to hydrate cart with product information');\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n }\n ctx.trace('No productIds found for wishlist');\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { Image, ISubList, List } from '@msdyn365-commerce-modules/data-types';\n\nimport GetProducts, { ProductInput } from './get-simple-products';\n\n/**\n * List Input action.\n */\nexport class ListInput implements IActionInput {\n public DocumentId: string;\n\n public Title: string;\n\n public Description: string;\n\n public ShortDescription: string;\n\n public BackgroundColor: string;\n\n public ForegroundColor: string;\n\n public Images: Image[];\n\n public Items: (IProductItem[] | ISubList)[];\n\n public ProductItems: IProductItem[];\n\n public ItemsCount: number;\n\n public ItemsPerPage: number;\n\n public SkipCount: number;\n\n constructor(\n documentId: string,\n title: string,\n description: string,\n shortDescription: string,\n backgroundColor: string,\n foregroundColor: string,\n images: Image[],\n items: (IProductItem[] | ISubList)[],\n productItems: IProductItem[],\n itemsCount: number,\n itemsPerPage: number,\n skipCount: number\n ) {\n this.DocumentId = documentId;\n this.Title = title;\n this.Description = description;\n this.ShortDescription = shortDescription;\n this.BackgroundColor = backgroundColor;\n this.ForegroundColor = foregroundColor;\n this.Images = images;\n this.Items = items;\n this.ProductItems = productItems;\n this.ItemsCount = itemsCount;\n this.ItemsPerPage = itemsPerPage;\n this.SkipCount = skipCount;\n }\n\n public shouldCacheOutput = () => true;\n\n public getCacheObjectType = () => 'LIST';\n\n public getCacheKey = () => `${this.DocumentId}-${this.ItemsCount}-${this.ItemsPerPage}-${this.SkipCount}`;\n}\n\nexport interface IProductItem {\n RecordId: string;\n CatalogId: string;\n}\n\n/**\n * List item type enum.\n */\nenum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Calls to getSimpleProducts to get product array by ID's in list.\n * @param input\n * @param ctx\n */\nexport async function getListData(input: ListInput, ctx: IActionContext): Promise {\n ctx.trace(`List Title: ${input.Title}`);\n\n const { apiSettings } = ctx.requestContext;\n\n const sublists: (SimpleProduct | ISubList)[] = [];\n const result: List = {\n Title: input.Title,\n Description: input.Description,\n ShortDescription: input.ShortDescription,\n BackgroundColor: input.BackgroundColor,\n ForegroundColor: input.ForegroundColor,\n Items: sublists,\n ItemsCount: input.ItemsCount\n };\n\n if (input && input.Items && input.Items.length > 0) {\n // Get all products\n let products: SimpleProduct[] = [];\n if (input.ProductItems && input.ProductItems.length > 0) {\n const inputArray = input.ProductItems.map(\n item => new ProductInput(+item.RecordId, apiSettings, undefined, undefined, ctx.requestContext)\n );\n products = await GetProducts(inputArray, ctx);\n }\n\n // Build map from recordId to product, which will be used later when build the output.\n const productMap: { [recordId: string]: SimpleProduct } = {};\n products.forEach(item => {\n if (item) {\n productMap[`${item.RecordId}`] = item;\n }\n });\n\n for (const listitem of input.Items) {\n if (isSublist(listitem)) {\n result.Items.push(listitem);\n } else {\n listitem.forEach(item => {\n if (productMap[item.RecordId]) {\n result.Items.push(productMap[item.RecordId]);\n }\n });\n }\n }\n }\n\n return result;\n}\n\n/**\n * Check if an item is sublist.\n * @param listItem\n */\nfunction isSublist(listItem: IProductItem[] | ISubList): listItem is ISubList {\n return (listItem).Images !== undefined;\n}\n\n/**\n * Get images.\n * @param images\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // Add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get the url of sub list.\n * @param listName\n * @param sitePath\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if (!sitePath) {\n return `/${listName}.l`;\n }\n\n // SitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get input list data.\n * @param inputData\n */\nfunction getInutListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\n/**\n * Get sub list item.\n * @param item\n * @param sitePathOfRequest\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path.\n * @param inputData\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page.\n * @param inputData\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count.\n * @param inputData\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount\n ? Number(inputData.requestContext.query.skipCount)\n : 0;\n}\n\n/**\n * Creates the input required to make the list call to get products.\n * @param inputData\n */\nconst createListInput = (inputData: ICreateActionContext, IGeneric>): IActionInput => {\n const listData: IGeneric = getInutListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // If any elements in product list, then copy it and add to list items\n if (productList.length > 0) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // Build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // Add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // Save the last portion of product items.\n if (productList.length > 0) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nexport const getListDataDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-list',\n action: >getListData,\n input: createListInput\n});\n\nexport default getListDataDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport {\n getCustomerLoyaltyCardsAsync,\n getLoyaltyCardAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey, QueryResultSettingsProxy } from '.';\n\n/**\n * Input class for the getLoyaltyCard data action.\n */\nexport class GetLoyaltyCardInput implements IActionInput {\n public userAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCard-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetLoyaltyCard';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getLoyaltyCard method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetLoyaltyCardInput = (inputData: ICreateActionContext): GetLoyaltyCardInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get loyalty card input. User is not authenticated.');\n }\n\n return new GetLoyaltyCardInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getLoyaltyAction(input: GetLoyaltyCardInput, ctx: IActionContext): Promise {\n return getCustomerLoyaltyCardsAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n input.userAccountNumber || null\n )\n .then(cards => {\n if (!cards || cards.length === 0) {\n return {};\n }\n\n const firstCard = cards[0];\n\n return getLoyaltyCardAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n firstCard.CardNumber\n )\n .then(card => {\n card.LoyaltyEnrollmentDate = firstCard.LoyaltyEnrollmentDate;\n card.LoyaltyEnrollmentDateLocal = firstCard.LoyaltyEnrollmentDateLocal;\n return card;\n })\n\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get loyalty card');\n throw new Error('Unable to get loyalty card');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error.message);\n ctx.telemetry.debug('Unable to get customers loyalty card');\n throw new Error('Unable to get customers loyalty card');\n });\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer.\n */\nexport const getLoyaltyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-card',\n action: >getLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyCardInput\n});\n\nexport default getLoyaltyActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, LoyaltyCard, LoyaltyPointRedemptionEstimate } from '@msdyn365-commerce/retail-proxy';\nimport { getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\nimport { buildCacheKey, getLoyalty, GetLoyaltyCardInput } from '.';\n\n/**\n * Input class for the getLoyaltyCard data action.\n */\nexport class GetLoyaltyTransactionEstimationInput implements IActionInput {\n public userAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCardTransactionEstimation-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetLoyaltyCardTransactionEstimation';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getLoyaltyCard method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetLoyaltyTransactionEstimationInput = (inputData: ICreateActionContext): GetLoyaltyTransactionEstimationInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n }\n\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getLoyaltyTransactionEstimationAction(\n input: GetLoyaltyTransactionEstimationInput,\n ctx: IActionContext\n): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n return {};\n }\n\n const promises: [Promise, Promise, Promise] = [\n _getCart(ctx),\n _getLoyalty(input, ctx),\n _getOrgUnits(ctx)\n ];\n return Promise.all(promises)\n .then(result => {\n if (result && result.length >= 2 && result[1].CardNumber) {\n return getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync(\n { callerContext: ctx },\n result[0].Id,\n result[1].CardNumber,\n result[2].Currency || ''\n )\n .then(points => {\n return points;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Error getting Loyalty Point Redemption Estimate');\n throw new Error('Error getting Loyalty Point Redemption Estimate');\n });\n }\n return {};\n })\n .catch(error => {\n return {};\n });\n}\n\nasync function _getCart(ctx: IActionContext): Promise {\n const cartState = await getCartState(ctx);\n\n return cartState.cart;\n}\n\nasync function _getLoyalty(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyalty(loyaltyCardInput, ctx);\n}\n\nasync function _getOrgUnits(ctx: IActionContext): Promise {\n return getOrgUnitConfigurationAsync({ callerContext: ctx, queryResultSettings: {} });\n}\n\n/**\n * The getLoyaltyTransactionEstimation data action\n * Returns the loyalty card belonging to the customer.\n */\nexport const getLoyaltyTransactionEstimationActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-transaction-estimation',\n action: >getLoyaltyTransactionEstimationAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyTransactionEstimationInput\n});\n\nexport default getLoyaltyTransactionEstimationActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { MediaLocation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey, generateImageUrl } from './utilities/utils';\n\n/**\n * Product Input.\n */\nexport class MediaLocationsByIdInput implements IActionInput {\n public productId?: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, productId?: number, catalogId?: number) {\n this.productId = productId;\n this.channelId = +apiSettings.channelId;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () =>\n buildCacheKey(`MediaLocationID-${this.productId && this.productId.toString()}-${this.catalogId}`, this.apiSettings);\n\n public getCacheObjectType = () => 'MediaLocations';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createMediaLocationsByIdInput = (inputData: ICreateActionContext>): MediaLocationsByIdInput => {\n const productId = (inputData.config && +inputData.config.productId) || undefined;\n const catalogId = getCatalogId(inputData.requestContext);\n return new MediaLocationsByIdInput(inputData.requestContext.apiSettings, productId, catalogId);\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed MediaLocationsByIdInput.\n * @param input\n * @param ctx\n */\nexport async function getMediaLocationsByIdAction(input: MediaLocationsByIdInput, ctx: IActionContext): Promise {\n if (input.productId) {\n return getMediaLocationsAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n input.productId,\n input.channelId,\n input.catalogId\n ).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : '';\n return mediaLocation;\n }\n );\n });\n }\n return [];\n}\n\nexport const getMediaLocationsByIdActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-by-id',\n action: >getMediaLocationsByIdAction,\n input: createMediaLocationsByIdInput\n});\n\nexport default getMediaLocationsByIdActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { AsyncResult, MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getSelectedVariant, { SelectedVariantInput } from './get-selected-variant';\nimport { generateImageUrl, getSelectedProductIdFromActionInput } from './utilities';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * The action input class for the getMediaLocationsForSelectedVariant data action.\n */\nexport class MediaLocationsForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.catalogId = catalogId || 0;\n this.selectedProduct = selectedProduct;\n }\n\n public getCacheKey = () => 'MediaLocationsForSelectedVariant';\n\n public getCacheObjectType = () => 'MediaLocations';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the getMediaLocationsForSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createMediaLocationsForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): MediaLocationsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n const catalogId = getCatalogId(inputData.requestContext);\n\n if (productId) {\n return new MediaLocationsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, undefined, catalogId);\n }\n throw new Error('Unable to create MediaLocationsForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * The action method for the getMediaLocationsForSelectedVariant data action.\n * @param input\n * @param ctx\n */\nexport async function getMediaLocationsForSelectedVariantAction(\n input: MediaLocationsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n return AsyncResult.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(\n input.productId,\n input.channelId,\n undefined,\n undefined,\n ctx.requestContext\n );\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then(productResult => {\n const activeProduct = productResult?.productVariant ?? productResult;\n\n if (activeProduct) {\n return getMediaLocationsAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n activeProduct.RecordId,\n input.channelId,\n input.catalogId\n ).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : activeProduct.Name;\n return mediaLocation;\n }\n );\n });\n }\n\n return [];\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[getMediaLocationsForSelectedVariantAction]Error executing action');\n throw new Error('[getMediaLocationsForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The getMediaLocationsForSelectedVariant data action\n * Gets the currently selected variant for the page via the getSelectedVariant data action,\n * and then gets the media location information for the variant via the MediaLocations RetailServer API.\n */\nexport const getMediaLocationsForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-for-selected-variant',\n action: >getMediaLocationsForSelectedVariantAction,\n input: createMediaLocationsForSelectedVariantInput\n});\n\nexport default getMediaLocationsForSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrderShipmentsHistoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IDataServiceRequest => {\n if (inputData.requestContext && inputData.requestContext.user && inputData.requestContext.user.isAuthenticated) {\n return createGetOrderShipmentsHistoryInput(\n {\n Paging: {\n Top: 100,\n Skip: 0\n }\n },\n\n // @ts-expect-error\n null\n );\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-order-history',\n action: >retailAction,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrgUnitConfigurationInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Org Unit Configuration Data Action.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-org-unit-configuration',\n action: >retailAction,\n input: () => {\n return createGetOrgUnitConfigurationInput();\n }\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\n/**\n * Input class for get customer data action.\n */\nexport class OrganizationUsersCountInput implements IActionInput {\n public getCacheKey = () => 'OrganizationUsersCount';\n\n public getCacheObjectType = () => 'BusinessPartner';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createGetOrganizationUsersCountInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersCountInput();\n};\n\nexport async function getOrganizationUsersCount(input: OrganizationUsersCountInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n if (!businessPartner) {\n return 0;\n }\n\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then(users => {\n return users.length;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users-count] Unable to load users');\n throw new Error('[get-organization-users-count] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users-count] Unable to get BusinessPartner');\n throw new Error('[get-organization-users-count] Unable to get BusinessPartner');\n });\n}\nexport default createObservableDataAction({\n id: 'get-organization-users-count',\n action: >(getOrganizationUsersCount),\n input: createGetOrganizationUsersCountInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action.\n */\nexport class OrganizationUsersInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('OrganizationUsers', this.apiSettings);\n\n public getCacheObjectType = () => 'BusinessPartner';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const createGetOrganizationUsersInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersInput(requestContext.apiSettings);\n};\n\nexport async function getOrganizationUsers(input: OrganizationUsersInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then(users => {\n return users;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users] Unable to load users');\n throw new Error('[get-organization-users] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users] Unable to get BusinessPartner');\n throw new Error('[get-organization-users] Unable to get BusinessPartner');\n });\n}\nexport const getOrganizationUsersDataAction = createObservableDataAction({\n id: 'get-organization-users',\n action: >(getOrganizationUsers),\n input: createGetOrganizationUsersInput\n});\n\nexport default getOrganizationUsersDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getOrderHistoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetOrganizationWideOrderHistory data action.\n */\nexport class GetOrganizationWideOrderHistoryInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetOrganizationWideOrderHistoryInput|${convertToString(this.queryResultSettings)}`;\n\n public getCacheObjectType = () => 'GetOrganizationWideOrderHistoryInput';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the GetOrganizationWideOrderHistory method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n */\nexport const getOrganizationWideOrderHistoryInput = (inputData: ICreateActionContext): GetOrganizationWideOrderHistoryInput => {\n if (!inputData?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrganizationWideOrderHistoryInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrganizationWideOrderHistory data action.\n * @param {GetOrganizationWideOrderHistory} input The action input.\n * @param {IActionContext} ctx The action context.\n * @param context\n */\nexport async function getOrganizationWideOrderHistory(\n input: GetOrganizationWideOrderHistoryInput,\n context: IActionContext\n): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n if (!businessPartner) {\n throw new Error('Unable to get order history. Failed to retrieve business partner id.');\n }\n\n return getOrderHistoryAsync(\n { callerContext: context, queryResultSettings: input.queryResultSettings },\n businessPartner.BusinessPartnerId\n );\n}\n\nexport const getOrganizationWideOrderHistoryDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-organization-wide-order-history',\n action: >getOrganizationWideOrderHistory,\n input: getOrganizationWideOrderHistoryInput\n});\n\nexport default getOrganizationWideOrderHistoryDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport { ActiveCartProductsInput, buildCacheKey, getActiveCartProductsAction } from '.';\nimport { ArrayExtensions } from './utilities';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for pickup delivery options for items in cart.\n */\nexport class ProductPickUpOptionsForCartLineItems implements IActionInput {\n public readonly apiSettings: ICommerceApiSettings;\n\n public constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => buildCacheKey('ActiveCartLineItemsPickUpOptions', this.apiSettings);\n\n /**\n * Get Cachetype Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'ActiveCartLineItemsPickUpOptions';\n\n /**\n * Get Cachetype.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the GetPickUpOptionCartLineItems method.\n * @param inputData - The input data passed to the createInput method.\n * @returns - Input for data action.\n */\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductPickUpOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the GetPickUpOptionCartLineItems data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - Order Template object.\n */\nexport async function getPickUpOptionsForCartLineItems(\n input: ProductPickUpOptionsForCartLineItems,\n context: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input.apiSettings.channelId) {\n throw new Error('[getPickUpOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(context);\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), context);\n const filterOption = 4;\n const response: ProductDeliveryOptions[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- existing code.\n if (cart === undefined || !ArrayExtensions.hasElements(products)) {\n return Promise.resolve(response);\n }\n\n const pickupoptions = await ProductsDataActions.getDeliveryOptionsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n products.map(product => product.RecordId),\n {},\n filterOption\n );\n\n return pickupoptions;\n}\n\n/**\n * The GetPickupOptionCartLineItems Data Action\n * Returns pickup options.\n */\nexport const getPickUpOptionsForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-pickup-options-for-cartlines',\n action: getPickUpOptionsForCartLineItems as IAction,\n input: createInput\n});\n\nexport default getPickUpOptionsForCartLineItemsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, createObservableDataAction, getCatalogId, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { getCartFromCustomer } from '@msdyn365-commerce/global-state';\nimport { ProductPrice, ProductsDataActions, ProductSearchResult, ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\n\nimport { ArrayExtensions } from './utilities';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetPriceForProductSearchResult Data Action.\n */\nexport class PriceForProductSearchResultInput implements IActionInput {\n public products: ProductSearchResult[];\n\n public constructor(products: ProductSearchResult[]) {\n this.products = products;\n }\n\n /**\n * Get the cache key.\n * @returns The cache key.\n */\n public getCacheKey = (): string => `PriceForProductSearchResult-${JSON.stringify(this.products)}`;\n\n /**\n * Get the cache object type.\n * @returns The cache object type.\n */\n public getCacheObjectType = (): string => 'ProductSearchResult';\n\n /**\n * Define the data cache type.\n * @returns The cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the GetPriceForProductSearchResultDataAction.\n * @param products -- The product search result.\n * @returns The input.\n */\nexport const createActivePriceForProductSearchResultInput = (products: ProductSearchResult[]): PriceForProductSearchResultInput => {\n return new PriceForProductSearchResultInput(products);\n};\n\n/**\n * The Action Method for the GetPriceForProductSearchResult Data Action\n * Gets the active price for product search result via the getActivePrice RetailServer API.\n * @param input -- The data input.\n * @param context -- The action context.\n * @returns The product search result updated with price.\n */\nexport async function getPriceForProductSearchResultAction(\n input: PriceForProductSearchResultInput,\n context: IActionContext\n): Promise {\n let productRecIds: number[];\n if (ArrayExtensions.hasElements(input.products)) {\n productRecIds = input.products.map(product => product.RecordId);\n } else {\n return Promise.resolve([]);\n }\n\n const catalogId = getCatalogId(context.requestContext);\n\n const projectDomain: ProjectionDomain = { ChannelId: +context.requestContext.apiSettings.channelId, CatalogId: catalogId };\n const cart = await getCartFromCustomer(context);\n const affiliation = cart?.AffiliationLines;\n const priceZero = 0;\n\n try {\n const productPrices: ProductPrice[] = await ProductsDataActions.getActivePricesAsync(\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\n projectDomain,\n productRecIds,\n new Date(),\n null,\n affiliation,\n true\n );\n\n const productResults: ProductSearchResult[] = input.products.map(product => {\n const activePrice = productPrices.find(price => price.ProductId === product.RecordId);\n if (activePrice) {\n product.Price = activePrice.CustomerContextualPrice ?? product.Price;\n product.BasePrice = Math.max(\n activePrice.BasePrice ?? priceZero,\n activePrice.TradeAgreementPrice ?? priceZero,\n activePrice.AdjustedPrice ?? priceZero\n );\n }\n return product;\n });\n\n return Promise.resolve(productResults);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- existing error type.\n context.telemetry.exception(error);\n context.telemetry.debug('[getPriceForProductSearchResultAction]Error executing action');\n throw new Error('[getPriceForProductSearchResultAction]Error executing action');\n }\n}\n\n/**\n * The getPriceForProductSearchResult data action.\n */\nexport const getPriceForProductSearchResultDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-price-for-product-search-result',\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- existing pattern.\n action: >getPriceForProductSearchResultAction,\n input: createActivePriceForProductSearchResultInput\n});\n\nexport default getPriceForProductSearchResultDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartFromCustomer } from '@msdyn365-commerce/global-state';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n AffiliationLoyaltyTier,\n ProductPrice,\n ProductType,\n ProjectionDomain,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '.';\nimport { FeatureStateInput, getFeatureStateActionDataAction } from './get-feature-state';\nimport { ArrayExtensions } from './utilities';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetPriceForSelectedVariant Data Action.\n */\nexport class PriceForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n public customerId?: string;\n\n public constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId ?? '';\n }\n\n public getCacheKey = (): string => 'PriceForSelectedVariant';\n\n public getCacheObjectType = (): string => 'Price';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the GetPriceForSelectedVariantDataAction.\n * @param inputData - The input data for the createInput method.\n * @returns The PriceForSelectedVariantInput.\n */\nexport const createActivePriceForSelectedVariantInput = (inputData: ICreateActionContext>): PriceForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new PriceForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, undefined);\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * The Action Method for the GetPriceForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's current contextual price\n * via the getActivePrice RetailServer API.\n * @param input - The input.\n * @param ctx - The ctx.\n * @returns The Promise.\n */\nexport async function getPriceForSelectedVariantAction(\n input: PriceForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n let affiliations: AffiliationLoyaltyTier[] | undefined = [];\n if (ctx.requestContext.user.isAuthenticated) {\n const cart = await getCartFromCustomer(ctx);\n affiliations = cart?.AffiliationLines;\n }\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(\n input.productId,\n input.channelId,\n undefined,\n undefined,\n ctx.requestContext\n );\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then(async (productResult: SimpleProduct | null) => {\n const catalogId = getCatalogId(ctx.requestContext);\n const projectDomain: ProjectionDomain = {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n };\n\n const activeProduct: SimpleProduct | undefined = productResult as SimpleProduct | undefined;\n if (activeProduct) {\n const featureStates: FeatureState[] = await getFeatureStateActionDataAction(new FeatureStateInput(), ctx);\n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n projectDomain,\n [activeProduct.RecordId],\n new Date(),\n input.customerId,\n affiliations,\n true,\n featureStates.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature')\n ?.IsEnabled &&\n (activeProduct.ProductTypeValue === ProductType.Master || activeProduct.ProductTypeValue === ProductType.KitMaster),\n featureStates.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSalesAgreementPriceSupportFeature'\n )?.IsEnabled\n ).then((productPrices: ProductPrice[]) => {\n if (!ArrayExtensions.hasElements(productPrices)) {\n throw new Error('[getPriceForSelectedVariantAction]Invalid response recieved from getActivePricesAsync');\n }\n return productPrices[0];\n });\n }\n\n return null;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPriceForSelectedVariantAction]Error executing action');\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport const getPriceForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-price-for-selected-variant',\n action: getPriceForSelectedVariantAction as IAction,\n input: createActivePriceForSelectedVariantInput\n});\n\nexport default getPriceForSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n ProductAvailableQuantity,\n ProductsDataActions,\n ProductType,\n ProductWarehouseInventoryAvailability,\n ReleasedProductType\n} from '@msdyn365-commerce/retail-proxy';\n\nimport getSelectedVariant, { SelectedVariantInput } from './get-selected-variant';\nimport { ArrayExtensions, getSelectedProductIdFromActionInput } from './utilities';\nimport { DeliveryMode, IProductInventoryInformation } from './utilities/product-inventory-information';\nimport { createInventoryAvailabilitySearchCriteria, mapAggregatedProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action.\n */\nexport class ProductAvailabilitiesForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public constructor(productId: number | string, channelId: number) {\n this.productId = typeof productId === 'string' ? +productId : productId;\n this.channelId = channelId;\n }\n\n /**\n * GetCacheKey.\n * @returns - Returns string.\n */\n public getCacheKey = (): string => 'ProductAvailabilitiesForSelectedVariant';\n\n /**\n * GetCacheObjectType.\n * @returns - Cache Object Type string.\n */\n public getCacheObjectType = (): string => 'ProductAvailabilities';\n\n /**\n * DataCacheType.\n * @returns - CacheType string.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getProductAvailabilitiesForSelectedVariant data action.\n * @param inputData - The input data passed to the createInput method.\n * @returns - ProductAvailabilitiesForSelectedVariant or error.\n */\nexport const createProductAvailabilitiesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): ProductAvailabilitiesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new ProductAvailabilitiesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n }\n throw new Error('Unable to create ProductAvailabilitiesForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * The action method for the getProductAvailabilitiesForSelectedVariant data action.\n * @param input - ProductAvailabilitiesForSelectedVariant.\n * @param ctx - Action Context.\n * @returns - Product inventory information.\n */\nexport async function getProductAvailabilitiesForSelectedVariantAction(\n input: ProductAvailabilitiesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId, undefined, undefined, ctx.requestContext);\n const productInventoryInformation: IProductInventoryInformation[] = [];\n\n try {\n const productResult = await getSelectedVariant(selectedVariantInput, ctx);\n\n // Don't get availability if it is service item && enableStockCheck is disbaled.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Reading config.\n if (\n ctx.requestContext.app.config.enableStockCheck &&\n productResult &&\n productResult.ItemTypeValue !== ReleasedProductType.Service &&\n productResult.ProductTypeValue !== ProductType.Master\n ) {\n const shippingSearchCriteria = createInventoryAvailabilitySearchCriteria(\n ctx,\n [productResult.RecordId],\n true,\n undefined,\n undefined,\n DeliveryMode.shipping\n );\n const pickupSearchCriteria = createInventoryAvailabilitySearchCriteria(\n ctx,\n [input.productId],\n false,\n true,\n undefined,\n DeliveryMode.pickup\n );\n const shippingAvailability = await ProductsDataActions.getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n shippingSearchCriteria\n );\n if (shippingAvailability.ProductWarehouseInventoryAvailabilities) {\n const shippingInventory = mapAggregatedProductInventoryInformation(ctx, shippingAvailability);\n if (ArrayExtensions.hasElements(shippingInventory)) {\n shippingInventory[0].deliveryType = DeliveryMode.shipping;\n productInventoryInformation.push(shippingInventory[0]);\n }\n }\n const pickupAvailability = await ProductsDataActions.getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n pickupSearchCriteria\n );\n if (pickupAvailability.ProductWarehouseInventoryAvailabilities) {\n const pickupInventory = mapAggregatedProductInventoryInformation(ctx, pickupAvailability);\n if (ArrayExtensions.hasElements(pickupInventory)) {\n pickupInventory[0].deliveryType = DeliveryMode.pickup;\n productInventoryInformation.push(pickupInventory[0]);\n }\n }\n return productInventoryInformation;\n }\n return undefined;\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- cann't assign type to the error variable.\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPriceForSelectedVariantAction]Error executing action');\n return undefined;\n }\n}\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity.\n * @param productsWarehouseInventory - Product warehouse inventory.\n * @returns Product Available quantity.\n */\nexport function mergeProductWarehouseToProductAvailabities(\n productsWarehouseInventory: ProductWarehouseInventoryAvailability[]\n): ProductAvailableQuantity[] {\n const productAvailable: ProductAvailableQuantity[] = [];\n if (ArrayExtensions.hasElements(productsWarehouseInventory)) {\n for (const product of productsWarehouseInventory) {\n if (product.TotalAvailable !== undefined && product.ProductId !== undefined) {\n productAvailable.push({ ProductId: product.ProductId, AvailableQuantity: product.TotalAvailable });\n }\n }\n }\n return productAvailable;\n}\n\n/**\n * The complete getProductAvailabilitiesForSelectedVariant data action\n * Get the currently selected variant via the getSelectedVariant data action, and\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API.\n */\nexport const getProductAvailabilitiesForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-availabilities-for-selected-variant',\n action: >getProductAvailabilitiesForSelectedVariantAction,\n input: createProductAvailabilitiesForSelectedVariantInput\n});\n\nexport default getProductAvailabilitiesForSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ProductDimensionAvailabilitySearchCriteria, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport { ArrayExtensions, getSelectedProductIdFromActionInput } from './utilities';\nimport { createInventoryAvailabilitySearchCriteria } from './utilities/product-inventory-utils';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Product dimension with availability Input.\n */\nexport class ProductDimensionsWithAvailabilitiesInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId?: number;\n\n public constructor(productId: number, channelId: number, requestContext?: IRequestContext) {\n this.productId = productId;\n this.channelId = channelId;\n\n if (requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n /**\n * Cache key.\n * @returns String.\n */\n public getCacheKey: () => string = () => 'ProductDimensionsWithAvailabilities';\n\n /**\n * Cache object type.\n * @returns String.\n */\n public getCacheObjectType: () => string = () => 'ProductDimensionsWithAvailabilities';\n\n /**\n * Cache type.\n * @returns String.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create input method for the get-product-dimension-with-availability data action.\n * @param inputData - The input data passed to the createInput method.\n * @returns - The input for the data action.\n */\nexport const createProductDimensionsWithAvailabilitiesInput = (\n inputData: ICreateActionContext>\n): ProductDimensionsWithAvailabilitiesInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new ProductDimensionsWithAvailabilitiesInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n inputData.requestContext\n );\n }\n throw new Error('Unable to create ProductDimensionsWithAvailabilitiesInput, no productId found on module config or query');\n};\n\n/**\n * Action method for the getProductDimensionsWithAvailabilities Data Action.\n * @param input - Input for the data action.\n * @param context - Action context.\n * @returns Product dimensions with availabilities.\n */\nexport async function getProductDimensionsWithAvailabilitiesAction(\n input: ProductDimensionsWithAvailabilitiesInput,\n context: IActionContext\n): Promise {\n const activeProducts = ArrayExtensions.validValues(\n await ProductsDataActions.getByIdsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n input.channelId,\n [input.productId],\n null,\n input.catalogId ?? 0\n )\n );\n\n if (!ArrayExtensions.hasElements(activeProducts)) {\n return [];\n }\n\n const activeProduct = activeProducts[0];\n\n if (!ArrayExtensions.hasElements(activeProduct.Dimensions)) {\n return [];\n }\n\n const promises = activeProduct.Dimensions.map(dimension => {\n const shippingInventoryConfiguration = createInventoryAvailabilitySearchCriteria(context, [], true, undefined, undefined);\n const searchCriteria: ProductDimensionAvailabilitySearchCriteria = {\n RequestedDimensionTypeValue: dimension.DimensionTypeValue,\n MatchingDimensionValues: [],\n DefaultWarehouseOnly: shippingInventoryConfiguration.DefaultWarehouseOnly,\n FilterByChannelFulfillmentGroup: shippingInventoryConfiguration.FilterByChannelFulfillmentGroup,\n DeliveryModeTypeFilterValue: shippingInventoryConfiguration.DeliveryModeTypeFilterValue,\n CatalogId: input.catalogId\n };\n\n const dimensionValuesPromise = ProductsDataActions.getDimensionValuesWithEstimatedAvailabilitiesAsync(\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\n activeProduct.MasterProductId ? activeProduct.MasterProductId : activeProduct.RecordId,\n searchCriteria\n );\n const fullDimensionPromise = dimensionValuesPromise.then(dimensionValues => {\n const fullDimension: IProductDimensionsWithAvailabilitiesFull = {\n ...dimension,\n dimensionValuesWithInventory: dimensionValues\n };\n return fullDimension;\n });\n\n return fullDimensionPromise;\n });\n\n // eslint-disable-next-line no-return-await -- existing code\n return await Promise.all(promises);\n}\n\n/**\n * The GetProductDimensionsWithAvailabilitiesAction\n * Gets the available product dimensions for the product via the getDimensionValueswithEstimatedAvailibilities RetailServer API.\n */\nexport const getProductDimensionsWithAvailabilities = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-dimensions-with-availabilities',\n action: getProductDimensionsWithAvailabilitiesAction as IAction,\n input: createProductDimensionsWithAvailabilitiesInput\n});\n\nexport default getProductDimensionsWithAvailabilities;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * QuickOrderTemplateLine state information.\n */\nexport class QuickOrderTemplateLine {\n public productListLine: ProductListLine;\n\n public fullProduct?: FullProduct;\n\n public constructor(productListLine: ProductListLine, fullProduct?: FullProduct) {\n this.productListLine = productListLine;\n this.fullProduct = fullProduct;\n }\n}\n\n/**\n * Quick Order template line state.\n */\nexport interface IQuickOrderTemplateLinesState {\n lines: QuickOrderTemplateLine[];\n totalCount: number;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { ProductListsDataActions } from '@msdyn365-commerce/retail-proxy';\n\nimport getFullProducts, { FullProductInput } from './get-full-products';\nimport { ArrayExtensions } from './utilities';\nimport { IQuickOrderTemplateLinesState, QuickOrderTemplateLine } from './utilities/quick-order-template-line';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Input class for the GetProductListLines data action.\n *\n */\nexport class GetProductListLinesInput implements IActionInput {\n public productListId: string;\n\n public searchText: string;\n\n public constructor(productListId: string, searchText?: string) {\n this.productListId = productListId;\n this.searchText = searchText ?? '';\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => `GetProductListLines|${this.productListId}|${this.searchText}`;\n\n /**\n * Get Cachetype Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'GetProductListLines';\n\n /**\n * Get Cachetype.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetProductListLines method.\n * @param productListId - ProductList Id.\n * @param searchText - Search Text.\n * @returns - Input data for getproductlistlines.\n */\nexport const createGetProductListLinesInput = (productListId: string, searchText?: string): GetProductListLinesInput => {\n return new GetProductListLinesInput(productListId, searchText);\n};\n\n/**\n * The action method for the GetProductListLines data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - Product list lines.\n */\nexport async function getProductListLinesAction(\n input: GetProductListLinesInput,\n context: IActionContext\n): Promise {\n if (!context.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full product list lines. User is not authenticated.');\n }\n\n const quickOrderTemplateLinesState: IQuickOrderTemplateLinesState = {\n lines: [],\n totalCount: 0\n };\n\n const promise = ProductListsDataActions.getProductListLinesAsync(\n {\n callerContext: context\n },\n input.productListId,\n input.searchText\n );\n\n const productListLines = await promise;\n const productInputs: FullProductInput[] = [];\n\n if (ArrayExtensions.hasElements(productListLines)) {\n quickOrderTemplateLinesState.totalCount = promise.metadata.count ?? quickOrderTemplateLinesState.lines.length;\n productListLines.map(listLine => {\n if (listLine.ProductId) {\n quickOrderTemplateLinesState.lines.push(new QuickOrderTemplateLine(listLine));\n productInputs.push(\n new FullProductInput(\n listLine.ProductId,\n context.requestContext.apiSettings,\n getProductDetailsCriteriaFromActionInput(context),\n context.requestContext\n )\n );\n }\n return productInputs;\n });\n if (ArrayExtensions.hasElements(productInputs)) {\n const fullProductsInfo = await getFullProducts(productInputs, context)\n .then((products: FullProduct[]) => {\n return products;\n })\n .catch((error: Error) => {\n context.trace(error.message);\n context.telemetry.error('[getProductListLinesAction] Unable to retrieve product info.');\n });\n if (fullProductsInfo) {\n quickOrderTemplateLinesState.lines.map(line => {\n const fullProduct = fullProductsInfo.find(\n product => product.ProductDetails.RecordId === line.productListLine.ProductId\n );\n if (!fullProduct) {\n context.telemetry.error('[getProductListLinesAction] Unable to find product info for an product list line.');\n return null;\n }\n line.fullProduct = fullProduct;\n return null;\n });\n }\n return quickOrderTemplateLinesState;\n }\n context.trace(quickOrderTemplateLinesState.lines.length.toString());\n return quickOrderTemplateLinesState;\n }\n return quickOrderTemplateLinesState;\n}\n\n/**\n * The GetProductListLines Data Action\n * Returns order templates.\n */\nexport const getProductListLinesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-list-lines',\n action: getProductListLinesAction as IAction,\n input: createGetProductListLinesInput\n});\n\nexport default getProductListLinesActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport {\n ProductList,\n ProductListsDataActions,\n ProductListSearchCriteria,\n ProductListType,\n QueryResultSettings\n} from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for the GetProductList data action.\n */\nexport class GetProductListInput implements IActionInput {\n public readonly productListId: string;\n\n public readonly queryResultSettings?: QueryResultSettings;\n\n public constructor(productListId?: string, queryResultSettings?: QueryResultSettings) {\n this.productListId = productListId ? productListId : '';\n this.queryResultSettings = queryResultSettings;\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => 'ProductList';\n\n /**\n * Get Cachetype Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'ProductList';\n\n /**\n * Get Cachetype.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'none';\n\n /**\n * Set Cache output.\n * @returns - Flag for cache output.\n */\n public shouldCacheOutput = (): boolean => false;\n}\n\n/**\n * CreateInput method for the GetProductList method.\n * @param inputData - The input data passed to the createInput method.\n * @param productListId - The product list identifier.\n * @param queryResultSettings - The query result setting required for pagination/ordering.\n * @returns - Product List input.\n */\nexport const createGetProductListInput = (\n inputData: ICreateActionContext,\n productListId?: string,\n queryResultSettings?: QueryResultSettings\n): GetProductListInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get product list. User is not authenticated.');\n }\n\n return new GetProductListInput(productListId ? productListId : '', queryResultSettings);\n};\n\n/**\n * The action method for the GetProductList data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - ProductList array.\n */\nexport async function getProductListAction(input: GetProductListInput, context: IActionContext): Promise {\n const productListType = ProductListType.QuickOrder.toString();\n const productListSearchCriteria: ProductListSearchCriteria = {\n ProductListType: productListType\n };\n const productLists = await ProductListsDataActions.searchAsync(\n {\n callerContext: context,\n queryResultSettings: input.queryResultSettings\n },\n productListSearchCriteria\n ).then(result => {\n return result;\n });\n\n return productLists;\n}\n\n/**\n * The GetProductList Data Action\n * Returns product list.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-list',\n action: getProductListAction as IAction,\n input: createGetProductListInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport getProducts, { ProductInput } from './get-simple-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Product by category ID Input action.\n */\nexport class ProductsByCategoryInput implements IActionInput {\n public categoryId?: number;\n\n public categorySlug?: string;\n\n public categoryName?: string;\n\n public catalogId: number;\n\n public currentCategory: CurrentCategoryInput;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(category: CurrentCategoryInput, apiSettings: ICommerceApiSettings, queryResultSettingsProxy: QueryResultSettingsProxy) {\n this.apiSettings = apiSettings;\n this.currentCategory = category;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = apiSettings.catalogId;\n this.categoryId = category.categoryId;\n this.categorySlug = category.categorySlug;\n }\n\n public getCacheKey = () =>\n buildCacheKey(\n `${this.categoryId || this.categorySlug}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`,\n this.apiSettings\n );\n\n public getCacheObjectType = () => 'Products-From-Search';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * CreateInput method for the getProductsByCategory data aciton.\n * @param inputData\n */\nexport const createGetProductsByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new ProductsByCategoryInput(currentCategory, inputData.requestContext.apiSettings, queryResultSettingsProxy);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Action method for the getProductsByCategory data action.\n * @param input\n * @param ctx\n */\nexport async function getProductsByCategoryAction(input: ProductsByCategoryInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getProductsByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n const productInputs = await searchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n +apiSettings.channelId,\n input.catalogId,\n categoryId || 0\n ).then(productSearchResults => {\n return productSearchResults.map(\n (product: ProductSearchResult): ProductInput => {\n return new ProductInput(product.RecordId, apiSettings, undefined, undefined, ctx.requestContext);\n }\n );\n });\n\n if (productInputs.length > 0) {\n // eslint-disable-next-line no-return-await -- existing code\n return await getProducts(productInputs, ctx);\n }\n return [];\n}\n\n/**\n * The getProductsByCategory data action\n * Retrieves the current category of the request via the getCurrentCategory data action\n * Then calls the searchByCategory RetailServer API to get a list of products associated with\n * the current category, and finally fully hydrates the data for those prodcuts via the\n * getProducts data action, returning a list of SimpleProducts within the current category.\n */\nexport const getProductsByCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-by-category',\n action: >getProductsByCategoryAction,\n input: createGetProductsByCategoryInput\n});\n\nexport default getProductsByCategoryActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { Cart, CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { createGetFeatureStateInput, getCustomer, GetCustomerInput, getFeatureState, getSimpleProducts, ProductInput } from '.';\nimport { ArrayExtensions } from './utilities';\n\n/**\n * Input class for activeCartWithProducts data action.\n */\nexport class ActiveCartProductsInput implements IActionInput {\n public getCacheKey = () => 'ActiveCartProducts';\n\n public getCacheObjectType = () => 'ActiveCartProducts';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveCartProductsAction(input: ActiveCartProductsInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveCartWithProducts]No valid Input was provided, failing');\n }\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n\n const isQuantityLimitsFeatureIsOn: boolean = await isOrderQuantityLimitsFeatureEnabled(ctx);\n\n if (isQuantityLimitsFeatureIsOn) {\n return getActiveCartProductsActionWhenQuantityLimitsFeatureIsOn(cart, ctx);\n }\n\n // If there are cart lines, make call to get products\n if (!cartState.hasInvoiceLine && cart && cart.CartLines && cart.CartLines.length > 0) {\n ctx.trace('Getting cart product information...');\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(\n cartLine.ProductId,\n ctx.requestContext.apiSettings,\n undefined,\n undefined,\n ctx.requestContext,\n cartLine.CatalogId\n );\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then((products: SimpleProduct[]) => {\n if (products) {\n return products;\n }\n return [];\n })\n .catch((error: Error) => {\n ctx.trace(error.toString());\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[getActiveCartWithProducts]Unable to hydrate cart with product information');\n throw new Error('[getActiveCartWithProducts]Unable to hydrate cart with product information');\n });\n }\n\n ctx.trace('[getActiveCartWithProducts]No Products Found in cart');\n return [];\n}\n\nexport const getActiveCartProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-in-active-cart',\n action: >getActiveCartProductsAction,\n input: createInput\n});\nexport default getActiveCartProductsActionDataAction;\n\nasync function getActiveCartProductsActionWhenQuantityLimitsFeatureIsOn(cart: Cart, ctx: IActionContext): Promise {\n const productIdsByWarehouseId: Map = new Map();\n let resultProducts: SimpleProduct[] = [];\n cart.CartLines?.forEach(cartLine =>\n productIdsByWarehouseId.has(cartLine.WarehouseId!)\n ? productIdsByWarehouseId.get(cartLine.WarehouseId!)?.push(cartLine)\n : productIdsByWarehouseId.set(cartLine.WarehouseId!, [cartLine])\n );\n return Promise.all(\n [...productIdsByWarehouseId].map(([entryWarehouseId, entryProductIds]) => {\n return getSimpleProducts(\n entryProductIds\n .map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(\n cartLine.ProductId,\n ctx.requestContext.apiSettings,\n undefined,\n entryWarehouseId,\n ctx.requestContext,\n cartLine.CatalogId\n );\n }\n return undefined;\n })\n .filter(Boolean),\n ctx\n ).then((products: SimpleProduct[]) => {\n if (products) {\n resultProducts = products.reduce((accum, product) => {\n if (product) {\n accum.push(product);\n }\n return accum;\n }, resultProducts);\n }\n });\n })\n ).then(() => resultProducts);\n}\n\nasync function isOrderQuantityLimitsFeatureEnabled(ctx: IActionContext): Promise {\n const defaultOrderQuantityLimitsFeatureConfig = ctx.requestContext.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return Promise.resolve(false);\n }\n\n const featureStates = await getFeatureState(createGetFeatureStateInput(ctx), ctx);\n let isQuantityLimitsFeatureEnabledInHq = false;\n if (ArrayExtensions.hasElements(featureStates)) {\n isQuantityLimitsFeatureEnabledInHq =\n featureStates.find(\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n }\n\n if (!isQuantityLimitsFeatureEnabledInHq) {\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return Promise.resolve(true);\n }\n\n return getCustomer(new GetCustomerInput(ctx.requestContext.apiSettings), ctx)\n .then(customerInfo => {\n return (\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\n );\n })\n .catch((error: Error) => {\n ctx.telemetry.warning(error.message);\n ctx.telemetry.debug('Unable to get customer info');\n return false;\n });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { getAvailablePromotionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n\nimport { ActiveCartProductsInput, buildCacheKey, getActiveCartProductsAction } from '.';\n\n/**\n * Input class for promotion options for items in cart.\n */\nexport class PromotionOptionsForCartLineItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCartLineItemsPromotionOptions', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCartLineItemsPromotionOptions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new PromotionOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the promotion options for items in the cart.\n * @param input\n * @param ctx\n */\nexport async function getPromotionOptionsForCartLineItems(\n input: PromotionOptionsForCartLineItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getPromotionOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n if (cartState.hasInvoiceLine) {\n ctx.trace('[getPromotionOptionsForCartLineItems] cart has invoice line');\n return [];\n }\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if (!cart || !cart.CartLines || !products || products.length === 0) {\n ctx.trace('[getPromotionOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n const cartLineIds = cart.CartLines.map(c => c.LineId || '');\n\n return getAvailablePromotionsAsync({ callerContext: ctx, queryResultSettings: {}, bypassCache: 'get' }, cart.Id, cartLineIds || null)\n .then(result => {\n return result;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPromotionOptionsForCartLineItems]Error executing action');\n throw new Error('[getPromotionOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport const getPromotionOptionsForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-promotion-options-for-cartlines',\n action: >getPromotionOptionsForCartLineItems,\n input: createInput\n});\n\nexport default getPromotionOptionsForCartLineItemsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * ReviewsGetRatingsSummary Input Action.\n */\nexport class GetRatingsSummaryInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The ratings and reviews service endpoint.\n */\n public serviceEndpoint: string;\n\n constructor(productId: string, tenantId: string, serviceEndpoint: string) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n // RnR does not use RS endpoint, so shouldn't use buildCacheKey\n public getCacheKey = () => `${this.productId}-${this.tenantId}`;\n\n public getCacheObjectType = () => 'RatingsSummary';\n\n public dataCacheType = (): CacheType => 'application';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n sendRequest\n} from '@msdyn365-commerce/core';\n\nimport { GetRatingsSummaryInput, getSelectedProductIdFromActionInput } from '.';\nimport { getRnrEndpointId, getRnrPartnerId } from './utilities/getRnrKeys';\n\nexport const createInput = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n return new GetRatingsSummaryInput(productId, getRnrPartnerId(input), getRnrEndpointId(input));\n }\n throw new Error('[GetRatingsSummary] Not all necessary parameters found while creating Input for getRatingsSummaryApi');\n};\n\n/**\n * This function gets the ratings summary.\n * @param input\n * @param ctx\n */\nexport async function getRatingsSummary(input: GetRatingsSummaryInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n ctx.trace('[GetRatingsSummary] Failed to get ratings summary for product');\n return {};\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/ratings/product/${input.productId}/summary?` + `tenantId=${input.tenantId}`;\n return sendRequest(requestUrl, 'get')\n .then(response => {\n return response.data;\n })\n .catch(error => {\n ctx.trace('[GetRatingsSummary] Failed to get ratings summary for product');\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetRatingsSummaryInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0;\n}\n\nexport const getRatingsSummaryDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-ratings-summary',\n action: >getRatingsSummary,\n input: createInput\n});\n\nexport default getRatingsSummaryDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\nimport { getRefinersByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Action Input class for the getRefinersByCategory data action.\n */\nexport class RefinersByCategoryInput implements IActionInput {\n public readonly catalogId: number;\n\n public readonly currentCategory: CurrentCategoryInput;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(category: CurrentCategoryInput, queryResultSettingsProxy: QueryResultSettingsProxy, catalogId?: number) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.currentCategory = category;\n }\n\n public getCacheKey = () => `${this.currentCategory.getCacheKey()}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`;\n\n public getCacheObjectType = () => 'ProductRefiner';\n\n public shouldCacheOutput = () => true;\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createRefinersByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const catalogId = getCatalogId(inputData.requestContext);\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n\n return new RefinersByCategoryInput(currentCategory, QueryResultSettingsProxy.fromInputData(inputData), catalogId);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Calls the Retail API and returns all refiners by category.\n * @param input\n * @param ctx\n */\nexport async function getRefinersByCategoryAction(input: RefinersByCategoryInput, ctx: IActionContext): Promise {\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getRefinersByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n return getRefinersByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n categoryId || 0\n );\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-category',\n action: >getRefinersByCategoryAction,\n input: createRefinersByCategoryInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\nimport { getRefinersByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the getRefinersByText data action.\n */\nexport class RefinersByTextInput implements IActionInput {\n public readonly catalogId: number;\n\n public readonly searchText: string;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(\n searchText: string,\n catalogId: number,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings\n ) {\n this.catalogId = catalogId;\n this.searchText = searchText;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () =>\n buildCacheKey(`${this.searchText}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n\n public getCacheObjectType = () => 'ProductRefiner';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createRefinersByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n\n return new RefinersByTextInput(\n searchInputData.q,\n Number.isNaN(catalogId) ? 0 : catalogId,\n QueryResultSettingsProxy.fromInputData(inputData),\n inputData.requestContext.apiSettings\n );\n};\n\n/**\n * Calls the Retail API and returns all refiners by text.\n * @param input\n * @param ctx\n */\nexport async function getRefinersByTextAction(input: RefinersByTextInput, ctx: IActionContext): Promise {\n return getRefinersByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n input.searchText\n );\n}\n\nexport const getRefinersByTextActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-text',\n action: >getRefinersByTextAction,\n input: createRefinersByTextInput\n});\n\nexport default getRefinersByTextActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getRelatedProductsAsync, getRelationTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductRelationType, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * GetRelatedProducts Input Action.\n */\nexport class GetRelatedProductsInput implements IActionInput {\n public readonly productId: number;\n\n public readonly catalogId: number;\n\n public readonly relationType: string;\n\n public ProductDetailsCriteria: ProductDetailsCriteria;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n public constructor(\n productId: number,\n catalogId: number,\n relationType: string,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n criteria: ProductDetailsCriteria\n ) {\n this.productId = productId;\n this.catalogId = catalogId;\n this.relationType = relationType;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () =>\n `${this.productId}|${this.catalogId}|${this.relationType.toLowerCase()}|${this.queryResultSettingsProxy.cacheKeyHint}|${\n this.ProductDetailsCriteria.getPrice\n }`;\n\n public getCacheObjectType = () => 'GetRelatedProducts';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make GetRelatedProducts retail api call.\n * @param inputData\n */\nexport const createGetRelatedProductsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext && inputData.config) {\n const catalogId = getCatalogId(inputData.requestContext);\n const relationType = inputData.config.relationType;\n\n let productId = inputData.requestContext.urlTokens ? Number(inputData.requestContext.urlTokens.recordId) : 0;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (!relationType) {\n throw new Error('Input relation type is invalid.');\n }\n\n // Query string may override the product id from url\n if (inputData.requestContext.query && inputData.requestContext.query.productId) {\n productId = Number(inputData.requestContext.query.productId);\n }\n\n if (Number.isNaN(productId) || productId <= 0) {\n throw new Error('No valid product id available in url or query string.');\n }\n\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new GetRelatedProductsInput(productId, catalogId, relationType, queryResultSettingsProxy, productDetailsCriteria);\n }\n\n throw new Error('Invalid input data or request context');\n};\n\nexport function searchProductRelationType(productRelationTypes: ProductRelationType[], _productRelationType: string): number | undefined {\n let foundProductRelationTypeId;\n _productRelationType = _productRelationType.toLowerCase();\n productRelationTypes.forEach((productRelationType: ProductRelationType) => {\n if (productRelationType.Name && productRelationType.Name.toLowerCase() === _productRelationType) {\n return (foundProductRelationTypeId = productRelationType.RecordId);\n }\n });\n\n return foundProductRelationTypeId;\n}\n\nasync function getRelatedProductsAction(input: GetRelatedProductsInput, ctx: IActionContext): Promise {\n const apiSettings = ctx.requestContext.apiSettings;\n const querySettings = input.queryResultSettingsProxy.QueryResultSettings;\n\n const productRelationTypes = await getRelationTypesAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId\n );\n if (!productRelationTypes) {\n ctx.trace(`[getProductRelationType] Unable to get product relation types for product ${input.productId}`);\n return [];\n }\n const productRelationTypeId = searchProductRelationType(productRelationTypes, input.relationType);\n if (!productRelationTypeId) {\n ctx.trace(`[getRelatedProducts] Unable to find relation type ${input.relationType} for product ${input.productId}`);\n return [];\n }\n\n const productInputs = await getRelatedProductsAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId,\n productRelationTypeId\n )\n .then(response => {\n if (response && response.length > 0) {\n return response.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria, ctx.requestContext);\n }\n );\n }\n\n ctx.trace('[getRelatedProductsAction] Invalid response from server');\n return [];\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.trace(error.stack || '');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getRelatedProductsAction] Unable to Fetch Products.');\n ctx.trace('[getRelatedProductsAction] Unable to Fetch Products.');\n return [];\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx);\n }\n return [];\n}\n\n/**\n * The getRelatedProducts data action\n * Uses a productId URL Token and finds the relation types for said product\n * using the getRelationTypes RetailServer API, and then finds and retusn all products that\n * share that relation type via the getRelatedProducts RetailServer API.\n */\nexport const getRelatedProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-related-products',\n action: >getRelatedProductsAction,\n input: createGetRelatedProductsInput\n});\n\nexport default getRelatedProductsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ScanResultsDataActions.g';\nimport { ProductDimension } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getDimensionsForSelectedVariant, GetDimensionsForSelectedVariantInput } from '.';\nimport { IScanResultWithProduct } from './utilities/scan-result-with-product';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class to get product from sku number.\n */\nexport class GetScanResultInput implements IActionInput {\n public skuNumber: string;\n\n public channelId: number;\n\n public matchingDimensionValues: ProductDimension[];\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, sku: string, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.skuNumber = sku;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`Product-${this.skuNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'ProductSKU';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n * @param skuuNumber SkuNumber to send ScanResult API.\n * @param skuNumber\n * @param channelId ChannelId required to get dimension for given product.\n * @param matchingDimensionValues\n */\nconst createInput = (\n inputData: ICreateActionContext,\n skuNumber: string,\n channelId: number,\n matchingDimensionValues?: ProductDimension[]\n) => {\n return new GetScanResultInput(inputData.requestContext.apiSettings, skuNumber, channelId, matchingDimensionValues);\n};\n\n/**\n * Action method for the product and dimension from scan result and dimension api.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getScanResult(input: GetScanResultInput, ctx: IActionContext): Promise {\n return readAsync({ callerContext: ctx }, input.skuNumber)\n .then(scanResults => {\n if (scanResults && scanResults.Product) {\n return getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n scanResults.Product.MasterProductId ? scanResults.Product.MasterProductId : scanResults.Product.RecordId,\n input.channelId,\n input.matchingDimensionValues,\n ctx.requestContext\n ),\n ctx\n )\n .then(response => {\n if (response && response.length > 0) {\n return { ScanResult: scanResults, Product: scanResults.Product, ProductDimensionFull: response };\n }\n return { ScanResult: scanResults, Product: scanResults.Product };\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getScanResult, getDimensionsForSelectedVariant]Error executing action');\n throw new Error('[getScanResult, getDimensionsForSelectedVariant]Error executing action');\n });\n }\n\n throw new Error('Unable to get result from scan result data action.');\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getScanResult]Error executing action');\n throw new Error('[getScanResult]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-scan-results',\n action: >getScanResult,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\n\n// TODO: import from commerce entities when available\n// eslint-disable-next-line @typescript-eslint/naming-convention\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n/**\n * Action Input class for the getSearchConfiguration data action.\n */\nexport class SearchConfigurationInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('SearchConfig', this.apiSettings);\n\n public getCacheObjectType = () => 'SearchConfiguration';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createSearchConfigurationInput = (inputData: ICreateActionContext>): IActionInput => {\n return new SearchConfigurationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API.\n * @param input\n * @param ctx\n */\nexport async function getSearchConfigurationAction(input: SearchConfigurationInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx });\n}\n\nexport const getSearchConfigurationActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-search-configurations',\n action: >getSearchConfigurationAction,\n input: createSearchConfigurationInput\n});\n\nexport default getSearchConfigurationActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport {\n BypassCache,\n ProductDimension,\n ProductDimensionAvailabilitySearchCriteria,\n ProductsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ArrayExtensions } from './utilities';\nimport { createInventoryAvailabilitySearchCriteria } from './utilities/product-inventory-utils';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { generateProductImageUrl, getDimensionValuesFromQuery, getSelectedProductIdFromActionInput } from './utilities/utils';\n\n/**\n * Stores data about the selected product.\n */\nexport interface ISelectedProduct extends SimpleProduct {\n productVariant?: SimpleProduct;\n}\n\n/**\n * Get selected variant action input class.\n */\nexport class SelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public matchingDimensionValues?: ProductDimension[];\n\n public bypassCache?: BypassCache;\n\n public catalogId?: number;\n\n public constructor(\n productId: number,\n channelId: number,\n matchingDimensionValues?: ProductDimension[],\n bypassCache?: BypassCache,\n requestContext?: IRequestContext\n ) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues;\n this.bypassCache = bypassCache;\n\n if (requestContext) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n /**\n * Cache key.\n * @returns String.\n */\n public getCacheKey: () => string = () => 'SelectedVariant';\n\n /**\n * Cache object type.\n * @returns String.\n */\n public getCacheObjectType: () => string = () => 'SimpleProduct';\n\n /**\n * Cache type.\n * @returns String.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData - The input data passed to the createInput method.\n * @returns The input for the ata action getSelectedVariantNewAction.\n */\nconst createInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new SelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined,\n undefined,\n inputData.requestContext\n );\n }\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * Checks if given product has any unmatched dimensions.\n * Modifies product entity to use matched dimension values.\n * @param product - The product to analyze and modify.\n * @param matchingDimensionValues - Matched dimensions.\n * @returns True if has any unmatched dimension, false if all dimensions are specified.\n */\nconst checkIfHasUnmatchedDimensions = (product: SimpleProduct, matchingDimensionValues: ProductDimension[]): boolean => {\n let hasUnmatchedDimension: boolean = false;\n if (product.Dimensions) {\n product.Dimensions = product.Dimensions.map(dimension => {\n return { ...dimension };\n });\n for (const dimension of product.Dimensions) {\n const matchedTargetDimension = matchingDimensionValues.find(\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\n );\n\n if (matchedTargetDimension) {\n dimension.DimensionValue = matchedTargetDimension.DimensionValue;\n } else {\n hasUnmatchedDimension = true;\n }\n }\n }\n return hasUnmatchedDimension;\n};\n\n/**\n * Retrieves product dimensions with availabilities.\n * @param product - Product for which the dimensions need to be retrieved.\n * @param matchingDimensionValues - Selected dimensions - filter criteria for the dimensions API.\n * @param context - Action context.\n * @param catalogId - Catalog id.\n * @returns Array of dimensions.\n */\nconst getFullDimensions = async (\n product: SimpleProduct,\n matchingDimensionValues: ProductDimension[],\n context: IActionContext,\n catalogId?: number\n) => {\n let fullDimensions: IProductDimensionsWithAvailabilitiesFull[] = [];\n const fullDimensionPromises = (product.Dimensions ?? []).map(dimension => {\n const shippingInventoryConfiguration = createInventoryAvailabilitySearchCriteria(context, [], true, undefined, undefined);\n const searchCriteria: ProductDimensionAvailabilitySearchCriteria = {\n RequestedDimensionTypeValue: dimension.DimensionTypeValue,\n MatchingDimensionValues: matchingDimensionValues,\n DefaultWarehouseOnly: shippingInventoryConfiguration.DefaultWarehouseOnly,\n FilterByChannelFulfillmentGroup: shippingInventoryConfiguration.FilterByChannelFulfillmentGroup,\n DeliveryModeTypeFilterValue: shippingInventoryConfiguration.DeliveryModeTypeFilterValue,\n CatalogId: catalogId\n };\n const dimensionValuesPromise = ProductsDataActions.getDimensionValuesWithEstimatedAvailabilitiesAsync(\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n searchCriteria\n );\n\n return dimensionValuesPromise.then(dimensionValues => {\n const fullDimension: IProductDimensionsWithAvailabilitiesFull = {\n ...dimension,\n dimensionValuesWithInventory: dimensionValues\n };\n return fullDimension;\n });\n });\n fullDimensions = await Promise.all(fullDimensionPromises);\n return fullDimensions;\n};\n\n/**\n * Retrieves product variant for the given input or undefined if not found.\n * @param input - Action input.\n * @param context - Action context.\n * @param fullDimensions - Product dimensions with availabilities.\n * @returns A product variant that is available or undefined.\n */\nconst getProductVariant = async (\n input: SelectedVariantInput,\n context: IActionContext,\n fullDimensions: IProductDimensionsWithAvailabilitiesFull[]\n) => {\n let productVariant: SimpleProduct | undefined;\n if (\n ArrayExtensions.hasElements(fullDimensions) &&\n ArrayExtensions.hasElements(fullDimensions[0].dimensionValuesWithInventory) &&\n ArrayExtensions.hasElements(fullDimensions[0].dimensionValuesWithInventory[0].ProductIds)\n ) {\n const variantProductId = fullDimensions[0].dimensionValuesWithInventory[0].ProductIds[0];\n const result = await ProductsDataActions.getByIdsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context),\n bypassCache: input.bypassCache\n },\n input.channelId,\n [variantProductId],\n null,\n input.catalogId ?? 0\n );\n productVariant = result[0];\n productVariant = { ...productVariant };\n const variantImageUrl = generateProductImageUrl(productVariant, context.requestContext.apiSettings);\n\n if (variantImageUrl) {\n productVariant.PrimaryImageUrl = variantImageUrl;\n }\n }\n\n return productVariant;\n};\n\n/**\n * Action method for the getSelectedVariant data action.\n * @param input - The action input class.\n * @param context - The action context.\n * @returns Simple product.\n */\nasync function getSelectedVariantAction(input: SelectedVariantInput, context: IActionContext): Promise {\n const matchingDimensionValues = input.matchingDimensionValues ?? getDimensionValuesFromQuery(context.requestContext.url.requestUrl);\n\n const result = await ProductsDataActions.getByIdsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context),\n bypassCache: input.bypassCache\n },\n input.channelId,\n [input.productId],\n null,\n input.catalogId ?? 0\n );\n let product = result[0];\n\n // Need to dereference this before editing it. Otherwise we might not\n // properly get the mobx events because if things aren't properly observable\n // they won't fire when you set them, and then if you don't deref the value in\n // the cache will match the value when you try to save it, so it won't detect any\n // changes there either\n product = { ...product };\n const hasUnmatchedDimension = checkIfHasUnmatchedDimensions(product, matchingDimensionValues);\n\n const newImageUrl = generateProductImageUrl(product, context.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n\n const fullDimensions: IProductDimensionsWithAvailabilitiesFull[] = await getFullDimensions(\n product,\n matchingDimensionValues,\n context,\n input.catalogId\n );\n\n // Retrieve product variants only if matching dimensions are provided.\n const productVariant: SimpleProduct | undefined = ArrayExtensions.hasElements(matchingDimensionValues)\n ? await getProductVariant(input, context, fullDimensions)\n : undefined;\n\n // Update dimension value back to the one that comes from API since the URL query might have a different format for the dimension values.\n if (productVariant?.Dimensions && product.Dimensions) {\n for (const dimension of product.Dimensions) {\n const matchedTargetDimensionFromApi = productVariant.Dimensions.find(\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\n );\n const matchedTargetDimensionFromSearch = matchingDimensionValues.find(\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\n );\n\n if (matchedTargetDimensionFromSearch && matchedTargetDimensionFromApi) {\n dimension.DimensionValue = matchedTargetDimensionFromApi.DimensionValue;\n }\n }\n }\n\n if (!hasUnmatchedDimension && ArrayExtensions.hasElements(matchingDimensionValues) && productVariant) {\n return productVariant;\n }\n\n const selectedProduct: ISelectedProduct = product;\n selectedProduct.productVariant = productVariant;\n return selectedProduct;\n}\n\n/**\n * The complete getSelectedVariant data action.\n */\nexport const getSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-selected-variant',\n action: getSelectedVariantAction as IAction,\n input: createInput\n});\n\nexport default getSelectedVariantActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IDictionary,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { ArrayExtensions } from './utilities';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey, generateProductImageUrl } from './utilities/utils';\n\n/**\n * Product Input.\n */\nexport class ProductInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public warehouseId?: string;\n\n public catalogId?: number;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n public constructor(\n productId: number | string,\n apiSettings: ICommerceApiSettings,\n channelId?: number,\n warehouseId?: string,\n requestContext?: IRequestContext,\n catalogId?: number\n ) {\n this.apiSettings = apiSettings;\n this.productId = +productId;\n this.channelId = channelId || apiSettings.channelId;\n this.warehouseId = warehouseId;\n this.catalogId = catalogId;\n\n if (requestContext && catalogId === undefined) {\n this.catalogId = getCatalogId(requestContext);\n }\n }\n\n public getCacheKey = () =>\n buildCacheKey(\n `RecordId-${this.productId.toString()}-ChannelId-${this.channelId.toString()}-WahehouseId-${this.warehouseId ?? ''}-${this\n .catalogId ?? 0}`,\n this.apiSettings\n );\n\n public getCacheObjectType = () => 'SimpleProduct';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createSimpleProductsInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n if (!productIds) {\n return [];\n }\n\n productIds = typeof productIds === 'string' ? productIds.split(',') : productIds;\n return !Array.isArray(productIds)\n ? []\n : productIds.map((productId: string) => {\n return new ProductInput(productId, inputData.requestContext.apiSettings, undefined, undefined, inputData.requestContext);\n });\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput.\n * @param inputs\n * @param ctx\n */\nexport async function getSimpleProductsAction(inputs: ProductInput[], ctx: IActionContext): Promise {\n if (!ArrayExtensions.hasElements(inputs)) {\n ctx.trace('[getSimpleProductsAction] Invalid or empty inputs passed.');\n return [];\n }\n\n const productIdMapping: IDictionary = {};\n\n for (let index = 0; index < inputs.length; ++index) {\n productIdMapping[inputs[index].productId] = index;\n }\n\n const getProductPromises: Promise[] = [];\n const catalogIds = ArrayExtensions.unique(inputs.map(input => input.catalogId));\n for (const catalogId of catalogIds) {\n const productInputs = inputs.filter(input => input.catalogId === catalogId);\n getProductPromises.push(\n getByIdsAsync(\n { callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx) },\n inputs[0].channelId,\n productInputs.map(input => input.productId),\n inputs[0].warehouseId ?? null,\n catalogId ?? 0\n )\n );\n }\n\n const products = ArrayExtensions.flatten(await Promise.all(getProductPromises));\n const mappedProducts = products\n .map(product => {\n try {\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n\n return product;\n } catch {\n ctx.trace('[getSimpleProductsAction] Unable to update ImageURL for Product');\n return undefined;\n }\n })\n .reduce((memo: SimpleProduct[], product: SimpleProduct | undefined) => {\n if (!product) {\n return memo;\n }\n const index = productIdMapping[product.RecordId];\n memo[index] = product;\n return memo;\n }, []);\n\n // NOTE: This is not an ideal fix, but will resolve all current issues\n return inputs.map(input => {\n const foundProduct = mappedProducts.find(product => product && product.RecordId === input.productId);\n return foundProduct || {};\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-simple-products',\n action: >getSimpleProductsAction,\n input: createSimpleProductsInput,\n isBatched: true\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n ChannelDeliveryOption,\n FeatureState,\n OrgUnitAvailability,\n OrgUnitLocation,\n SearchArea,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n getChannelDeliveryOptionsAsync,\n getOrgUnitLocationsByAreaAsync,\n getStoreHoursAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\nimport { FeatureStateInput, getFeatureStateActionDataAction } from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Get selected variant action input class.\n */\nexport class GetOrgUnitLocationsByAreaInput implements IActionInput {\n public Latitude?: number;\n\n public Longitude?: number;\n\n public Radius?: number;\n\n public DistanceUnitValue?: number;\n\n public IgnoreLocation?: boolean;\n\n constructor(_Latitude?: number, _Longitude?: number, _Radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.Latitude = _Latitude;\n this.Longitude = _Longitude;\n this.Radius = _Radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => 'GetOrgUnitLocationsByAreaInput';\n\n public getCacheObjectType = () => 'GetOrgUnitLocationsByAreaInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetOrgUnitLocationsByAreaInput = (inputData: ICreateActionContext>): GetOrgUnitLocationsByAreaInput => {\n return new GetOrgUnitLocationsByAreaInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateActionDataAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data action.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getOrgUnitLocationsByArea(\n input: GetOrgUnitLocationsByAreaInput,\n ctx: IActionContext\n): Promise {\n if ((input.Radius === undefined || !input.Latitude || !input.Longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.Latitude,\n Longitude: input.Longitude,\n Radius: input.Radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(\n item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n )?.IsEnabled;\n\n return getOrgUnitLocationsByAreaAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n searchArea\n )\n .then(async (stores: OrgUnitLocation[]) => {\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n\n // If mulitple pickup mode is enable then call getchanneldeliveryoption\n if (retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n const locationPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(\n _channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId\n );\n return _getLocationWithHours(store, locationDeliveryOption, ctx);\n });\n return Promise.all(locationPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetOrgUnitLocationsByArea] error getting Locations');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[GetOrgUnitLocationsByArea] error getting Locations');\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information.\n * @param orgUnitLocation The org unit location.\n * @param storeMap A map that contains store information group by the inventory location id.\n * @param channelDeleiveryOptions\n * @param ctx The action context.\n */\nasync function _getLocationWithHours(\n orgUnitLocation: OrgUnitLocation,\n channelDeleiveryOptions: ChannelDeliveryOption | undefined,\n ctx: IActionContext\n): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n }\n\n return { OrgUnitAvailability: availability, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting availability with hours');\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the store information.\n * @param channelCollection The org unit channel Id list.\n * @param ctx The action context.\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number | undefined)[],\n ctx: IActionContext\n): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if (id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // To get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n channelIdList,\n 4\n )\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(\n '[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options'\n );\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(\n '[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options'\n );\n return [];\n });\n}\n\n/**\n * The complete getOrgUnitLocationsByArea data action.\n */\nexport const getOrgUnitLocationsByAreaDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-store-location-information',\n action: >getOrgUnitLocationsByArea,\n input: createGetOrgUnitLocationsByAreaInput\n});\n\nexport default getOrgUnitLocationsByAreaDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetByCustomerInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { CommerceList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nconst createWishlistInput = (inputData: ICreateActionContext) => {\n if (inputData.requestContext && inputData.requestContext.user && inputData.requestContext.user.isAuthenticated) {\n return createGetByCustomerInput({}, null);\n }\n\n throw new Error('[get-wishlist-by-customer-id] Unable to create input for getWishlists');\n};\n\n/**\n * Get Org Unit Configuration Data Action.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-wishlist-by-customer-id',\n action: >retailAction,\n input: createWishlistInput\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { InvoiceDetailsSearchCriteria, SalesInvoice, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for get invoice details data action.\n */\nexport class GetInvoiceDetailsInput implements IActionInput {\n public invoiceId: string;\n\n constructor(invoiceId: string) {\n this.invoiceId = invoiceId;\n }\n\n public getCacheKey = () => `GetInvoiceDetails|${this.invoiceId}`;\n\n public getCacheObjectType = () => 'SalesInvoice';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const CreateGetInvoiceDetailsInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get invoice details as User is not logged in.');\n }\n if (!inputData?.requestContext?.query?.invoiceId) {\n throw new Error('Unable to get invoice details as no valid invoice id found.');\n }\n\n return new GetInvoiceDetailsInput(inputData.requestContext.query.invoiceId);\n};\n\nexport async function getInvoiceDetails(input: GetInvoiceDetailsInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get details for the invoice. User is not authenticated.');\n }\n\n if (!input.invoiceId) {\n throw new Error('Unable to get invoice details as no valid invoice id found.');\n }\n\n const invoiceId = input.invoiceId;\n\n const searchCriteria: InvoiceDetailsSearchCriteria = {\n InvoiceId: invoiceId\n };\n\n return SalesOrdersDataActions.getInvoiceDetailsAsync({ callerContext: context }, searchCriteria);\n}\n\nexport const getInvoiceDetailsDataAction = createObservableDataAction({\n id: 'get-invoice-details',\n action: >getInvoiceDetails,\n input: CreateGetInvoiceDetailsInput\n});\n\nexport default getInvoiceDetailsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport {\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n InvoiceType,\n OrderInvoice,\n SalesOrdersDataActions\n} from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for get invoice data action.\n */\nexport class GetInvoiceInput implements IActionInput {\n public invoiceId: string;\n\n constructor(invoiceId: string) {\n this.invoiceId = invoiceId;\n }\n\n public getCacheKey = () => `GetInvoice|${this.invoiceId}`;\n\n public getCacheObjectType = () => 'OrderInvoice';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const CreateGetInvoiceInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get invoice as User is not logged in.');\n }\n if (!inputData?.requestContext?.query?.invoiceId) {\n throw new Error('Unable to get invoice as no valid invoice id found.');\n }\n\n return new GetInvoiceInput(inputData.requestContext.query.invoiceId);\n};\n\nexport async function getInvoice(input: GetInvoiceInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get invoice. User is not authenticated.');\n }\n\n if (!input.invoiceId) {\n throw new Error('Unable to get invoice as no valid invoice id found.');\n }\n\n const invoiceId = input.invoiceId;\n\n const searchCriteria: InvoiceSearchCriteria = {\n InvoiceIds: [invoiceId],\n InvoiceTypeValues: [InvoiceType.SalesOrderInvoice],\n InvoicePaidStatusValues: [InvoicePaidStatus.None]\n };\n\n const invoices = await SalesOrdersDataActions.getInvoicesAsync({ callerContext: context }, searchCriteria);\n if (!invoices || invoices.length !== 1) {\n throw new Error('Unable to get invoice from the server.');\n }\n\n return invoices[0];\n}\n\nexport default createObservableDataAction({\n id: 'get-invoice',\n action: >getInvoice,\n input: CreateGetInvoiceInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport {\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n InvoiceType,\n IQueryResultSettings,\n OrderInvoice,\n SalesOrdersDataActions\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from '../get-customer';\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\n\nconst getDefaultSearchCriteria = (): InvoiceSearchCriteria => {\n return {\n InvoicePaidStatusValues: [InvoicePaidStatus.None]\n };\n};\n\n/**\n * Input class for get invoice data action.\n */\nexport class GetInvoicesInput implements IActionInput {\n public readonly searchCriteria: InvoiceSearchCriteria;\n\n public readonly queryResultSettings: IQueryResultSettings;\n\n constructor(searchCriteria: InvoiceSearchCriteria, queryResultSettings: IQueryResultSettings) {\n this.searchCriteria = searchCriteria;\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => 'BusinessPartnerInvoices';\n\n public getCacheObjectType = () => 'OrderInvoice';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const CreateGetInvoicesInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n\n return new GetInvoicesInput(getDefaultSearchCriteria(), queryResultSettings);\n};\n\nexport async function getInvoices(input: GetInvoicesInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get list of invoices. User is not authenticated.');\n }\n\n input.searchCriteria.InvoiceTypeValues = [InvoiceType.SalesOrderInvoice];\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n input.searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n input.searchCriteria.CustomerId = customer.AccountNumber;\n\n return SalesOrdersDataActions.getInvoicesAsync(\n { callerContext: context, queryResultSettings: input.queryResultSettings },\n input.searchCriteria\n );\n}\n\nexport const getInvoicesDataAction = createObservableDataAction({\n id: 'get-invoices',\n action: >getInvoices,\n input: CreateGetInvoicesInput\n});\n\nexport default getInvoicesDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { issueLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport { getLoyaltyAction, GetLoyaltyCardInput } from './get-loyalty-card';\n\n/**\n * Input class for the issueLoyalty data action.\n */\nexport class IssueLoyaltyInput implements IActionInput {\n public userAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`IssueLoyalty-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetIssueLoyalty';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the issueLoyalty method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createIssueLoyaltyInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create issue loyalty input. User is not authenticated.');\n }\n\n return new IssueLoyaltyInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the issueLoyalty data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function issueLoyaltyAction(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const promises: [Promise, Promise] = [getCartState(ctx), _getLoyalty(input, ctx)];\n return Promise.all(promises)\n .then(result => {\n const cartState = result[0];\n const card = result[1];\n if (card && card.CardNumber) {\n updateCart(cartState, card);\n return card;\n }\n\n // @ts-expect-error\n // TO-DO: Remove after SDK bug fix https://msdyneng.visualstudio.com/FinOps/_workitems/edit/473891\n return issueLoyaltyCardAsync({ callerContext: ctx }, { CustomerAccount: input.userAccountNumber || null })\n .then((issuedCard: LoyaltyCard) => {\n updateCart(cartState, issuedCard);\n return issuedCard;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Issuing loyalty card failed');\n throw new Error('Issuing loyalty card failed');\n });\n })\n .catch((error: Error) => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to issue loyalty card');\n throw new Error('Unable to issue loyalty card');\n });\n}\n\nasync function _getLoyalty(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyaltyAction(loyaltyCardInput, ctx);\n}\n\nfunction updateCart(cartState: ICartState, card: LoyaltyCard): void {\n cartState.updateLoyaltyCardId({ loyaltyCardNumber: card.CardNumber });\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer.\n */\nexport const issueLoyaltyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/issue-loyalty',\n action: >issueLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createIssueLoyaltyInput\n});\n\nexport default issueLoyaltyActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { addProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the AddItemToOrderTemplate data action.\n */\nexport class AddItemToOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n public readonly productId: number;\n\n public readonly quantity: number;\n\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'AddItemToOrderTemplateInput';\n\n public getCacheObjectType = () => 'AddItemToOrderTemplateInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the AddItemToOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n * @param unitOfMeasure\n */\nexport const addItemToOrderTemplateInput = (\n inputData: ICreateActionContext,\n orderTemplateId: string,\n productId: number,\n quantity: number,\n unitOfMeasure: string\n): AddItemToOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddItemToOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the AddItemToOrderTemplate data action.\n * @param {AddItemToOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function addItemToOrderTemplateAction(input: AddItemToOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const productListLineToAdd: ProductListLine = {\n ProductListId: input.orderTemplateId,\n ProductId: input.productId,\n Quantity: input.quantity,\n UnitOfMeasure: input.unitOfMeasure\n };\n\n const productListLine: ProductListLine[] = await addProductListLinesAsync(\n {\n callerContext: ctx\n },\n input.orderTemplateId,\n [productListLineToAdd]\n );\n\n if (productListLine && productListLine.length === 1 && productListLine[0] && productListLine[0].ProductListId) {\n return productListLine[0];\n }\n ctx.telemetry.error('Product list line was not returned when adding it to order template');\n throw new Error('Product list line was not returned when adding it to order template');\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The AddItemToOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport const addItemToOrderTemplateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-item-to-order-template',\n action: >addItemToOrderTemplateAction,\n input: addItemToOrderTemplateInput\n});\n\nexport default addItemToOrderTemplateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n\nimport { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines';\n\n/**\n * Input class for the AddOrderTemplateToCart data action.\n */\nexport class AddOrderTemplateToCartInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n constructor(orderTemplateId: string) {\n this.orderTemplateId = orderTemplateId;\n }\n\n public getCacheKey = () => 'AddOrderTemplateToCartInput';\n\n public getCacheObjectType = () => 'AddOrderTemplateToCartInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the AddOrderTemplateToCart method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of template.\n */\nexport const addOrderTemplateToCartInput = (inputData: ICreateActionContext, orderTemplateId: string): AddOrderTemplateToCartInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddOrderTemplateToCartInput(orderTemplateId);\n};\n\n/**\n * The action method for the AddOrderTemplateToCart data action.\n * @param {AddOrderTemplateToCartInput} input The action input.\n * @param {IActionContext} ctx The action context.\n * @param context\n */\nexport async function addOrderTemplateToCartAction(input: AddOrderTemplateToCartInput, context: IActionContext): Promise {\n const cartState = await getCartState(context);\n const chunkCount = 1000;\n const queryResultSettings: QueryResultSettings = {\n Paging: {\n Top: chunkCount,\n Skip: 0\n }\n };\n const getPaginatedOrderTemplateLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, queryResultSettings);\n let orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n let addedCartLines: CartLine[] = [];\n for (let skip = chunkCount; orderTemplateLines.lines.length > 0; skip += chunkCount) {\n const cartLines: CartLine[] = orderTemplateLines.lines.map(productLine => {\n const cartLine: CartLine = {\n ItemId: productLine.fullProduct?.ProductDetails.ItemId,\n ProductId: productLine.productListLine.ProductId,\n Quantity: productLine.productListLine.Quantity,\n TrackingId: '',\n UnitOfMeasureSymbol: productLine.productListLine.UnitOfMeasure\n };\n return cartLine;\n });\n await addCartLinesAsync({ callerContext: context }, cartState.cart.Id, cartLines, cartState.cart.Version).catch(error => {\n context.telemetry.trace(error.data?.ValidationResults);\n context.telemetry.trace('Unable to add order template to cart.');\n throw error.data?.ValidationResults;\n });\n addedCartLines = addedCartLines.concat(cartLines);\n getPaginatedOrderTemplateLinesInput.queryResultSettings.Paging!.Skip = skip;\n orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n }\n await cartState.refreshCart({});\n return addedCartLines;\n}\n\n/**\n * The AddOrderTemplateToCart Data Action.\n * Returns created order template.\n */\nexport const addOrderTemplateToCartActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-order-template-to-cart',\n action: >addOrderTemplateToCartAction,\n input: addOrderTemplateToCartInput\n});\nexport default addOrderTemplateToCartActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductList, ProductListType } from '@msdyn365-commerce/retail-proxy';\nimport { createProductListAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\n\n/**\n * Input class for the CreateOrderTemplate data action.\n */\nexport class CreateOrderTemplateInput implements IActionInput {\n public readonly templateName: string;\n\n constructor(templateName: string) {\n this.templateName = templateName;\n }\n\n public getCacheKey = () => 'CreateOrderTemplateInput';\n\n public getCacheObjectType = () => 'CreateOrderTemplateInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the CreateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} templateName The name of template.\n */\nexport const createOrderTemplateInput = (inputData: ICreateActionContext, templateName: string): CreateOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new CreateOrderTemplateInput(templateName);\n};\n\n/**\n * The action method for the CreateOrderTemplate data action.\n * @param {CreateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function createOrderTemplateAction(input: CreateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const orderTemplate: ProductList = {\n Id: '',\n Name: input.templateName,\n ProductListTypeValue: ProductListType.OrderTemplate\n };\n const createdProductList = await createProductListAsync(\n {\n callerContext: ctx\n },\n orderTemplate\n );\n if (createdProductList && createdProductList.Id !== '') {\n return createdProductList;\n }\n ctx.telemetry.error('Created product list was null');\n throw new Error('Created product list was null');\n } catch (error) {\n ctx.telemetry.error('Not able to create order template', error);\n throw error;\n }\n}\n\n/**\n * The CreateOrderTemplate Data Action.\n * Returns created order template.\n */\nexport const createOrderTemplateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/create-order-template',\n action: >createOrderTemplateAction,\n input: createOrderTemplateInput\n});\n\nexport default createOrderTemplateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport {\n getOrderTemplates,\n GetOrderTemplatesInput,\n getPaginatedOrderTemplateLinesAction,\n GetPaginatedOrderTemplateLinesInput,\n QueryResultSettingsProxy\n} from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetFullOrderTemplateInput implements IActionInput {\n public orderTemplateId: string;\n\n public queryResultSettings: IQueryResultSettings;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetFullOrderTemplate|${this.orderTemplateId}`;\n\n public getCacheObjectType = () => 'GetFullOrderTemplate';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n * @param orderTemplateId\n */\nexport const createGetFullOrderTemplateInput = (inputData: ICreateActionContext, orderTemplateId: string): GetFullOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplateInput(orderTemplateId, queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplate data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getFullOrderTemplateAction(input: GetFullOrderTemplateInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order template. User is not authenticated.');\n }\n\n const inputParams = new GetOrderTemplatesInput(input.orderTemplateId);\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length !== 1) {\n throw new Error('Unable to get full order template. Order template was not found.');\n }\n\n const inputLines = new GetPaginatedOrderTemplateLinesInput(productLists[0].Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n return new OrderTemplate(productLists[0], linesState.lines, linesState.totalCount);\n}\n\n/**\n * The GetFullOrderTemplate Data Action\n * Returns order templates.\n */\nexport const getFullOrderTemplateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-template',\n action: >getFullOrderTemplateAction,\n input: createGetFullOrderTemplateInput\n});\n\nexport default getFullOrderTemplateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AsyncResult,\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport {\n getOrderTemplates,\n GetOrderTemplatesInput,\n getPaginatedOrderTemplateLinesAction,\n GetPaginatedOrderTemplateLinesInput,\n QueryResultSettingsProxy\n} from '..';\nimport { IOrderTemplateLinesState, OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetFullOrderTemplatesInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n public getPrice?: boolean;\n public getRating?: boolean;\n\n constructor(queryResultSettings: IQueryResultSettings, getPrices = true, getRatings = true) {\n this.queryResultSettings = queryResultSettings;\n this.getPrice = getPrices;\n this.getRating = getRatings;\n }\n\n public getCacheKey = () => 'GetFullOrderTemplates';\n\n public getCacheObjectType = () => 'GetFullOrderTemplates';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullOrderTemplatesInput = (inputData: ICreateActionContext): GetFullOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplatesInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplates data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getFullOrderTemplatesAction(input: GetFullOrderTemplatesInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplates: OrderTemplate[] = [];\n\n const inputParams = new GetOrderTemplatesInput();\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length === 0) {\n return orderTemplates;\n }\n\n const inputLinesRequests: AsyncResult[] = [];\n\n // Preparing requests for parallel queries.\n for (const list of productLists) {\n const inputLines = new GetPaginatedOrderTemplateLinesInput(\n list.Id,\n input.queryResultSettings,\n undefined,\n input.getPrice,\n input.getRating\n );\n\n inputLinesRequests.push(getPaginatedOrderTemplateLinesAction(inputLines, ctx));\n }\n\n const inputLinesResponses = await Promise.all(inputLinesRequests);\n\n for (const list of productLists) {\n const productLinesResponse = inputLinesResponses.filter(\n x => x.lines.length > 0 && x.lines[0].productListLine.ProductListId === list.Id\n );\n\n // Lines exist for this product\n if (productLinesResponse.length > 0) {\n orderTemplates.push(new OrderTemplate(list, productLinesResponse[0].lines, productLinesResponse[0].totalCount));\n } else {\n // Add empty order template\n orderTemplates.push(new OrderTemplate(list, [], 0));\n }\n }\n\n ctx.trace(orderTemplates.length.toString());\n return orderTemplates;\n}\n\n/**\n * The GetFullOrderTemplates Data Action\n * Returns order templates.\n */\nexport const getFullOrderTemplatesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-templates',\n action: >getFullOrderTemplatesAction,\n input: createGetFullOrderTemplatesInput\n});\n\nexport default getFullOrderTemplatesActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\n\nimport { OrderTemplate } from '../utilities/order-templates';\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\nimport getFullOrderTemplates, { GetFullOrderTemplatesInput } from './get-full-order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetOrderTemplatesPreviewInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n this.queryResultSettings.count = true;\n this.queryResultSettings.Paging!.Top = 4;\n }\n\n public getCacheKey = () => 'GetOrderTemplatesPreview';\n\n public getCacheObjectType = () => 'GetOrderTemplatesPreview';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetOrderTemplatesPreviewInput = (inputData: ICreateActionContext): GetOrderTemplatesPreviewInput => {\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrderTemplatesPreviewInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplatesPreview data action.\n * @param input The action input.\n * @param context The action context.\n */\nexport async function getOrderTemplatesPreview(input: GetOrderTemplatesPreviewInput, context: IActionContext): Promise {\n const response: OrderTemplate[] = [];\n if (!context.requestContext.user.isAuthenticated) {\n context.trace('Unable to get order templates preview. User is not authenticated.');\n return Promise.resolve(response);\n }\n return getFullOrderTemplates(new GetFullOrderTemplatesInput(input.queryResultSettings, false, false), context);\n}\n\n/**\n * The GetOrderTemplatesPreview Data Action\n * Returns order templates.\n */\nexport const getOrderTemplatesPreviewDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates-preview',\n action: >getOrderTemplatesPreview,\n input: createGetOrderTemplatesPreviewInput\n});\n\nexport default getOrderTemplatesPreviewDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { searchAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList, ProductListSearchCriteria, ProductListType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetOrderTemplatesInput implements IActionInput {\n public readonly productListId: string;\n\n public readonly queryResultSettings?: QueryResultSettings;\n\n constructor(productListId?: string, queryResultSettings?: QueryResultSettings) {\n this.productListId = productListId || '';\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = (): string =>\n `${this.productListId}|${this.queryResultSettings?.Paging?.Top}|${this.queryResultSettings?.Paging?.Skip}`;\n\n public getCacheObjectType = () => 'ProductList';\n\n public dataCacheType = (): CacheType => 'instance';\n\n public shouldCacheOutput = () => false;\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n * @param productListId? The product list identifier.\n * @param queryResultSettings? The query result setting required for pagination/ordering.\n * @param productListId\n * @param queryResultSettings\n */\nexport const createGetOrderTemplatesInput = (\n inputData: ICreateActionContext,\n productListId?: string,\n queryResultSettings?: QueryResultSettings\n): GetOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get order template. User is not authenticated.');\n }\n\n return new GetOrderTemplatesInput(productListId || '', queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplates data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getOrderTemplatesAction(input: GetOrderTemplatesInput, ctx: IActionContext): Promise {\n try {\n const productListSearchCriteria: ProductListSearchCriteria = {\n ProductListId: input.productListId,\n ProductListType: `${ProductListType.OrderTemplate}`\n };\n return await searchAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n productListSearchCriteria\n );\n } catch (error) {\n ctx.telemetry.error('Not able to get order template(s)', error);\n throw error;\n }\n}\n\n/**\n * The GetOrderTemplates Data Action\n * Returns order templates.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates',\n action: >getOrderTemplatesAction,\n input: createGetOrderTemplatesInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\n\nimport { FullProductInput, getFullProducts, ProductDetailsCriteria, QueryResultSettingsProxy } from '..';\nimport { ArrayExtensions } from '../utilities';\nimport { IOrderTemplateLinesState, OrderTemplateLine } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetPaginatedOrderTemplateLinesInput implements IActionInput {\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n public searchText: string;\n public getPrice: boolean = true;\n public getRating: boolean = true;\n\n constructor(\n orderTemplateId: string,\n queryResultSettings: IQueryResultSettings,\n searchText?: string,\n getPrice: boolean = true,\n getRating: boolean = true\n ) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n this.searchText = searchText || '';\n this.getPrice = getPrice;\n this.getRating = getRating;\n }\n\n public getCacheKey = () =>\n `GetPaginatedOrderTemplateLines|${this.orderTemplateId}|${convertToString(this.queryResultSettings)}|${\n this.searchText\n }|${convertToString(this.getPrice)}|${convertToString(this.getRating)}`;\n\n public getCacheObjectType = () => 'GetPaginatedOrderTemplateLines';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n * @param orderTemplateId\n * @param searchText\n */\nexport const createGetPaginatedOrderTemplateLinesInput = (\n inputData: ICreateActionContext,\n orderTemplateId: string,\n searchText?: string\n): GetPaginatedOrderTemplateLinesInput => {\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n return new GetPaginatedOrderTemplateLinesInput(orderTemplateId, queryResultSettings, searchText);\n};\n\nexport const getProductDetailsCriteriaFromActionInput = (inputData: GetPaginatedOrderTemplateLinesInput): ProductDetailsCriteria => {\n return {\n getPrice: inputData.getPrice ?? true,\n getRating: inputData.getRating ?? true\n };\n};\n\n/**\n * The action method for the GetPaginatedOrderTemplateLines data action.\n * @param input The action input.\n * @param context The action context.\n */\nexport async function getPaginatedOrderTemplateLinesAction(\n input: GetPaginatedOrderTemplateLinesInput,\n context: IActionContext\n): Promise {\n if (!context.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplateLinesState: IOrderTemplateLinesState = {\n lines: [],\n totalCount: 0\n };\n const promise = getProductListLinesAsync(\n {\n callerContext: context,\n queryResultSettings: input.queryResultSettings\n },\n input.orderTemplateId,\n input.searchText\n );\n const productListLines = await promise;\n const productInputs: FullProductInput[] = [];\n if (ArrayExtensions.hasElements(productListLines)) {\n orderTemplateLinesState.totalCount = promise.metadata.count || productListLines.length;\n productListLines.forEach(listLine => {\n if (listLine.ProductId) {\n orderTemplateLinesState.lines.push(new OrderTemplateLine(listLine));\n productInputs.push(\n new FullProductInput(\n listLine.ProductId,\n context.requestContext.apiSettings,\n getProductDetailsCriteriaFromActionInput(input),\n context.requestContext\n )\n );\n }\n });\n if (ArrayExtensions.hasElements(productInputs)) {\n const fullProductsInfo = await getFullProducts(productInputs, context)\n .then((products: FullProduct[]) => {\n if (products) {\n return products;\n }\n return [];\n })\n .catch(error => {\n context.trace(error);\n context.telemetry.error(error.message);\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to retrieve product info.');\n });\n if (fullProductsInfo) {\n orderTemplateLinesState.lines.forEach(line => {\n const fullProduct = fullProductsInfo.find(\n product => product.ProductDetails.RecordId === line.productListLine.ProductId\n );\n if (!fullProduct) {\n context.telemetry.error(\n '[getPaginatedOrderTemplateLinesAction] Unable to find product info for an order template line.'\n );\n return;\n }\n line.fullProduct = fullProduct;\n });\n }\n return orderTemplateLinesState;\n }\n context.trace(orderTemplateLinesState.lines.length.toString());\n return orderTemplateLinesState;\n }\n return orderTemplateLinesState;\n}\n\n/**\n * The GetPaginatedOrderTemplateLines Data Action\n * Returns order templates.\n */\nexport const getPaginatedOrderTemplateLinesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-paginated-order-template-lines',\n action: getPaginatedOrderTemplateLinesAction as IAction,\n input: createGetPaginatedOrderTemplateLinesInput\n});\n\nexport default getPaginatedOrderTemplateLinesActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateHeaderInput implements IActionInput {\n public readonly orderTemplate: ProductList;\n\n constructor(orderTemplate: ProductList) {\n this.orderTemplate = orderTemplate;\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateHeaderInput';\n\n public getCacheObjectType = () => 'UpdateOrderTemplateHeaderInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the UpdateOrderTemplateHeader method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {ProductList} orderTemplate The template header.\n */\nexport const updateOrderTemplateHeaderInput = (\n inputData: ICreateActionContext,\n orderTemplate: ProductList\n): UpdateOrderTemplateHeaderInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to update order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateHeaderInput(orderTemplate);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateHeaderInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateHeaderAction(input: UpdateOrderTemplateHeaderInput, ctx: IActionContext): Promise {\n try {\n const { orderTemplate } = input;\n const updatedProductList = await updateAsync(\n {\n callerContext: ctx\n },\n orderTemplate\n );\n if (updatedProductList) {\n return updatedProductList;\n }\n ctx.telemetry.error(`Updated product list ${orderTemplate.Id} came back as null.`);\n throw new Error('Updated product list was null.');\n } catch (error) {\n ctx.telemetry.error('Not able to update order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns updated order template.\n */\nexport const updateOrderTemplateHeaderActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-header',\n action: >updateOrderTemplateHeaderAction,\n input: updateOrderTemplateHeaderInput\n});\n\nexport default updateOrderTemplateHeaderActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { updateProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getPaginatedOrderTemplateLines, { GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n public readonly productId: number;\n\n public readonly quantity: number;\n\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateInput';\n\n public getCacheObjectType = () => 'UpdateOrderTemplateInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the UpdateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n * @param unitOfMeasure\n */\nexport const updateOrderTemplateInput = (\n inputData: ICreateActionContext,\n orderTemplateId: string,\n productId: number,\n quantity: number,\n unitOfMeasure: string\n): UpdateOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateAction(input: UpdateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('User token was not found when updating the order template');\n }\n const getLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, {}, input.productId.toString());\n const linesState = await getPaginatedOrderTemplateLines(getLinesInput, ctx);\n if (!linesState) {\n throw new Error('Order template was not found when updating the order template');\n }\n\n const linesToUpdate = linesState.lines.filter(line => line.productListLine.ProductId === input.productId);\n if (linesToUpdate.length !== 1) {\n throw new Error('Unable to find the line to update when updating the order template');\n }\n\n const lineToUpdate = linesToUpdate[0].productListLine;\n\n lineToUpdate.UnitOfMeasure = input.unitOfMeasure;\n lineToUpdate.Quantity = input.quantity;\n\n const updatedLines: ProductListLine[] = await updateProductListLinesAsync(\n {\n callerContext: ctx\n },\n input.orderTemplateId,\n [lineToUpdate]\n );\n\n if (!updatedLines || updatedLines.length !== 1) {\n throw new Error('Server returned invalid lines when updating order template');\n }\n const updatedLine = updatedLines.filter(line => line.ProductId === input.productId);\n if (\n updatedLine.length !== 1 ||\n updatedLine[0].Quantity !== input.quantity ||\n updatedLine[0].UnitOfMeasure !== input.unitOfMeasure\n ) {\n throw new Error('Server did not update the line when updating order template');\n }\n return updatedLine[0];\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-line',\n action: >updateOrderTemplateAction,\n input: updateOrderTemplateInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { createRefineSearchByCategoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist/retail-action';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the refineSearchByCategory data action.\n */\nexport class RefineSearchByCriteriaInput implements IActionInput {\n public readonly categoryId?: number;\n\n public readonly channelId?: number;\n\n public readonly refinementCriteria: ProductRefinerValue[];\n\n public readonly catalogId: number;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number\n ) {\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('RefineSearchByCriteriaInputCache', this.apiSettings);\n\n public getCacheObjectType = () => 'RefineSearchByCriteriaInput';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the refineSearchByCategory data action.\n * @param inputData\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n return createRefineSearchByCategoryInput(\n QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings,\n +inputData.requestContext.apiSettings.channelId,\n inputData.config ? Number(inputData.config.catalogId) : 0,\n +inputData.requestContext.query.categoryId,\n !Array.isArray(refinementCriteria)\n ? []\n : refinementCriteria.map((refinementCriterion: ProductRefinerValue) => refinementCriterion)\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * The RefineSearchByCategory data action\n * Uses categoryId query string parameter to call the RefinerSearchByCategory\n * RetailServer API to get information about products.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/regin-search-by-category',\n action: >retailAction,\n input: createInput\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchByTextInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * CreateInput method for the searchByText data action.\n * @param inputData\n */\nexport function createSearchByTextInputFunc(inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n const {\n requestContext: {\n query,\n apiSettings: { channelId }\n }\n } = inputData;\n\n const search = query && query.q;\n\n if (!search) {\n throw new Error(\n 'Unable to preform search without search text. Query string ?q={searchText} must be present or should be configued in module data.'\n );\n }\n\n const querySettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return createSearchByTextInput(querySettingsProxy.QueryResultSettings, Number(channelId), 0, search);\n}\n\n/**\n * The searchByText data action\n * Queries RetailServers product searchByText API using a\n * query string parameter and returns a list of ProductSearchResults.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-by-text',\n action: >retailAction,\n input: createSearchByTextInputFunc\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction, OrgUnitsDataActions, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Search Org Unit Locations action createInput method.\n * @param inputData - Current action context.\n * @returns Input needed to call the Search-org-unit-location API.\n */\nexport function createSearchOrgUnitLocationsInputFunc(\n inputData: ICreateActionContext, IGeneric>\n): IDataServiceRequest {\n const querySettingsProxy = QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(inputData);\n return OrgUnitsDataActions.createSearchOrgUnitLocationsInput(querySettingsProxy, {});\n}\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >retailAction,\n input: createSearchOrgUnitLocationsInputFunc\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\n// TODO: Centralize this logic in a common utility area\nexport function updateAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n if (address.IsPrimary) {\n customer.Addresses.forEach(cur => (cur.IsPrimary = false));\n }\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId), address];\n return customer;\n}\n\nexport async function updateAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, updateAddressHandler);\n}\n\n/**\n * The updateAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport const updateAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-address',\n action: >updateAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput)\n});\n\nexport default updateAddressActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy';\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport { GetCustomerInput } from './get-customer';\n\nexport interface IUpdateCustomerAttributesInput extends IActionInput {\n phone?: string;\n vatNumber?: string;\n customerAttributes: CustomerAttribute[];\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n}\n\n/**\n * Input class for the updateCustomerAttributes.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class updateCustomerAttributesInput implements IUpdateCustomerAttributesInput {\n public userAccountNumber: string;\n\n public customerAttributes: CustomerAttribute[];\n\n public apiSettings: ICommerceApiSettings;\n\n public phone?: string;\n\n public vatNumber?: string;\n\n constructor(\n userAccountNumber: string,\n customerAttributes: CustomerAttribute[],\n apiSettings: ICommerceApiSettings,\n phone?: string,\n vatNumber?: string\n ) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.customerAttributes = customerAttributes;\n this.phone = phone;\n this.vatNumber = vatNumber;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Customer';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerAttributes data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function updateCustomerAttributesAction(input: IUpdateCustomerAttributesInput, ctx: IActionContext): Promise {\n const { customerAttributes, phone, vatNumber, userAccountNumber } = input;\n\n const customer = await readAsync({ callerContext: ctx, bypassCache: 'get' }, userAccountNumber);\n\n if (!customer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to find customer');\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n newCustomer.Phone = phone;\n newCustomer.VatNumber = vatNumber;\n newCustomer.Attributes = customerAttributes;\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to update customer attributes');\n throw new Error('Unable to update customer attributes');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerAttributes data action\n * Returns the updated customer.\n */\nexport const updateCustomerAttributesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-attributes',\n action: >updateCustomerAttributesAction\n});\n\nexport default updateCustomerAttributesActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport { GetCustomerInput } from './get-customer';\n\nexport interface IUpdateCustomerPersonalizationInput extends IActionInput {\n isOptOut: boolean;\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n preferenceType?: string;\n}\n\n/**\n * Input class for the updateCustomerPersonalization.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class updateCustomerPersonalizationInput implements IUpdateCustomerPersonalizationInput {\n public userAccountNumber: string;\n\n public isOptOut: boolean;\n\n public apiSettings: ICommerceApiSettings;\n\n public preferenceType: string | undefined;\n\n constructor(userAccountNumber: string, isOptOut: boolean, apiSettings: ICommerceApiSettings, preferenceType?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.isOptOut = isOptOut;\n this.preferenceType = preferenceType;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Customer';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerPersonalization data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function updateCustomerPersonalizationAction(\n input: IUpdateCustomerPersonalizationInput,\n ctx: IActionContext\n): Promise {\n const { userAccountNumber, isOptOut, preferenceType } = input;\n const customer = await readAsync({ callerContext: ctx, bypassCache: 'get' }, userAccountNumber);\n if (!customer) {\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n\n switch (preferenceType) {\n case 'web-tracking':\n newCustomer.OptOutWebActivityTracking = isOptOut;\n break;\n case undefined:\n case 'personalization':\n default:\n newCustomer.OptOutPersonalization = isOptOut;\n }\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Unable to update customer');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerPersonalization data action\n * Returns the updated customer.\n */\nexport const updateCustomerPersonalizationActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-personalization',\n action: >updateCustomerPersonalizationAction\n});\n\nexport default updateCustomerPersonalizationActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { createAddressManagementInput, IAddressManagementInput } from './add-address';\nimport { GetCustomerInput } from './get-customer';\n\nexport function updatePrimaryAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = setPrimaryAddress({ ...address }, [...(customer.Addresses || [])]);\n return customer;\n}\n\nexport async function updatePrimaryAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n const { address } = input;\n\n const customer = await readAsync({ callerContext: ctx, bypassCache: 'get' }, '');\n\n if (!customer) {\n throw new Error('Unable to find customer');\n }\n\n customer.Addresses = setPrimaryAddress({ ...address }, [...(customer.Addresses ?? [])]);\n const updatedCustomer = await updateAsync({ callerContext: ctx }, customer);\n\n if (!updatedCustomer) {\n throw new Error('Unable to update customer');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer.Addresses || [];\n}\n\n/**\n * The updatePrimaryAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport const updatePrimaryAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-primary-address',\n action: >updatePrimaryAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\nexport default updatePrimaryAddressActionDataAction;\n\nconst setPrimaryAddress = (primaryAddresses: Address, addresses: Address[]): Address[] => {\n return addresses.map(addr => {\n if (addr.RecordId === primaryAddresses.RecordId) {\n addr.IsPrimary = true;\n } else {\n addr.IsPrimary = false;\n }\n return addr;\n });\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings, SortColumn } from '@msdyn365-commerce/retail-proxy';\n\nimport { IQueryResultSettingsModuleConfig } from './IQueryResultSettingsModuleConfig';\n\n/**\n * Wrapper for query result settings, which guarantees some properties that are optional in the real subject\n * and includes some common utilities for data actions.\n */\nexport class QueryResultSettingsProxy {\n // Real subject\n private readonly queryResultSettings: QueryResultSettings;\n\n /**\n * Factory method for data actions.\n * @param inputData - Input data.\n * @returns - Returns query result settings proxy.\n */\n public static fromInputData(inputData: ICreateActionContext>): QueryResultSettingsProxy {\n const { requestContext, config } = inputData;\n return QueryResultSettingsProxy.fromModuleData(requestContext, config as IQueryResultSettingsModuleConfig);\n }\n\n /**\n * Factory method for modules.\n * @param requestContext - RequestContext.\n * @param config - Module config from props.\n * @returns - Returns query result settings proxy.\n */\n public static fromModuleData(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig): QueryResultSettingsProxy {\n const sortingCriteria = (config && config.sortingCriteria) || undefined;\n const query = requestContext && requestContext.query;\n const top = (query && query.top) || undefined;\n const skip = (query && query.skip) || undefined;\n\n const queryResultSettings = {\n Paging: {\n Skip: (skip && Number(skip)) || 0,\n Top: (top && Number(top)) || config?.itemsPerPage || 50\n },\n Sorting: sortingCriteria || {}\n };\n\n return new QueryResultSettingsProxy(queryResultSettings);\n }\n\n /**\n * Return the query result settings with default paging or with the passed value.\n * @param inputData - Input Data.\n * @returns - Query Result settings.\n */\n public static getPagingFromInputDataOrDefaultValue(inputData: ICreateActionContext>): QueryResultSettings {\n const config: IQueryResultSettingsModuleConfig | undefined = inputData.config;\n const defaultPageSize: number = 100;\n const queryResultSettings: QueryResultSettings = {\n Paging: {\n // eslint-disable-next-line max-len -- Disable max length for next line.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unnecessary-condition -- Reading from config.\n Top:\n config?.itemsPerPage ??\n Number.parseInt(inputData.requestContext?.app?.platform?.defaultPageSizeForAPI ?? defaultPageSize, 10)\n }\n };\n return queryResultSettings;\n }\n\n /**\n * Factory method.\n * @returns - Returns query result settings proxy.\n */\n public static getDefault(): QueryResultSettingsProxy {\n return new QueryResultSettingsProxy({ Paging: {}, Sorting: {} });\n }\n\n /**\n * Private constructor, expect instances to be created with the factory method.\n * @param queryResultSettings - Query result setting.\n */\n private constructor(queryResultSettings: QueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public get QueryResultSettings(): QueryResultSettings {\n return this.queryResultSettings;\n }\n\n /**\n * Gets the hints for the cache key based on query result settings.\n * @returns - Returns cache key hint.\n */\n public get cacheKeyHint(): string {\n // The factory method guarantees values are defined\n const topHint = `top-${this.queryResultSettings.Paging!.Top!}`;\n const skipHint = `skip-${this.queryResultSettings.Paging!.Skip!}`;\n const sortingHintData =\n (this.queryResultSettings.Sorting!.Columns || [])\n .map((column: SortColumn) => {\n return `${column.ColumnName}--${(column.IsDescending && 'desc') || 'asc'}`;\n })\n .join(',') || undefined;\n const sortingHint = `sortBy-${sortingHintData}`;\n return `${topHint}|${skipHint}|${sortingHint}`;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\n\nexport function parameterize(\n name: string = '',\n sep = '-',\n parameterizeFeatureFlags: IParameterizeFeatureFlags = {},\n neutralizedName?: string\n) {\n // If neutralizedName flag enabled, we use neutralizedName to construct string\n const candidateName =\n (msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlLocalization) ||\n parameterizeFeatureFlags.enableUrlLocalization\n ? name\n : neutralizedName || name;\n\n /*\n 1\t‘ ‘ (space)\t-> (single dash)\n 3\tAny character disallowed in URLs -> URL-encode\n 5\t‘ & ‘ (space ampersand space) -> (single dash)\n 6\t‘ - ‘ (space dash space) -> (single dash)\n 7\t‘ ‘ (2+ spaces) -> (single dash)\n 10\t[A-Z] (capital letters) -> [a-z] (lower-case)\n 12\tAny non-ASCII character outside of the set of disallowed characters -> URL-encode\n */\n if (\n parameterizeFeatureFlags.enableUrlEncoding ||\n (msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlEncoding)\n ) {\n // Replace url reserved characters with dash, and remove front and end dash;\n // &*!() reserved characters that can not be encoded by encodeURIComponent()\n return encodeURIComponent(\n candidateName\n .toLowerCase()\n .replace(/[\\s!&'()*]+/g, '-')\n .trim()\n .replace(/-+/g, '-')\n .replace(/^-+|-+$/g, '')\n );\n }\n return name\n .toLowerCase()\n .replace(/[^\\d_a-z\\-]+/g, ' ')\n .trim()\n .replace(/\\s+/g, sep);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getParameterizeFeatureFlags, getUrlSync, IActionContext, IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\n\nimport { parameterize } from './parameterize';\n\ninterface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Builds slugs for category.\n * @param category\n * @param categoryMap\n * @param parameterizeFeatureFlags\n */\nexport function getCategorySlug(\n category: CategoryHierarchy,\n categoryMap: ICategoryMap,\n parameterizeFeatureFlags?: IParameterizeFeatureFlags\n): string {\n if (!category || !category.Name) {\n // Invalid category\n return '';\n }\n const categoryName = parameterize(category.Name, undefined, parameterizeFeatureFlags, category.NeutralizedName);\n if (!category.ParentCategory || category.ParentCategory === 0) {\n // Base case assign url\n category.Slug = category.Slug || `/${categoryName}`;\n } else if (category.ParentCategory) {\n category.Slug =\n category.Slug ||\n `${getCategorySlug(categoryMap[category.ParentCategory], categoryMap, parameterizeFeatureFlags)}/${categoryName}`;\n }\n\n return category.Slug || '';\n}\n\n/**\n * Gets Url for category hierarchy. Returns string and adds url to Url property of category hierarchy.\n * @param category Category to generate URL for.\n * @param ctx\n * @param categoryMap Dictionary of all categories.\n */\nexport function getCategoryUrl(category: CategoryHierarchy, ctx?: IActionContext, categoryMap?: ICategoryMap): string | undefined {\n if (!category.Url && ctx && categoryMap) {\n if (!category.Slug) {\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = ctx.requestContext ? getParameterizeFeatureFlags(ctx) : {};\n category.Slug = getCategorySlug(category, categoryMap, parameterizeFeatureFlags);\n }\n category.Url = getUrlSync('category', ctx, { category });\n }\n return category.Url;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\n\n/**\n * Syncronously creates an invoice detail page url.\n * @param invoiceId Invoice Id.\n * @param ctx\n */\nexport function getInvoiceDetailsPageUrlSync(invoiceId: string, ctx: IActionContext): string {\n let url = getUrlSync('invoice-details', ctx) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n return `${url}?invoiceId=${invoiceId}`;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Syncronously creates a product url.\n * @param product Simple product to get url from.\n * @param ctx\n * @param category Category to add to product url.\n */\nexport function getProductUrlSync(product: SimpleProduct, ctx: IActionContext, category?: CategoryHierarchy): string {\n const selectedProduct = { ...product, RecordId: product.MasterProductId || product.RecordId };\n\n return getProductPageUrlSync(selectedProduct.Name || '', selectedProduct.RecordId, ctx, category)!;\n}\n\n/**\n * Syncronously creates a product detail page url.\n * @param name Simple product name.\n * @param recordId Record id of product.\n * @param ctx\n * @param category\n */\nexport function getProductPageUrlSync(name: string, recordId: number, ctx: IActionContext, category?: CategoryHierarchy): string {\n return getUrlSync('product', ctx, {\n product: { Name: name || '', RecordId: recordId },\n category\n })!;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Represents a pair of two fields: key and value.\n * Used to initialize a dictionary.\n */\nexport interface IKeyValuePair {\n readonly key: Key;\n readonly value: Value;\n}\n\n/**\n * Represents a dictionary in memory storage.\n */\nexport class Dictionary {\n /**\n * Values stored in the dictionary.\n */\n private _values: { [eventName: string]: Value };\n\n /**\n * The number of values stored in the dictionary (does not include keys).\n */\n private _length: number;\n\n /**\n * Initializes an empty dictionary or a dictionary with the given key value pairs.\n * @param {IKeyValuePair[]} entries The key value pairs which should be stored in the dictionary initially.\n */\n public constructor(...entries: IKeyValuePair[]) {\n this._values = {};\n this._length = 0;\n entries.forEach(keyValuePair => {\n this.setValue(keyValuePair.key, keyValuePair.value);\n });\n }\n\n /**\n * Removes value from the dictionary for the given key.\n * @param {Key} key The key to retrieve the value.\n * @remark Does nothing in case the key is not present in the dictionary.\n */\n public removeValue(key: Key): void {\n if (!this.hasValue(key)) {\n return;\n }\n\n --this._length;\n delete this._values[key];\n }\n\n /**\n * Retrieves a value from the dictionary or returns undefined in case it's not found.\n * @param {Key} key The key to retrieve the value.\n * @returns {Value | undefined} The value stored in the dictionary or undefined in case it's not found.\n */\n public getValue(key: Key): Value | undefined {\n return this._values[key];\n }\n\n /**\n * Retrieves a value from the dictionary.\n * In case it's not found, adds the default value to the dictionary and returns it.\n * @param {Key} key The key to retrieve the value.\n * @param defaultValue\n * @returns {Value} The value stored in the dictionary or the default value in case it's not found.\n */\n public getValueWithDefaultValue(key: Key, defaultValue: Value): Value {\n if (!this.hasValue(key)) {\n this.setValue(key, defaultValue);\n }\n return this.getValue(key)!;\n }\n\n /**\n * Sets the value to the dictionary for the given key.\n * @remarks In case undefined was passed, removes the value from the dictionary instead.\n * @param {Key} key The key under which the value should be stored.\n * @param {Value} value The value which should be stored in the dictionary.\n */\n public setValue(key: Key, value: Value): void {\n if (value === undefined) {\n this.removeValue(key);\n return;\n }\n\n if (!this.hasValue(key)) {\n ++this._length;\n }\n\n this._values[key] = value;\n }\n\n /**\n * Checks if the dictionary stores some value (except undefined) for the given key.\n * @param {Key} key The key to retrieve the value.\n * @returns {boolean} True in case the value is present, false otherwise or if it's undefined.\n */\n public hasValue(key: Key): boolean {\n return this._values[key] !== undefined;\n }\n\n /**\n * Checks if the dictionary is empty.\n * @returns {boolean} True if the dictionary is empty, false otherwise.\n */\n public isEmpty(): boolean {\n return this.length === 0;\n }\n\n /**\n * Retrieves the number of values stored in the dictionary.\n * @remark Use `isEmpty` to check if the dictionary has any elements.\n * @returns {number} The number of values stored.\n */\n public get length(): number {\n return this._length;\n }\n\n /**\n * Clears the dictionary by removing all elements from the storage.\n */\n public clear(): void {\n this._values = {};\n this._length = 0;\n }\n\n /**\n * Returns all values stored in the dictionary.\n * @returns {Value[]} List of values.\n */\n public getValues(): Value[] {\n return this.getKeys().map(key => this._values[key]);\n }\n\n /**\n * Returns all keys stored in the dictionary.\n * @returns {string[]} List of keys.\n */\n public getKeys(): Key[] {\n return Object.keys(this._values);\n }\n\n /**\n * Returns all key value pairs stored in the dictionary.\n * @returns {IKeyValuePair[]} List of key value pairs.\n */\n public getKeyValuePairs(): IKeyValuePair[] {\n return this.getKeys().map(key => {\n return { key, value: this._values[key] };\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IEventSubscriber } from './event-subscriber';\n\n/**\n * Represents a simple event with subscribers. Notifies the subscribers once the event is triggered.\n */\nexport class Event {\n /**\n * The list of subscribers.\n */\n private _subscribers: IEventSubscriber[];\n\n /**\n * Initializes the event with a empty subscribers list.\n */\n public constructor() {\n this._subscribers = [];\n }\n\n /**\n * Subscribes given instance to the event.\n * @param {IEventSubscriber} instance The info about the subscriber.\n */\n public subscribe(instance: IEventSubscriber): void {\n this._subscribers.push(instance);\n }\n\n /**\n * Removes the subscriber from the list of subscribers watching the event.\n * @param {string} instanceId The unique identifier of the subscriber which was earlier passed in `subscribe` method in `IEventSubscriber`.\n */\n public unsubscribe(instanceId: string): void {\n this._subscribers = this._subscribers.filter(element => element.instanceId !== instanceId);\n }\n\n /**\n * Clears the list of subscriber removing all instances watching the event.\n */\n public unsubscribeAll(): void {\n this._subscribers = [];\n }\n\n /**\n * Triggers the event.\n * Notifies the subscribers that the event is triggered by calling `handler` method.\n */\n public trigger(): void {\n this._subscribers.forEach(subscriber => {\n subscriber.handler();\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from './object-extensions';\n\n/**\n * Represents an array which is defined with at least one value.\n */\nexport type NonEmptyArray = [T, ...T[]];\n\n/**\n * Namespace which extends Array functionality.\n */\nexport namespace ArrayExtensions {\n /**\n * Verifies whether the object array has elements.\n * @param value - The array to examine.\n * @returns True if the object has at least one element in the array, false otherwise (if array is not defined or empty).\n */\n export function hasElements(value: NonEmptyArray | T[] | null | undefined): value is NonEmptyArray {\n const emptyArrayLength = 0;\n return !ObjectExtensions.isNullOrUndefined(value) && value.length > emptyArrayLength;\n }\n\n /**\n * Retrieves the first element in the array or default value if the array is empty.\n * @param values - The array with values.\n * @param defaultValue - Optional parameter to specify default value. If not specified, undefined will be used.\n * @returns First element or default value.\n */\n export function firstOrDefault(values: NonEmptyArray | T[] | null | undefined, defaultValue?: T): T | undefined {\n if (hasElements(values)) {\n return values[0];\n }\n return defaultValue;\n }\n\n /**\n * Remove duplicate elements in the array.\n * @param value - The array to examine.\n * @returns An array with only unique elements.\n */\n export function unique(value: T[]): T[] {\n if (!hasElements(value)) {\n return [];\n }\n\n return Array.from(new Set(value));\n }\n\n /**\n * Checks if all elements satisfy given condition.\n * @param value - The array to examine.\n * @param predicate - The function which checks an element.\n * @returns True if the array is empty or all the inner elements satisfy given condition,\n * false if at least one element does not pass the condition.\n */\n export function all(value: T[] | null | undefined, predicate: (value: T, index: number, array: T[]) => boolean): boolean {\n if (!hasElements(value)) {\n return true;\n }\n\n return value.filter(predicate).length === value.length;\n }\n\n /**\n * Filters out null and undefined values from the given array.\n * @param value - The array with possibly undefined/null items.\n * @returns All items which are not null or undefined.\n */\n export function validValues(value: (T | undefined | null)[] | undefined | null): T[] {\n if (!hasElements(value)) {\n return [];\n }\n\n return value.filter(item => !ObjectExtensions.isNullOrUndefined(item)) as T[];\n }\n\n /**\n * Merges items from 2-dimensional array into one array with all items.\n * @param value - The 2-dimensional array with the items.\n * @returns All items retrieved from all inner arrays.\n */\n export function flatten(value: ((T | undefined | null)[] | undefined | null)[]): T[] {\n let result: T[] = [];\n\n if (!hasElements(value)) {\n return result;\n }\n\n for (const arrayLine of value) {\n if (!ObjectExtensions.isNullOrUndefined(arrayLine)) {\n result = result.concat(validValues(arrayLine));\n }\n }\n\n return result;\n }\n\n /**\n * Check if two arrays are equal.\n * @param firstArray - The array with the items.\n * @param secondArray - Another array with the items.\n * @param comparator - The comparator which compares the values and returns true if two objects are equal, false otherwise.\n * @returns True if arrays have the same items, false otherwise.\n */\n export function equals(\n firstArray: T[],\n secondArray: T[],\n comparator?: (valueFromFirstArray: T, valueFromSecondArray: T) => boolean\n ): boolean {\n if (firstArray.length !== secondArray.length) {\n return false;\n }\n\n if (comparator === undefined) {\n return JSON.stringify(firstArray) === JSON.stringify(secondArray);\n }\n\n for (let index = 0; index < firstArray.length; ++index) {\n if (!comparator(firstArray[index], secondArray[index])) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if two arrays have the same elements irrespective of the order.\n * @param firstArray - The array with the items.\n * @param secondArray - Another array with the items.\n * @param comparator - The comparator which compares the values and returns true if two objects are equal, false otherwise.\n * @returns True if arrays have the same items, false otherwise.\n */\n export function haveSameItems(\n firstArray: T[],\n secondArray: T[],\n comparator: (valueFromFirstArray: T, valueFromSecondArray: T) => boolean = (valueFromFirstArray: T, valueFromSecondArray: T) =>\n valueFromFirstArray === valueFromSecondArray\n ): boolean {\n if (firstArray.length !== secondArray.length) {\n return false;\n }\n\n for (const item of firstArray) {\n if (!secondArray.some(otherItem => comparator(item, otherItem))) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Calculates a sum of elements in the given array.\n * @param data - List of items.\n * @returns Sum of elements.\n */\n export function calculateSum(data: NonEmptyArray): number {\n let result = data[0];\n for (let index = 1; index < data.length; ++index) {\n result += data[index];\n }\n\n return result;\n }\n\n /**\n * Reverses the elements in the array without modifying the original one.\n * @param array - The array with the items.\n * @returns A new array with reversed order.\n */\n export function reverse(array: T[]): T[] {\n const newArray: T[] = [];\n\n for (let index = array.length - 1; index >= 0; --index) {\n newArray.push(array[index]);\n }\n\n return newArray;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends enum functionality.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport namespace EnumExtensions {\n /**\n * @description Returns a list of numeric values and enum names for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of numeric values and enum names.\n */\n export function getValues(enumClass: any): (number | string)[] {\n if (ObjectExtensions.isNullOrUndefined(enumClass)) {\n return [];\n }\n\n return Object.keys(enumClass).map(item => enumClass[item]);\n }\n\n /**\n * @description Returns a list of enum names for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of string values.\n */\n export function getNames(enumClass: any): string[] {\n return getValues(enumClass).filter(ObjectExtensions.isString);\n }\n\n /**\n * @description Returns a list of numeric values for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of numeric values.\n */\n export function getNumericValues(enumClass: any): number[] {\n return getValues(enumClass).filter(ObjectExtensions.isNumber);\n }\n\n /**\n * @description Returns a list of enum values for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of enum values.\n */\n export function getEnumValues(enumClass: any): T[] {\n return getNumericValues(enumClass).map(value => value);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends string functionality.\n */\nexport namespace StringExtensions {\n /**\n * Checks if string is null, undefined, empty, or whitespace.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrWhitespace(value: string | null | undefined): boolean {\n return isNullOrEmpty(value) || value!.trim() === '';\n }\n\n /**\n * Checks if string is null, undefined, or empty.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrEmpty(value: string | null | undefined): boolean {\n if (ObjectExtensions.isNullOrUndefined(value)) {\n return true;\n }\n\n if (!ObjectExtensions.isString(value)) {\n throw new Error('StringExtensions has received a non-string input.');\n }\n\n return value === '';\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Namespace which extends Object functionality.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport namespace ObjectExtensions {\n /**\n * @description Verifies whether the value is null or undefined.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is null or undefined, false otherwise.\n */\n export function isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n }\n\n /**\n * @description Verifies whether the value is of type string.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a string, false otherwise.\n */\n export function isString(value: any): value is string {\n return typeof value === 'string';\n }\n\n /**\n * @description Verifies whether the value is of type number.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a number, false otherwise.\n */\n export function isNumber(value: any): value is number {\n return typeof value === 'number';\n }\n\n /**\n * Verifies whether the object is a function.\n * @param {any} object The object.\n * @param value\n * @returns {boolean} True if the object is a function, false otherwise.\n */\n export function isFunction(value: any): boolean {\n return typeof value === 'function';\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\n\nexport const getRnrPartnerId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.id || '';\n};\n\nexport const getRnrEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.url || '';\n};\n\nexport const getRnrAuthEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n const endpoint = args.requestContext.apiSettings.rnr.proxyUrl\n ? args.requestContext.apiSettings.rnr.proxyUrl\n : args.requestContext.apiSettings.rnr.url || '';\n if (endpoint.length > 0 && endpoint.endsWith('/')) {\n return endpoint.substring(0, endpoint.length - 1);\n }\n return endpoint;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\n\nimport { QueryResultSettingsProxy } from './QueryResultSettingsProxy';\n\nexport interface ISearchData {\n q: string;\n skip: number;\n top: number;\n itemsPerPage: string;\n maxItems: string;\n channelId: number;\n queryResultSettings: QueryResultSettings;\n}\n\nexport const parseSearchData = (inputData: ICreateActionContext>): ISearchData => {\n // Query is of type 'IDictionary | undefined', so that q and skip are not recognized by tsc\n const {\n requestContext: {\n // @ts-expect-error:2339\n query: { q, top, skip },\n apiSettings: { channelId }\n },\n // @ts-expect-error:2339\n config: { maxItems, itemsPerPage }\n } = inputData;\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return {\n q,\n skip: (skip && Number(skip)) || 0,\n top: (top && Number(top)) || 50,\n itemsPerPage, // TODO BUGBUG 21667361\n maxItems, // TODO BUGBUG 21667361\n channelId,\n queryResultSettings\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * OrderTemplateLine state information.\n */\nexport class OrderTemplateLine {\n public productListLine: ProductListLine;\n\n public fullProduct?: FullProduct;\n\n constructor(productListLine: ProductListLine, fullProduct?: FullProduct) {\n this.productListLine = productListLine;\n this.fullProduct = fullProduct;\n }\n}\n\nexport interface IOrderTemplateLinesState {\n lines: OrderTemplateLine[];\n totalCount: number;\n}\n\n/**\n * Order template class.\n */\nexport class OrderTemplate {\n public productList: ProductList;\n\n public orderTemplateLines: OrderTemplateLine[];\n\n public totalLines: number;\n\n constructor(productList: ProductList, orderTemplateLines: OrderTemplateLine[], totalLines: number) {\n this.productList = productList;\n this.orderTemplateLines = orderTemplateLines;\n this.totalLines = totalLines;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ProductAvailableQuantity,\n ProductDimensionValueInventoryAvailability,\n ProductInventoryAvailability\n} from '@msdyn365-commerce/retail-proxy';\n\n/**\n * This setting defines the delivery modes supported.\n */\nexport enum DeliveryMode {\n allWareHouses = 0,\n shipping = 1,\n pickup = 2\n}\n\n/**\n * This setting defines the inventory levels supported.\n */\nexport enum InventoryLevels {\n physicalAvailable = 'physicalAvailable',\n totalAvailable = 'totalAvailable',\n threshold = 'inventoryThreshold'\n}\n\n/**\n * Product inventory information class.\n */\nexport interface IProductInventoryInformation {\n ProductAvailableQuantity: ProductAvailableQuantity;\n StockLevelCode?: string;\n StockLevelLabel?: string;\n IsProductAvailable: boolean;\n InventLocationId?: string;\n deliveryType?: DeliveryMode;\n}\n\n/**\n * This setting defines the inventory level values return by the API.\n */\nexport enum InventoryLevelValues {\n outOfStock = 'OOS',\n available = 'AVAIL'\n}\n\n/**\n * Retrieves inventory level code from the dimension based on the app config setting.\n * @param dimensionValuesWithInventory - The dimension info.\n * @param inventoryLevel - App config setting for inventory level.\n * @returns Inventory level code value.\n */\nexport const getInventoryLevelCodeFromDimensionValue = (\n dimensionValuesWithInventory: ProductDimensionValueInventoryAvailability,\n inventoryLevel?: InventoryLevels | undefined\n): InventoryLevelValues | undefined => {\n if (inventoryLevel === InventoryLevels.totalAvailable) {\n return dimensionValuesWithInventory.TotalAvailableInventoryLevelCode as InventoryLevelValues | undefined;\n }\n if (inventoryLevel === InventoryLevels.physicalAvailable) {\n return dimensionValuesWithInventory.PhysicalAvailableInventoryLevelCode as InventoryLevelValues | undefined;\n }\n return undefined;\n};\n\n/**\n * Retrieves inventory level code from the product availability based on the app config setting.\n * @param productAvailability - The product availability info.\n * @param inventoryLevel - App config setting for inventory level.\n * @returns Inventory level code value.\n */\nexport const getInventoryLevelCodeFromProductAvailability = (\n productAvailability: ProductInventoryAvailability,\n inventoryLevel?: InventoryLevels | undefined\n): InventoryLevelValues | undefined => {\n if (inventoryLevel === InventoryLevels.totalAvailable) {\n return productAvailability.TotalAvailableInventoryLevelCode as InventoryLevelValues | undefined;\n }\n if (inventoryLevel === InventoryLevels.physicalAvailable) {\n return productAvailability.PhysicalAvailableInventoryLevelCode as InventoryLevelValues | undefined;\n }\n return undefined;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport {\n InventoryAvailabilitySearchCriteria,\n ProductAvailableQuantity,\n ProductWarehouseInventoryAvailability,\n ProductWarehouseInventoryInformation,\n SearchArea\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { DeliveryMode, InventoryLevels, InventoryLevelValues, IProductInventoryInformation } from './product-inventory-information';\n\n/**\n * The function defines whether the inventory label should be displayed or not.\n * @param context - The action context.\n * @param inventoryCode - The inventory code.\n * @returns Boolean.\n */\nexport function displayLabelEnabled(context: IActionContext, inventoryCode?: string): boolean {\n if (!inventoryCode) {\n return false;\n }\n\n // eslint-disable-next-line default-case\n switch (context.requestContext.app.config.inventoryRanges) {\n case 'lowAndOutofStock':\n if (inventoryCode !== InventoryLevelValues.available) {\n return true;\n }\n break;\n case 'outOfStock':\n if (inventoryCode === InventoryLevelValues.outOfStock) {\n return true;\n }\n break;\n case 'all':\n return true;\n }\n return false;\n}\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity.\n * @param context - The action context.\n * @param productsWarehouseInventory - The product warehouse inventory information.\n * @returns IProductInventoryInformation[].\n */\nexport function mapProductInventoryInformation(\n context: IActionContext,\n productsWarehouseInventory?: ProductWarehouseInventoryAvailability[]\n): IProductInventoryInformation[] {\n const productInventoryInformation: IProductInventoryInformation[] = [];\n\n if (context.requestContext.app.config.enableStockCheck === undefined || context.requestContext.app.config.enableStockCheck === false) {\n return productInventoryInformation;\n }\n\n if (productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for (const product of productsWarehouseInventory) {\n switch (context.requestContext.app.config.inventoryLevel) {\n case InventoryLevels.physicalAvailable:\n // Inventory level is enabled with Physical inventory\n const physicalProductMap = mapInventoryWithPhysicalBufferEnabled(context, product);\n if (physicalProductMap) {\n productInventoryInformation.push(physicalProductMap);\n }\n break;\n case InventoryLevels.totalAvailable:\n // Inventory level is enabled with Total available inventory\n const totalAvailableProductMap = mapInventoryWithTotalAvailableBufferEnabled(context, product);\n if (totalAvailableProductMap) {\n productInventoryInformation.push(totalAvailableProductMap);\n }\n break;\n default:\n // When inventory level is inventoryThreshold or not defined\n const productMap = mapInventoryWithThresholdEnabled(context, product);\n if (productMap) {\n productInventoryInformation.push(productMap);\n }\n break;\n }\n }\n }\n\n return productInventoryInformation;\n}\n\n/**\n * The function that maps inventory for when threshold is selected.\n * @param context - The action context.\n * @param productWarehouseInventoryAvailability - The product warehouse inventory information.\n * @returns IProductInventoryInformation.\n */\nexport function mapInventoryWithThresholdEnabled(\n context: IActionContext,\n productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability\n): IProductInventoryInformation | null {\n if (productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n const productQty = productWarehouseInventoryAvailability.TotalAvailable - context.requestContext.app.config.outOfStockThreshold;\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId,\n AvailableQuantity: productQty > 0 ? productQty : 0\n };\n\n return {\n ProductAvailableQuantity: productAvailableQuantity,\n IsProductAvailable: !!(productAvailableQuantity.AvailableQuantity && productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\n/**\n * The function that maps inventory for when physical available is selected.\n * @param context - The action context.\n * @param productWarehouseInventoryAvailability - The product warehouse inventory information.\n * @returns IProductInventoryInformation.\n */\nexport function mapInventoryWithPhysicalBufferEnabled(\n context: IActionContext,\n productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability\n): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(context, productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode);\n\n if (productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS,\n // if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n let productQuantity: number | undefined = 0;\n if (productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode !== InventoryLevelValues.outOfStock) {\n productQuantity =\n productWarehouseInventoryAvailability.MaximumPurchasablePhysicalAvailableQuantity ??\n productWarehouseInventoryAvailability.PhysicalAvailable;\n }\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId,\n AvailableQuantity: productQuantity\n };\n return {\n ProductAvailableQuantity: productAvailableQuantity,\n StockLevelCode: shouldRenderLabel ? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode : undefined,\n StockLevelLabel: shouldRenderLabel ? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelLabel : undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity !== undefined && productAvailableQuantity.AvailableQuantity > 0,\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\n/**\n * The function that maps inventory for when total available is selected.\n * @param context - The action context.\n * @param productWarehouseInventoryAvailability - The product warehouse inventory information.\n * @returns IProductInventoryInformation.\n */\nexport function mapInventoryWithTotalAvailableBufferEnabled(\n context: IActionContext,\n productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability\n): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(context, productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode);\n if (productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS,\n // if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n let productQuantity: number | undefined = 0;\n if (productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode !== InventoryLevelValues.outOfStock) {\n productQuantity =\n productWarehouseInventoryAvailability.MaximumPurchasableTotalAvailableQuantity ??\n productWarehouseInventoryAvailability.TotalAvailable;\n }\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId,\n AvailableQuantity: productQuantity\n };\n return {\n ProductAvailableQuantity: productAvailableQuantity,\n StockLevelCode: shouldRenderLabel ? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode : undefined,\n StockLevelLabel: shouldRenderLabel ? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelLabel : undefined,\n // eslint-disable-next-line eqeqeq\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && productAvailableQuantity.AvailableQuantity > 0,\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\n/**\n * The function created a InventoryAvailabilitySearchCriteria object for getEstimatedAvailability API.\n * @param context - The action context.\n * @returns Boolean.\n */\nexport function isAggregatedInventory(context: IActionContext): boolean {\n // If warehouse aggregated is true then query inventory from multiple warehouses\n // else query from single warehouse\n return (\n (context.requestContext.app.config.inventoryLevel === InventoryLevels.totalAvailable ||\n context.requestContext.app.config.inventoryLevel === InventoryLevels.physicalAvailable) &&\n context.requestContext.app.config.warehouseAggregation === 'multiple'\n );\n}\n\n/**\n * The function created a InventoryAvailabilitySearchCriteria object for getEstimatedAvailability API.\n * @param context - The action context.\n * @param productWarehouseInventoryInformation - The product ware house inventory information.\n * @returns ProductWarehouseInventoryInformation.\n */\nexport function mapAggregatedProductInventoryInformation(\n context: IActionContext,\n productWarehouseInventoryInformation: ProductWarehouseInventoryInformation\n): IProductInventoryInformation[] {\n if (isAggregatedInventory(context)) {\n const productInventoryMapping:\n | ProductWarehouseInventoryAvailability[]\n | undefined = productWarehouseInventoryInformation.AggregatedProductInventoryAvailabilities?.map(product => {\n return {\n DataAreaId: product.DataAreaId,\n MaximumPurchasablePhysicalAvailableQuantity:\n product.MaximumPurchasablePhysicalAvailableQuantity ?? product.PhysicalAvailableQuantity,\n MaximumPurchasableTotalAvailableQuantity:\n product.MaximumPurchasableTotalAvailableQuantity ?? product.TotalAvailableQuantity,\n ProductId: product.ProductId,\n PhysicalAvailable: product.PhysicalAvailableQuantity,\n PhysicalAvailableInventoryLevelCode: product.PhysicalAvailableInventoryLevelCode,\n PhysicalAvailableInventoryLevelLabel: product.PhysicalAvailableInventoryLevelLabel,\n TotalAvailable: product.TotalAvailableQuantity,\n TotalAvailableInventoryLevelCode: product.TotalAvailableInventoryLevelCode,\n TotalAvailableInventoryLevelLabel: product.TotalAvailableInventoryLevelLabel\n };\n });\n return mapProductInventoryInformation(context, productInventoryMapping);\n }\n\n return mapProductInventoryInformation(context, productWarehouseInventoryInformation.ProductWarehouseInventoryAvailabilities);\n}\n\n/**\n * The function created a InventoryAvailabilitySearchCriteria object for getEstimatedAvailability API.\n * @param context - The action context.\n * @param productIds - The product id collection.\n * @param isDefaultWareHouse - Flag to define whether inventory is from default warehouse or not.\n * @param isFilterByChannelFulfillmentGroup - Filter by fulfillment group.\n * @param searchArea - The search area.\n * @param defaultDeliveryMode - The delivery mode.\n * @returns InventoryAvailabilitySearchCriteria.\n */\nexport function createInventoryAvailabilitySearchCriteria(\n context: IActionContext,\n productIds: number[],\n isDefaultWareHouse?: boolean,\n isFilterByChannelFulfillmentGroup?: boolean,\n searchArea?: SearchArea,\n defaultDeliveryMode?: DeliveryMode\n): InventoryAvailabilitySearchCriteria {\n const salesUnitType = 2;\n const deliveryMode = defaultDeliveryMode ? defaultDeliveryMode : DeliveryMode.shipping;\n\n const inventoryAvailabilitySearchCriteria: InventoryAvailabilitySearchCriteria = {\n ProductIds: productIds,\n QuantityUnitTypeValue: salesUnitType,\n SearchArea: searchArea\n };\n\n if (isAggregatedInventory(context)) {\n inventoryAvailabilitySearchCriteria.FilterByChannelFulfillmentGroup = true;\n inventoryAvailabilitySearchCriteria.DeliveryModeTypeFilterValue = deliveryMode;\n } else {\n inventoryAvailabilitySearchCriteria.DefaultWarehouseOnly = isDefaultWareHouse;\n inventoryAvailabilitySearchCriteria.FilterByChannelFulfillmentGroup = isFilterByChannelFulfillmentGroup;\n }\n\n return inventoryAvailabilitySearchCriteria;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PromiseBodyWrapper } from './base-promise-queue';\nimport { PromiseQueue } from './promise-queue';\n\nexport enum FinitePromiseQueueError {\n InvalidMaxQueueLengthPassed = 'Invalid maxQueueLength value passed to FinitePromiseQueue. maxQueueLength should be more or equal to 2.',\n ProcessWasDiscardedFromTheQueue = 'The process was discarded from FinitePromiseQueue.'\n}\n\n/**\n * Represents a FIFO queue over promises with a limited number of elements waiting for execution.\n * @remark\n * In case the queue reaches the limit,\n * before adding a new element the queue discards the oldest added element which is waiting to be processed.\n * Does not discard elements which are in progress under execution.\n * The discarded element will not be processed and executed.\n * @author Bohdan Yevchenko \n */\nexport class FinitePromiseQueue extends PromiseQueue {\n /**\n * @see constructor\n */\n private readonly _maxQueueLength: number;\n\n /**\n * Initializes the queue with the given limit.\n * @param {number} maxQueueLength\n * Defines the limit of maximum number of elements in the queue.\n * @remarks Includes both the number of elements waiting for the execution\n * and the element processed by the queue at the moment (in case there is some).\n * Value can't be less than 2.\n */\n public constructor(maxQueueLength: number) {\n if (maxQueueLength < 2) {\n throw new Error(FinitePromiseQueueError.InvalidMaxQueueLengthPassed);\n }\n\n super();\n this._maxQueueLength = maxQueueLength;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @remarks In case the queue has reached the limit, also discards the oldest added element.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n let totalElementsCount = this._queue.length;\n\n // If queue hasn't finished processing an element,\n // consider this element as pending.\n if (this._isBusy) {\n ++totalElementsCount;\n }\n\n // Discards the oldest added element from the queue to meet the given limitations.\n // The very first element in the queue is considered as oldest added.\n // Can't discard the element which is under execution as the promise can't be cancelled.\n if (totalElementsCount === this._maxQueueLength) {\n const element = this._queue.shift();\n if (element) {\n element.reject(FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue);\n }\n }\n\n return super.enqueue(promiseBody);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPromiseQueue, PromiseBodyWrapper, PromiseRejectType, PromiseResolveType } from './base-promise-queue';\n\n/**\n * Represents an inner node which is stored in a promise queue.\n * Used internally in the PromiseQueue implementation.\n * @author Bohdan Yevchenko \n */\nclass PromiseQueueElement {\n /**\n * The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n */\n public readonly body: PromiseBodyWrapper;\n\n /**\n * Method that resolves the promise after the promise from the body is resolved.\n */\n public readonly resolve: PromiseResolveType;\n\n /**\n * Method that rejects the promise after the promise from the body is rejected.\n */\n public readonly reject: PromiseRejectType;\n\n /**\n * Initializes queue element with the given data.\n * @param {PromiseBodyWrapper} body The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n * @param {PromiseResolveType} resolve Method that resolves the promise after the promise from the body is resolved.\n * @param {PromiseRejectType} reject Method that rejects the promise after the promise from the body is rejected.\n */\n public constructor(\n body: PromiseBodyWrapper,\n resolve: PromiseResolveType,\n reject: PromiseRejectType\n ) {\n this.body = body;\n this.resolve = resolve;\n this.reject = reject;\n }\n}\n\n/**\n * Represents a FIFO basic queue over promises.\n * @author Bohdan Yevchenko \n */\nexport class PromiseQueue implements IPromiseQueue {\n /**\n * A list of promises waiting for execution.\n */\n protected readonly _queue: PromiseQueueElement[];\n\n /**\n * Defines whether the queue is processing some element.\n */\n protected _isBusy: boolean;\n\n /**\n * Defines whether the queue can start processing new element.\n */\n private get _canProcess(): boolean {\n return !this._isBusy && this._queue.length > 0;\n }\n\n /**\n * Creates a new instance of PromiseQueue.\n */\n public constructor() {\n this._queue = [];\n this._isBusy = false;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n return new Promise(async (resolve, reject) => {\n this._queue.push(new PromiseQueueElement(promiseBody, resolve, reject));\n await this._dequeue();\n });\n }\n\n /**\n * If the queue is free, starts processing the first element in the queue and waits until all the elements are processed.\n * Otherwise (if busy or has no elements to process), does nothing.\n */\n private async _dequeue(): Promise {\n // Skip if queue is not able to process any elements.\n if (!this._canProcess) {\n return;\n }\n\n // Lock queue to prevent parallel execution.\n this._isBusy = true;\n\n // Retrieve an element from the waiting queue and start processing.\n const element: PromiseQueueElement = this._queue.shift()!;\n await this._processElement(element);\n\n // Continue executing the subsequent queue elements.\n await this._processNext();\n }\n\n /**\n * Executes the given wrapper over the promise and calls initial resolve/reject correspondingly.\n * @param {PromiseQueueElement} element The queue element which should be processed now.\n */\n private async _processElement(element: PromiseQueueElement): Promise {\n try {\n await element\n .body()\n .then(element.resolve)\n .catch(element.reject);\n } catch (error) {\n element.reject(error);\n }\n }\n\n /**\n * Unlocks the queue and tries to process the next element in the queue.\n */\n private async _processNext(): Promise {\n this._isBusy = false;\n await this._dequeue();\n }\n}\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * Namespace which provides functionality for GUID.\n */\nexport namespace Guid {\n export function generateGuid(): string {\n return uuidv4();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Guid as _guid } from './guid';\n\nexport namespace Random {\n export import Guid = _guid;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Regular expressions to validate emails.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class EmailRegex {\n /**\n * Represents a HTML5 Validation Regex.\n *\n * A valid email address is a string that matches the email production of the following ABNF, the character set for which is Unicode.\n * This ABNF implements the extensions described in RFC 1123.\n *\n * For more info: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address.\n */\n public static readonly html5EmailRegex = /^[a-zA-Z0-9.!#$%&'*+=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z])?)+$/;\n\n /**\n * Returns a default regex which should be used for most email validation cases.\n *\n * As of now, the default regex is HTML5 email regex standard.\n * @see EmailRegex.html5EmailRegex - The regex which is set to be default right now.\n *\n * @returns Regular expression for email validation.\n */\n public static get defaultRegex(): RegExp {\n return EmailRegex.html5EmailRegex;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Regular expressions to validate passwords.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class PasswordRegex {\n // eslint-disable-next-line max-len\n public static readonly defaultRegex = /^((?=.*[a-z])(?=.*[A-Z])(?=.*\\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*\\d)(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*\\d)(?=.*[^A-Za-z0-9]))([A-Za-z\\d@#$%^&*\\-_+=[\\]{}|\\\\:',?/`~'();!]|\\.(?!@)){8,16}$/;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Regular expressions to validate phone number.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class PhoneRegex {\n public static readonly defaultRegex = '^$|^[- +()]*[0-9][- +()0-9]*$';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, {\n generateImageUrl as generateImageUrlFromSdk,\n IAny,\n ICommerceApiSettings,\n ICoreContext,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport {\n AsyncResult,\n AttributeValue,\n CartLine,\n ChannelInventoryConfiguration,\n CommerceListLine,\n ProductDimension,\n ProductDimensionType,\n ProductSearchResult,\n QueryResultSettings,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ProductDetailsCriteria } from '../get-full-products';\nimport { ArrayExtensions, StringExtensions } from './extensions';\nimport { parseSearchData } from './input-data-parser';\nimport { InventoryLevels } from './product-inventory-information';\n\nexport const wrapInResolvedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'SUCCESS',\n result: input,\n metadata: {}\n };\n};\n\nexport const wrapInRejectedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'FAILED',\n result: input,\n metadata: {}\n };\n};\n\nexport const buildQueryResultSettings = (inputData: ICreateActionContext, IGeneric>): QueryResultSettings => {\n try {\n const searchInputData = parseSearchData(inputData);\n const search = searchInputData.q;\n if (!search) {\n throw new Error('Query string ?q={searchText} is needed for search actions.');\n }\n const top = (searchInputData.maxItems && Number(searchInputData.maxItems)) || searchInputData.top;\n return { Paging: { Top: top, Skip: searchInputData.skip } };\n } catch {\n return {};\n }\n};\n\n/**\n * Utility function to extract the active productId in the following priority:\n * First query param (productId), then UrlToken (itemId), then module config.\n * @param inputData - The Action Input data.\n * @returns Productid or undefined.\n */\nexport const getSelectedProductIdFromActionInput = (inputData: ICreateActionContext>): string | undefined => {\n const context = inputData.requestContext;\n if (context.query?.productId) {\n return context.query.productId;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Exsiting code.\n } else if (\n context.urlTokens &&\n inputData.requestContext.urlTokens.itemId &&\n inputData.requestContext.urlTokens.pageType === 'Product'\n ) {\n return context.urlTokens.itemId;\n } else if (inputData && inputData.config && inputData.config.productId) {\n return inputData.config.productId;\n }\n return undefined;\n};\n\n/**\n * Generates a Image URL based on data return from retail server.\n * @param imageUrl The image url returned by Retail Server.\n * @param ctx The request context.\n * @param apiSettings\n */\nexport const generateImageUrl = (imageUrl: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n return generateImageUrlFromSdk(apiSettings, imageUrl);\n};\n\n/**\n * Represents app configuration for dimensions.\n */\nexport interface IDimensionsConfig {\n dimensionsAsSwatchType?: DimensionTypes[];\n dimensionsInProductCard?: DimensionTypes[];\n inventoryLevel?: InventoryLevels;\n dimensionToPreSelectInProductCard?: DimensionTypes;\n enableStockCheck?: boolean;\n}\n\n/**\n * Represents app configuration for dimensions.\n */\nexport interface IDimensionsApp {\n config: IDimensionsConfig;\n}\n\n/**\n * Represents product dimension types.\n */\nexport enum DimensionTypes {\n none = 'none',\n color = 'color',\n configuration = 'configuration',\n size = 'size',\n style = 'style'\n}\n\n/**\n * Defines display configuration types.\n */\nexport enum DimensionSwatchDisplayTypes {\n default = 'default',\n productCard = 'productCard'\n}\n\n/**\n * Checks if rendering the particular dimensions is allowed.\n * @param dimensionType - Dimension to be displayed.\n * @param context - Core application context.\n * @param displayType - The swatch location, the component from which it comes from.\n * @returns Updates the state with new product page url.\n */\nexport const checkIfShouldDisplayAsSwatch = (\n dimensionType: DimensionTypes,\n context: ICoreContext,\n displayType: DimensionSwatchDisplayTypes = DimensionSwatchDisplayTypes.default\n): boolean => {\n // Additional checks for the product card since it has a separate config setting.\n if (displayType === DimensionSwatchDisplayTypes.productCard) {\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n if (\n !ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) ||\n dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) ||\n !dimensionsToDisplayOnProductCard.includes(dimensionType)\n ) {\n return false;\n }\n }\n\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n return (\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none) &&\n dimensionsToDisplayAsSwatch.includes(dimensionType)\n );\n};\n\n/**\n * Generates an image URL for a swatch.\n * @param imageUrl - The image url returned by Retail Server.\n * @param apiSettings - The request context.\n * @returns Full image url.\n */\nexport const generateSwatchImageUrl = (imageUrl: string, apiSettings: ICommerceApiSettings): string => {\n if (imageUrl.startsWith('http')) {\n return imageUrl;\n }\n\n return apiSettings.baseImageUrl + encodeURIComponent(imageUrl);\n};\n\n/**\n * Generates a Image URL for a product based on data return from retail server.\n * @param product The Product returned by Retail Server.\n * @param ctx The request context.\n * @param apiSettings\n */\nexport const generateProductImageUrl = (\n product: SimpleProduct | ProductSearchResult,\n apiSettings: ICommerceApiSettings\n): string | undefined => {\n return generateImageUrl(product.PrimaryImageUrl, apiSettings);\n};\n\n/**\n * Creates a CartLine object from the passed data.\n * @param product The product.\n * @param quantity The quantity.\n * @param catalogId The catalog.\n */\nexport const buildCartLine = (product: SimpleProduct, quantity?: number, catalogId?: number): CartLine => {\n return {\n CatalogId: catalogId || 0,\n Description: product.Description,\n\n // TODO: Investigate this value and what it represents\n EntryMethodTypeValue: 3,\n ItemId: product.ItemId,\n ProductId: product.RecordId,\n Quantity: quantity || 1,\n TrackingId: '',\n UnitOfMeasureSymbol: product.DefaultUnitOfMeasure\n };\n};\n\n/**\n * Creates a CommerceListLine (also know as WishlistLine) object from the passed data.\n * @param productId The RecordId of the Product to be added.\n * @param customerId The account number of the customer.\n * @param wishlistId The Id of the commerce list.\n */\nexport const buildWishlistLine = (productId: number, customerId: string, wishlistId: number): CommerceListLine => {\n return {\n CommerceListId: wishlistId,\n ProductId: productId,\n CustomerId: customerId\n };\n};\n\n/**\n * Utility function to prepare the product details criteria before getting full product:\n * @param inputData The Action Input data\n */\nexport const getProductDetailsCriteriaFromActionInput = (inputData: ICreateActionContext>): ProductDetailsCriteria => {\n if (inputData && inputData.config) {\n return {\n getPrice: !inputData.config.hidePrice,\n getRating: !inputData.config.hideRating\n };\n }\n return {\n getPrice: true,\n getRating: true\n };\n};\n\n/**\n * Transforms search text into the expected 'search terms' format, expected by refiner APIs.\n * @param searchText Free-form text used for searching for products or categories of products.\n */\nexport const ensureSearchTextIsFormedProperly = (searchText: string): string => {\n const prefix = searchText.startsWith(\"'\") ? '' : \"'\";\n const suffix = searchText.endsWith(\"'\") ? '' : \"'\";\n return `${prefix}${searchText}${suffix}`;\n};\n\nexport const ensureSafeSearchText = (searchText: string): string => {\n return searchText.replace(/[^\\d\\sA-Za-z]+/g, '');\n};\n\nexport const buildCacheKey = (base: string, apiSettings: ICommerceApiSettings, locale?: string): string => {\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}${locale ? `-${locale}` : ''}`;\n};\n\nexport const buildCacheKeyWithUrlTokens = (base: string, requestContext: IRequestContext): string => {\n const urlTokens = requestContext.urlTokens;\n const defaultCacheKey = buildCacheKey(base, requestContext.apiSettings, requestContext.locale);\n return urlTokens ? `${defaultCacheKey}-${urlTokens.itemId}-${urlTokens.recordId}-${urlTokens.pageType}` : defaultCacheKey;\n};\n\n/**\n * Generates a key from set of arguments as inputs.\n *\n * @param args Argument list of pivots to generate key from.\n * @param handler Handler function for null/undefined values.\n */\n\ntype TKeyTypes = string | number | boolean | null | undefined;\ninterface IGenerateKeyOptions {\n separator?: string;\n handler?(input: null | undefined): string;\n}\nexport const generateKey = (args: TKeyTypes[], options?: IGenerateKeyOptions): string => {\n const { handler, separator }: IGenerateKeyOptions = { ...{ separator: '-', handler: undefined }, ...(options || {}) };\n return args\n .map(arg => {\n if (arg === null || arg === undefined) {\n if (handler) {\n return handler(arg);\n }\n }\n return arg;\n })\n .join(separator);\n};\n\n/**\n * Gets the fall back image url for a variant image.\n * @param itemId Item id of a product.\n * @param apiSettings Api setting from request context.\n */\nexport const getFallbackImageUrl = (itemId: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (!itemId) {\n return '';\n }\n\n const parsedItemId = itemId.trim().split(' ')[0];\n\n const productUrl = `Products/${parsedItemId}_000_001.png`;\n return generateImageUrl(productUrl, apiSettings);\n};\n\n/**\n * Converts retail proxy product dimension type to display dimension type.\n * @param productDimensionType - Product dimension type from retail proxy.\n * @returns Local dimension type.\n */\nexport const convertProductDimensionTypeToDimensionTypes = (productDimensionType: ProductDimensionType): DimensionTypes => {\n switch (productDimensionType) {\n case ProductDimensionType.Color:\n return DimensionTypes.color;\n case ProductDimensionType.Configuration:\n return DimensionTypes.configuration;\n case ProductDimensionType.Size:\n return DimensionTypes.size;\n case ProductDimensionType.Style:\n return DimensionTypes.style;\n default:\n return DimensionTypes.none;\n }\n};\n\n/**\n * Converts display dimension type to retail proxy product dimension type.\n * @param dimensionType - Local dimension type.\n * @returns Product dimension type from retail proxy.\n */\nexport const convertDimensionTypeToProductDimensionType = (dimensionType: DimensionTypes): ProductDimensionType => {\n switch (dimensionType) {\n case DimensionTypes.color:\n return ProductDimensionType.Color;\n case DimensionTypes.configuration:\n return ProductDimensionType.Configuration;\n case DimensionTypes.size:\n return ProductDimensionType.Size;\n case DimensionTypes.style:\n return ProductDimensionType.Style;\n default:\n return ProductDimensionType.None;\n }\n};\n\n/**\n * Sets dimensions to url.\n * @param inputUrl - Url to update.\n * @param productDimensions - Dimensions to set.\n */\nexport const setDimensionValuesToQuery = (inputUrl: URL, productDimensions: ProductDimension[]): void => {\n for (const dimension of productDimensions) {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n inputUrl.searchParams.set(convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue), dimensionValue!);\n }\n }\n\n if (msdyn365Commerce.isBrowser) {\n window.history.replaceState(window.history.state, '', inputUrl.toString().replace(inputUrl.host, window.location.host));\n }\n};\n\n/**\n * Retrieves dimension value stored in url.\n * @param urlParameters - Url parameters.\n * @param productDimensionType - The dimension type to retrieve.\n * @returns Product dimension item.\n */\nconst parseDimensionFromUrl = (\n urlParameters: URLSearchParams,\n productDimensionType: ProductDimensionType\n): ProductDimension | undefined => {\n const localDimensionType = convertProductDimensionTypeToDimensionTypes(productDimensionType);\n const value = urlParameters.get(localDimensionType);\n if (!value) {\n return undefined;\n }\n return {\n DimensionTypeValue: productDimensionType,\n DimensionValue: {\n RecordId: 0,\n Value: value\n }\n };\n};\n\n/**\n * Retrieves all dimensions from URL.\n * @param urlParameters - Url parameters.\n * @returns Product dimensions stored in url.\n */\nconst parseDimensionsFromUrl = (urlParameters: URLSearchParams): ProductDimension[] => {\n const dimensionsToParse: ProductDimensionType[] = [\n ProductDimensionType.Color,\n ProductDimensionType.Configuration,\n ProductDimensionType.Size,\n ProductDimensionType.Style\n ];\n const parsedDimensions = dimensionsToParse.map(dimension => parseDimensionFromUrl(urlParameters, dimension));\n return ArrayExtensions.validValues(parsedDimensions);\n};\n\n/**\n * Utility function to extract the dimension values from input url querystring.\n * @param inputUrl - The request url.\n * @returns The selected dimension values.\n */\nexport const getDimensionValuesFromQuery = (inputUrl: URL): ProductDimension[] => {\n const urlWithIgnoredCase = new URL(inputUrl.toString().toLocaleLowerCase());\n const urlParameters = urlWithIgnoredCase.searchParams;\n const dimensions: ProductDimension[] = parseDimensionsFromUrl(urlParameters);\n return dimensions;\n};\n\n/**\n * Get attribute values by channel inventory configuration.\n * @param attributeValues - The attributeValues.\n * @param channelInventoryConfiguration - The channelInventoryConfiguration.\n * @returns The attributeValues filter by channel inventory configuration.\n */\nexport const getAttributeValuesByConfiguration = (\n attributeValues: AttributeValue[] | null,\n channelInventoryConfiguration: ChannelInventoryConfiguration | null\n): AttributeValue[] => {\n if (!attributeValues) {\n return [];\n }\n if (!channelInventoryConfiguration) {\n return attributeValues;\n }\n\n return attributeValues.filter(\n attribute =>\n attribute.RecordId !== channelInventoryConfiguration.InventoryProductAttributeRecordId &&\n attribute.RecordId !== channelInventoryConfiguration.ProductAvailabilitySortableAttributeRecordId\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { ArrayExtensions } from './extensions/array-extensions';\nimport { IProductInventoryInformation } from './product-inventory-information';\n\n/**\n * Cart line inventory validation result interface.\n */\nexport interface ICartLineInventoryValidationResult {\n /**\n * Define whether the cart lines inventory is valid across multiple cart lines.\n */\n readonly isValid: boolean;\n\n /**\n * Defines the list of product id with invalid inventory.\n */\n readonly productIdWithErrors: number[];\n}\n\n/**\n * Validates inventory across cart lines.\n * @param cartLines - The cart lines.\n * @param productAvailabilities - The product availability collection.\n * @param actionContext - The action context.\n * @param products - The products.\n * @param emailDeliveryModeCode - The emailDeliveryModeCode.\n * @returns True if all product quantity are available, false otherwise.\n */\n// eslint-disable-next-line complexity -- existing code.\nexport function validateCartLinesInventory(\n cartLines: CartLine[],\n productAvailabilities: IProductInventoryInformation[],\n actionContext: IActionContext,\n products?: SimpleProduct[],\n emailDeliveryModeCode?: string | undefined\n): ICartLineInventoryValidationResult {\n const cartLineMap = new Map();\n const defaultCartLineQuantity = 1;\n if (!actionContext.requestContext.app.config.enableStockCheck) {\n return {\n isValid: true,\n productIdWithErrors: []\n };\n }\n const productIdWithErrors = [];\n let isValid = true;\n\n if (ArrayExtensions.hasElements(cartLines) && ArrayExtensions.hasElements(productAvailabilities)) {\n // Consolidate products in different cart lines into single entry with the total cart quantity\n for (const cartLine of cartLines) {\n // Skip validation if is an invoice inline.\n if (cartLine.ProductId && !cartLine.IsInvoiceLine && !cartLine.IsGiftCardLine) {\n if (!cartLineMap.has(cartLine.ProductId)) {\n cartLineMap.set(cartLine.ProductId, cartLine.Quantity ?? defaultCartLineQuantity);\n } else {\n const cartLineTotal = cartLineMap.get(cartLine.ProductId) ?? 0;\n cartLineMap.delete(cartLine.ProductId);\n cartLineMap.set(cartLine.ProductId, cartLineTotal + (cartLine.Quantity ?? defaultCartLineQuantity));\n }\n }\n }\n\n // Hashing product availability object by product ID.\n const productAvailabilityMap = new Map();\n for (const productAvailability of productAvailabilities) {\n if (\n productAvailability.ProductAvailableQuantity.ProductId &&\n !productAvailabilityMap.has(productAvailability.ProductAvailableQuantity.ProductId)\n ) {\n productAvailabilityMap.set(productAvailability.ProductAvailableQuantity.ProductId, productAvailability);\n }\n }\n\n // Compare total quantity with the available quantity from the inventory API, also validate that the product is available.\n for (const productId of Array.from(cartLineMap.keys())) {\n const cartLineQty = cartLineMap.get(productId) ?? defaultCartLineQuantity;\n const productAvailability = productAvailabilityMap.get(productId);\n const availableQuantity = productAvailability?.ProductAvailableQuantity.AvailableQuantity ?? undefined;\n\n // If product is non-stocked or cartLine is electronic delivery, then no inventory check\n const cartLine = cartLines.find(line => line.ProductId === productId);\n const cartLineProduct = products?.find(product => product.RecordId === productId);\n let isStockedItem = true;\n if (cartLineProduct) {\n isStockedItem = !!cartLineProduct.Behavior?.IsStockedProduct;\n }\n const isEmailDelivery =\n cartLine?.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\n\n // If product is non-stocked or cartLine is electronic delivery, then no inventory check\n if (shouldSkipInventoryCheck) {\n continue;\n }\n if (!productAvailability?.IsProductAvailable || (availableQuantity && cartLineQty > availableQuantity)) {\n productIdWithErrors.push(productId);\n isValid = false;\n }\n }\n }\n return {\n isValid,\n productIdWithErrors\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, getCatalogId, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings, ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\nimport { toJS } from 'mobx';\n\nimport { hydrateRefinersFromUrl } from './url-utils';\n\n/**\n * Export listPageType.\n */\nexport type listPageType = 'Category' | 'Search' | 'Unknown';\n\n/**\n * Get include attributes from config.\n * @param inputData - ICreateActionContext.\n * @returns Boolean.\n */\nfunction getIncludeAttributes(inputData: ICreateActionContext, IGeneric>): boolean {\n if (inputData && inputData.config && inputData.config.includeAttributes !== undefined && inputData.config.includeAttributes === true) {\n return true;\n }\n return false;\n}\n\n/**\n * Get updateRefinerPanel from config.\n * @param inputData - ICreateActionContext.\n * @returns Boolean.\n */\nfunction getUpdateRefinerPanel(inputData: ICreateActionContext, IGeneric>): boolean {\n return !!inputData.config?.updateRefinerPanel;\n}\n\n/**\n * BaseCollection Action Input.\n */\nexport class BaseCollectionInput implements IActionInput {\n public pageType: listPageType;\n\n public category: number | undefined;\n\n public searchText: string | undefined;\n\n public refiners: ProductRefinerValue[];\n\n public queryResultSettings: IQueryResultSettings;\n\n public apiSettings: ICommerceApiSettings;\n\n public includeAttributes: boolean | undefined;\n\n public locale?: string;\n\n public isUpdateRefinerPanel?: boolean;\n\n public catalogId?: number;\n\n public constructor(\n pageType: listPageType,\n apiSettings: ICommerceApiSettings,\n queryResultSettings: IQueryResultSettings,\n refiners: ProductRefinerValue[],\n category: number | undefined,\n searchText: string | undefined,\n includeAttributes: boolean | undefined,\n isUpdateRefinerPanel?: boolean | undefined,\n locale?: string,\n catalogId?: number\n ) {\n this.pageType = pageType;\n this.apiSettings = apiSettings;\n this.category = category;\n this.searchText = searchText;\n this.queryResultSettings = queryResultSettings;\n this.refiners = refiners;\n this.includeAttributes = includeAttributes;\n this.isUpdateRefinerPanel = isUpdateRefinerPanel;\n this.locale = locale;\n this.catalogId = catalogId ?? 0;\n }\n\n public getCacheKey = () => {\n const queryResultSettings = {\n ...this.queryResultSettings.Paging,\n ...toJS(this.queryResultSettings.Sorting)\n };\n\n const cacheKey = buildCacheKey(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- disabling this as inputs can be undefined depending on page type\n `${this.pageType}-${this.locale}-${this.category || this.searchText}-${this.catalogId}-${this.refiners.map(\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands -- required\n refiner => `${refiner.RefinerRecordId + (refiner.LeftValueBoundString || '') + (refiner.RightValueBoundString || '')}-`\n )}-${convertToString(queryResultSettings)}`,\n this.apiSettings,\n this.locale\n );\n return cacheKey;\n };\n\n public getCacheObjectType = () => 'CollectionActionResult';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n// TODO: Create a data model here or import one to capture the response of the action\nexport interface IGetFullProductsByCollectionData {\n text: string;\n}\n\nexport type CollectionClassConstructor = new (\n pageType: listPageType,\n apiSettings: ICommerceApiSettings,\n queryResultSettings: IQueryResultSettings,\n refiners: ProductRefinerValue[],\n category: number | undefined,\n searchText: string | undefined,\n includeAttributes: boolean | undefined,\n isUpdateRefinerPanel?: boolean | undefined,\n locale?: string,\n catalogId?: number\n) => BaseCollectionInput;\n\n/**\n * TODO: Use this function to create the input required to make the action call.\n * @param args\n * @param inputClassConstuctor\n */\nexport const createBaseCollectionInput = (\n args: ICreateActionContext,\n inputClassConstuctor: CollectionClassConstructor\n): BaseCollectionInput => {\n const pageType =\n args.requestContext.urlTokens.pageType === 'Category' || (args.requestContext.query && args.requestContext.query.categoryId)\n ? 'Category'\n : 'Search';\n\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(args).QueryResultSettings;\n const queryRefiners = hydrateRefinersFromUrl(args.requestContext);\n const includeAttributes = getIncludeAttributes(args);\n const isUpdateRefinerPanel = getUpdateRefinerPanel(args);\n const catalogId = getCatalogId(args.requestContext);\n\n if (args.requestContext.query && args.requestContext.query.sorting) {\n queryResultSettings.Sorting = { Columns: JSON.parse(decodeURIComponent(args.requestContext.query.sorting)) };\n }\n\n if (pageType === 'Category') {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n +(args.requestContext.urlTokens.itemId || (args.requestContext.query && args.requestContext.query.categoryId) || 0),\n undefined,\n includeAttributes,\n isUpdateRefinerPanel,\n args.requestContext.locale,\n catalogId\n );\n } else if (pageType === 'Search' && args.requestContext.query && args.requestContext.query.q) {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n undefined,\n args.requestContext.query.q,\n includeAttributes,\n isUpdateRefinerPanel,\n args.requestContext.locale,\n catalogId\n );\n } else if (pageType === 'Search' && args.requestContext.query && args.requestContext.query.recommendation) {\n let searchText = '';\n if (args.requestContext.query.productId) {\n searchText = JSON.stringify({\n ProductId: args.requestContext.query.productId,\n Recommendation: args.requestContext.query.recommendation\n });\n } else {\n searchText = JSON.stringify({ Recommendation: args.requestContext.query.recommendation });\n }\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n undefined,\n searchText,\n includeAttributes,\n isUpdateRefinerPanel,\n args.requestContext.locale,\n catalogId\n );\n }\n\n throw new Error('[getFullProductsForCollection]Unable to create input');\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { BaseCollectionInput } from './base-collection-action';\nimport { getProductRefinerHierarchy } from './get-product-refiner-hierarchy';\n\n/**\n * InventoryInStockRefinerValue Input action.\n */\nexport class InventoryInStockRefinerValueInput extends BaseCollectionInput implements IActionInput {\n public inventoryProductAttributeRecordId: number;\n\n public constructor(input: BaseCollectionInput, inventoryProductAttributeRecordId: number = 0) {\n super(\n input.pageType,\n input.apiSettings,\n input.queryResultSettings,\n\n // Parameter - refiners\n [],\n\n // Parameter - category\n undefined,\n\n // Parameter - searchText\n '',\n\n // Parameter - includeAttributes\n false,\n\n // Parameter - isUpdateRefinerPanel\n false,\n\n // Parameter - locale\n undefined,\n input.catalogId\n );\n\n this.inventoryProductAttributeRecordId = inventoryProductAttributeRecordId;\n }\n\n /**\n * GetCacheKey.\n * @returns - Returns string.\n */\n public getCacheKey = (): string => buildCacheKey('RefinerList', this.apiSettings);\n\n /**\n * GetCacheObjectType.\n * @returns - Returns string.\n */\n public getCacheObjectType = (): string => 'RefinerList';\n\n /**\n * DataCacheType.\n * @returns - CacheType string.\n */\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Action method returns inventory in stock refiners.\n * @param input - InventoryInStockRefinerValueInput.\n * @param context - IActionContext.\n * @returns - Promise.\n */\nasync function action(input: InventoryInStockRefinerValueInput, context: IActionContext): Promise {\n const refiners = await getProductRefinerHierarchy(\n {\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.catalogId\n }\n },\n input.queryResultSettings,\n context\n );\n\n return (\n (input.inventoryProductAttributeRecordId !== 0 &&\n refiners.find(refiner => refiner.RecordId === input.inventoryProductAttributeRecordId)) ||\n null\n );\n}\n\n/**\n * Action.\n * @param id - Id.\n * @param action - Action.\n * @returns - Results.\n */\nexport const actionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-inventory-refiners',\n action: action as IAction\n});\n\nexport default actionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport {\n AsyncResult,\n ChannelInventoryConfiguration,\n ProductRefinerValue,\n ProductSearchCriteria,\n ProductSearchResult\n} from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getInventoryConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { ArrayExtensions, generateProductImageUrl, InventoryLevels } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { BaseCollectionInput, createBaseCollectionInput } from './base-collection-action';\nimport getInventoryRefinersAction, { InventoryInStockRefinerValueInput } from './get-inventory-refiners';\n\n/**\n * GetFullProductsByCollection Action Input.\n */\nexport class GetFullProductsByCollectionInput extends BaseCollectionInput implements IActionInput {\n /**\n * The cache object type.\n * @returns The cache object type.\n */\n public getCacheObjectType = (): string => 'FullProductSearchResult';\n\n /**\n * The data cache type.\n * @returns The data cache type.\n */\n public dataCacheType = (): CacheType => {\n if (\n this.pageType !== 'Category' ||\n (this.refiners && this.refiners.length > 0) ||\n (this.queryResultSettings &&\n this.queryResultSettings.Sorting &&\n this.queryResultSettings.Sorting.Columns &&\n this.queryResultSettings.Sorting.Columns.length > 0)\n ) {\n return 'request';\n }\n return 'application';\n };\n}\n\n/**\n * This setting defines inventory filtering options.\n */\nexport enum ProductListInventoryFilteringOptions {\n /**\n * Filter out all products out of stock.\n */\n HideOOS = 'hideOOS',\n\n /**\n * Sort products by availability, OOS goes last.\n */\n SortOOS = 'sortOOS',\n\n /**\n * No filtering selected.\n */\n Default = 'default'\n}\n\n/**\n * The full product search result with count interface.\n */\nexport interface IFullProductsSearchResultsWithCount {\n products: ProductSearchResult[];\n count: number;\n channelInventoryConfigurationId?: number;\n inventoryAwareSortableAttributeId?: number;\n}\n\n/**\n * CreateInput function which creates and actionInput used to fetch products for a list page.\n * @param args - The API arguments.\n * @returns IActionInput - The action input.\n */\nconst createInput = (args: ICreateActionContext<{ itemsPerPage: number; includedAttributes: boolean | undefined }>): IActionInput => {\n const input = createBaseCollectionInput(args, GetFullProductsByCollectionInput);\n\n // Set Top\n if (input.queryResultSettings.Paging && args.config) {\n input.queryResultSettings.Paging.Top = args.config.itemsPerPage || 1;\n }\n\n // Set Skip\n if (input.queryResultSettings.Paging && args.requestContext.query && args.requestContext.query.skip) {\n input.queryResultSettings.Paging.Skip = +args.requestContext.query.skip;\n }\n\n input.queryResultSettings.count = true;\n\n return input;\n};\n\n/**\n * Returns sorted products based on availability.\n * @param input - The GetFullProductsByCollectionInput input.\n * @param context - The context.\n * @param channelInventoryConfiguration - The channelInventoryConfiguration.\n * @returns Refiners.\n */\nasync function getInventoryInStockRefinerValueAsync(\n input: GetFullProductsByCollectionInput,\n context: IActionContext,\n channelInventoryConfiguration: ChannelInventoryConfiguration\n): Promise {\n const refinerInput = new InventoryInStockRefinerValueInput(input, channelInventoryConfiguration.InventoryProductAttributeRecordId);\n\n const inventoryRefiner = await getInventoryRefinersAction(refinerInput, context);\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- inventoryRefiner may be null\n return (\n inventoryRefiner?.Values.find(\n value =>\n value.LeftValueBoundString !== channelInventoryConfiguration.InventoryOutOfStockAttributeValueText &&\n value.RightValueBoundString !== channelInventoryConfiguration.InventoryOutOfStockAttributeValueText\n ) ?? null\n );\n}\n\n/**\n * Returns list of products based on inventory information.\n * @param productSearchResults - The products.\n * @param context - The context.\n * @param metadataCount - The metadata count.\n * @param channelInventoryConfiguration - The channel inventory configuration.\n * @returns List of product based on the inventory information.\n */\nexport async function returnProducts(\n productSearchResults: ProductSearchResult[],\n context: IActionContext,\n metadataCount: number | undefined,\n channelInventoryConfiguration?: ChannelInventoryConfiguration\n): Promise {\n const defaultProductCount: number = 0;\n\n const productSearchResultsWithImages = productSearchResults.map(productSearchResult => {\n const newImageUrl = generateProductImageUrl(productSearchResult, context.requestContext.apiSettings);\n\n if (newImageUrl) {\n productSearchResult.PrimaryImageUrl = newImageUrl;\n }\n\n return productSearchResult;\n });\n\n // If inventory level is threshold or inventory check is disabled then return the list of products without the inventory configuration\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n if (\n context.requestContext.app.config.inventoryLevel === InventoryLevels.threshold ||\n context.requestContext.app.config.enableStockCheck === false\n ) {\n return {\n products: productSearchResultsWithImages,\n count: metadataCount ?? defaultProductCount\n };\n }\n\n const inventoryConfiguration = channelInventoryConfiguration ?? (await getInventoryConfigurationAsync({ callerContext: context }));\n\n const mappedProducts = productSearchResultsWithImages.map(productSearchResult => {\n if (ArrayExtensions.hasElements(productSearchResult.AttributeValues)) {\n for (const element of productSearchResult.AttributeValues) {\n if (\n channelInventoryConfiguration &&\n element.RecordId !== undefined &&\n element.RecordId === channelInventoryConfiguration.InventoryProductAttributeRecordId &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n context.requestContext.app.config.inventoryRanges !== 'all' &&\n element.TextValue !== channelInventoryConfiguration.InventoryOutOfStockAttributeValueText\n ) {\n // If same RecordId then it means that is the Inventory attribute\n // Based on the inventory range (and filtering options), the inventory label will be displayed\n // If Inventory range is 'All' then in stock and out of stock labels are shown, else only OOS\n // if the text value is different that the channelInventoryConfiguration.InventoryOutOfStockAttributeValueText then is in stock\n element.TextValue = '';\n }\n }\n }\n\n return productSearchResult;\n });\n\n return {\n products: mappedProducts,\n count: metadataCount ?? defaultProductCount,\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- check config.\n channelInventoryConfigurationId: inventoryConfiguration ? inventoryConfiguration.InventoryProductAttributeRecordId : undefined,\n inventoryAwareSortableAttributeId: inventoryConfiguration\n ? inventoryConfiguration.ProductAvailabilitySortableAttributeRecordId\n : undefined\n };\n}\n\n/**\n * Action function to fetch products for a list page.\n * @param input - The input.\n * @param context - The context.\n * @returns IFullProductsSearchResultsWithCount - The full product search result with count.\n */\n// eslint-disable-next-line complexity -- ignore the complexity.\nasync function action(input: GetFullProductsByCollectionInput, context: IActionContext): Promise {\n let promise: AsyncResult;\n let searchProductId;\n const searchCriteriaInput: ProductSearchCriteria = {};\n searchCriteriaInput.Context = { ChannelId: context.requestContext.apiSettings.channelId, CatalogId: input.catalogId };\n searchCriteriaInput.Refinement = input.refiners;\n searchCriteriaInput.IncludeAttributes = input.includeAttributes;\n searchCriteriaInput.SkipVariantExpansion = true;\n const defaultNumber: number = 0;\n\n const channelInventoryConfiguration = await getInventoryConfigurationAsync({ callerContext: context });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n if (context.requestContext.app.config?.productListInventoryDisplay === ProductListInventoryFilteringOptions.HideOOS) {\n const refinerValue = await getInventoryInStockRefinerValueAsync(input, context, channelInventoryConfiguration);\n const isInventoryAvailableRefinerValueExist = searchCriteriaInput.Refinement.some(\n value => value.RefinerRecordId === refinerValue?.RefinerRecordId\n );\n if (!isInventoryAvailableRefinerValueExist && refinerValue) {\n searchCriteriaInput.Refinement.push(refinerValue);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n if (\n context.requestContext.app.config?.productListInventoryDisplay === ProductListInventoryFilteringOptions.SortOOS &&\n channelInventoryConfiguration.ProductAvailabilitySortableAttributeRecordId\n ) {\n input.queryResultSettings.Sorting = input.queryResultSettings.Sorting ?? {};\n input.queryResultSettings.Sorting.Columns = input.queryResultSettings.Sorting.Columns ?? [];\n const sortColumnName = `Attr_${channelInventoryConfiguration.ProductAvailabilitySortableAttributeRecordId}`;\n const isSortAttributeExist = input.queryResultSettings.Sorting.Columns.some(column => column.ColumnName === sortColumnName);\n if (!isSortAttributeExist) {\n input.queryResultSettings.Sorting.Columns.push({\n ColumnName: sortColumnName,\n IsDescending: true\n });\n }\n }\n\n if (input.pageType === 'Category' || context.requestContext.query?.categoryId) {\n if (input.category) {\n searchCriteriaInput.CategoryIds = [input.category || defaultNumber];\n promise = searchByCriteriaAsync(\n {\n callerContext: context,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n } else {\n throw new Error('[GetFullProductsForCollection]Category Page Detected, but no global categoryId found');\n }\n } else if (input.searchText && context.requestContext.query?.q) {\n searchCriteriaInput.SearchCondition = input.searchText;\n promise = searchByCriteriaAsync(\n {\n callerContext: context,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n } else if (input.searchText && context.requestContext.query && context.requestContext.query.recommendation) {\n const searchObject = JSON.parse(input.searchText);\n if (context.requestContext.query.productId) {\n searchProductId = Number(searchObject.ProductId);\n }\n if (Number.isNaN(searchProductId)) {\n throw new Error('Failed to cast search product id into a number.');\n } else if (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Existing code\n !searchObject.Recommendation\n ) {\n throw new Error('Failed to retrieve the Recommendation.');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- Existing code\n searchCriteriaInput.RecommendationListId = searchObject.Recommendation;\n if (searchProductId) {\n searchCriteriaInput.Ids = [searchProductId || defaultNumber];\n }\n promise = searchByCriteriaAsync(\n {\n callerContext: context,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n }\n } else {\n throw new Error('[GetFullProductsForCollection]Search Page Detected, but no q= or productId= query parameter found');\n }\n\n const productSearchResults = await promise;\n return returnProducts(productSearchResults, context, promise.metadata.count, channelInventoryConfiguration);\n}\n\nexport const actionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-full-products-by-collection',\n action: action as IAction,\n input: createInput\n});\n\nexport default actionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\n// TODO: import from commerce entities when available\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Name change will require many modifications\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Name change will require many modifications\nexport interface MappedSearchConfiguration {\n key: string;\n sortColumn: SortColumn;\n}\n\nexport const sortOptions = {\n sortByOptionRelevanceDesc: 'Ranking-Desc',\n sortByOptionRatingAsc: 'AverageRating-Asc',\n sortByOptionRatingDesc: 'AverageRating-Desc',\n sortByOptionNameAsc: 'Name-Asc',\n sortByOptionNameDesc: 'Name-Desc',\n sortByOptionPriceAsc: 'Price-Asc',\n sortByOptionPriceDesc: 'Price-Desc',\n sortByOptionBestSelling: 'BestSelling',\n sortByOptionNewScore: 'NewScore',\n sortByOptionTrendingScore: 'TrendingScore'\n};\n\n/**\n * ActionInput class for the get-mapped-search-configuration Data Action.\n */\nexport class MappedSearchInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('MappedSearchInput', this.apiSettings);\n\n public getCacheObjectType = () => 'MappedSearchInput';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Get a mapped search configuration that is easy to use for sorting.\n * @param input\n * @param ctx\n */\nexport async function getMappedSearchConfiguration(input: MappedSearchInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx }).then((searchConfiguration: SearchConfiguration) => {\n return (searchConfiguration.ProductSortColumns || [])\n .map((sortColumn: SortColumn) => {\n let key = '';\n if (sortColumn.ColumnName) {\n switch (sortColumn.ColumnName.toUpperCase()) {\n case 'NAME':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionNameDesc : sortOptions.sortByOptionNameAsc;\n break;\n case 'PRICE':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionPriceDesc : sortOptions.sortByOptionPriceAsc;\n break;\n case 'AVERAGERATING':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionRatingDesc : sortOptions.sortByOptionRatingAsc;\n break;\n case 'RANKING':\n key = sortOptions.sortByOptionRelevanceDesc;\n break;\n case 'BESTSELLINGSCORE':\n key = sortOptions.sortByOptionBestSelling;\n break;\n case 'NEWSCORE':\n key = sortOptions.sortByOptionNewScore;\n break;\n case 'TRENDINGSCORE':\n key = sortOptions.sortByOptionTrendingScore;\n break;\n default:\n }\n } else {\n ctx.telemetry.warning('[get-mapped-search-configuration] unknown search option');\n }\n if (key) {\n return {\n key,\n sortColumn\n };\n }\n return undefined;\n })\n .filter(Boolean);\n });\n}\n\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new MappedSearchInput(inputData.requestContext.apiSettings);\n};\n\nexport const getMappedSearchConfigurationDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-mapped-search-configuration',\n action: >getMappedSearchConfiguration,\n input: createInput\n});\n\nexport default getMappedSearchConfigurationDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings, ProductRefiner, ProductSearchCriteria } from '@msdyn365-commerce/retail-proxy';\nimport { getProductSearchRefinersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Uses Bulk refiner API to get refiners and child refiner values.\n * @param searchCriteria Product search criteria.\n * @param maxItems Max items.\n * @param queryResultSettings\n * @param ctx Action context.\n */\nexport async function getProductRefinerHierarchy(\n searchCriteria: ProductSearchCriteria,\n queryResultSettings: IQueryResultSettings,\n ctx: IActionContext\n): Promise {\n return getProductSearchRefinersAsync({ callerContext: ctx, queryResultSettings }, searchCriteria).then(\n (productRefiners: ProductRefiner[]) => {\n if (!productRefiners) {\n ctx.trace('[getRefinersByCriteriaAction] returned no refiners');\n return [];\n }\n\n const result = (productRefiners || []).map((productRefiner: ProductRefiner) => productRefiner);\n\n if (result.length === 0) {\n ctx.trace('[getRefinersByCriteriaAction] returned no IProductRefinerHierarchy objects');\n return [];\n }\n\n return result;\n }\n );\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { ProductSearchCriteria } from '@msdyn365-commerce/retail-proxy';\n\nimport { BaseCollectionInput, createBaseCollectionInput } from './base-collection-action';\nimport { getProductRefinerHierarchy } from './get-product-refiner-hierarchy';\n\n/**\n * Default Category/Product Id Values.\n */\nenum DefaultValues {\n defaultCategoryIdValue = 0,\n defaultProductIdValue = 0\n}\n\n/**\n * Refiners-by-Collection Input action.\n */\nexport class RefinersByCollectionInput extends BaseCollectionInput implements IActionInput {\n public getCacheObjectType = () => 'ProductRefiner';\n\n public dataCacheType = () => {\n if (\n this.pageType !== 'Category' ||\n (this.refiners && this.refiners.length > 0) ||\n (this.queryResultSettings &&\n this.queryResultSettings.Sorting &&\n this.queryResultSettings.Sorting.Columns &&\n this.queryResultSettings.Sorting.Columns.length > 0)\n ) {\n return 'request';\n }\n return 'application';\n };\n}\n\n/**\n * Create input method which creates an ActionInput for fetching list page refiners.\n * @param args\n */\nconst createInput = (args: ICreateActionContext): IActionInput => {\n return createBaseCollectionInput(args, RefinersByCollectionInput);\n};\n\n/**\n * Action method which fetches refiners for the given list page.\n * @param input\n * @param ctx\n */\nasync function action(input: RefinersByCollectionInput, ctx: IActionContext): Promise {\n let searchProductId;\n if (input.pageType === 'Category') {\n if (input.category) {\n return getProductRefinerHierarchy(\n {\n CategoryIds: [input.category || DefaultValues.defaultCategoryIdValue],\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.catalogId\n },\n Refinement: input.isUpdateRefinerPanel ? input.refiners : []\n },\n input.queryResultSettings,\n ctx\n );\n }\n throw new Error('[GetRefinersForCollection]Category Page Detected, but no global categoryId found');\n } else {\n if (input.searchText && ctx.requestContext.query && ctx.requestContext.query.q) {\n return getProductRefinerHierarchy(\n {\n SearchCondition: input.searchText,\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.catalogId\n },\n Refinement: input.isUpdateRefinerPanel ? input.refiners : []\n },\n input.queryResultSettings,\n ctx\n );\n }\n if (input.searchText && ctx.requestContext.query && ctx.requestContext.query.recommendation) {\n const searchObject = JSON.parse(input.searchText);\n if (ctx.requestContext.query.productId) {\n searchProductId = Number(searchObject.ProductId);\n }\n if (Number.isNaN(searchProductId)) {\n throw new Error('Failed to cast search product id into a number.');\n } else if (!searchObject.Recommendation) {\n throw new Error('Failed to retrieve the Recommendation.');\n } else {\n const searchCriteriaInput: ProductSearchCriteria = {};\n searchCriteriaInput.Context = {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.catalogId\n };\n searchCriteriaInput.Refinement = input.isUpdateRefinerPanel ? input.refiners : [];\n searchCriteriaInput.RecommendationListId = searchObject.Recommendation;\n if (searchProductId) {\n searchCriteriaInput.Ids = [searchProductId || DefaultValues.defaultProductIdValue];\n }\n return getProductRefinerHierarchy(searchCriteriaInput, input.queryResultSettings, ctx);\n }\n } else {\n throw new Error('[GetFullProductsForCollection]Search Page Detected, but no q= or productId= query parameter found');\n }\n }\n}\n\nexport const actionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-refiners-for-collection',\n action: >action,\n input: createInput\n});\n\nexport default actionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Refiner Compression:\n * Refiners contains a non-trivial amount of data that is required to successfully make\n * a refiner-based API call. To allow for deep-linking of refiners in the URL, refiner data\n * must be compressed so that URL max length is not exceeded. Refiners will be compressed into\n * the following array style index-based format:\n * [DataTypeValue, LeftValueBoundString, RefinerRecordId, RefinerSourceValue, RightValueBoundString, UnitText].\n */\nconst compressedRefinerKeys = [\n 'DataTypeValue',\n 'LeftValueBoundString',\n 'RefinerRecordId',\n 'RefinerSourceValue',\n 'RightValueBoundString',\n 'UnitText'\n];\n\n/**\n * Hydrates compressed refiner data from URL.\n * @param fullUrl The full URL of the page.\n * @param requestContext\n */\nexport const hydrateRefinersFromUrl = (requestContext: IRequestContext): ProductRefinerValue[] => {\n const compressedRefinerArray = parseQueryParam<(string | number)[][]>('refiners', requestContext);\n if (!compressedRefinerArray || compressedRefinerArray.length === 0) {\n return [];\n }\n\n return compressedRefinerArray\n .map(compressedRefiner => {\n try {\n const parsedRefiner: ProductRefinerValue = {};\n compressedRefinerKeys.forEach((refinerKey, index) => {\n parsedRefiner[refinerKey] = compressedRefiner[index];\n });\n return parsedRefiner;\n } catch {\n return undefined;\n }\n })\n .filter(Boolean);\n};\n\n/**\n * Compressed a list of refiners for use in URLs.\n * @param refiners The uncompressed refiners.\n */\nexport const compressRefiners = (refiners: ProductRefinerValue[]) => {\n const compressedRefiners: (string | number)[][] = [];\n\n refiners.forEach(refiner => {\n const compressedRefiner: (string | number)[] = [];\n compressedRefinerKeys.forEach(refinerKey => {\n compressedRefiner.push(refiner[refinerKey]);\n });\n compressedRefiners.push(compressedRefiner);\n });\n\n return compressedRefiners;\n};\n\n/**\n * Method which creates a URL contiaining serialized active refiners.\n * @param fullUrl The Current URL of the page.\n * @param refiners The refiners which should be added to the URL.\n * @param sortingColumns\n * @param skipCount\n */\nexport const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\n // Refiner Change flow\n if (refiners !== undefined) {\n if (refiners.length === 0) {\n fullUrl.searchParams.delete('refiners');\n } else {\n const sortedRefiners = refiners.sort((first, second) =>\n first.RefinerRecordId && second.RefinerRecordId && first.RefinerRecordId > second.RefinerRecordId ? 1 : -1\n );\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(sortedRefiners)));\n }\n\n // Adding or removing a refiner means we want to always load page 1\n fullUrl.searchParams.delete('skip');\n return fullUrl.href;\n }\n\n if (sortingColumns !== undefined) {\n if (sortingColumns.length === 0) {\n fullUrl.searchParams.delete('sorting');\n } else {\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\n }\n\n // Changing the sort means always load page 1\n fullUrl.searchParams.delete('skip');\n return fullUrl.href;\n }\n\n if (skipCount) {\n fullUrl.searchParams.set('skip', skipCount.toString());\n }\n\n return fullUrl.href;\n};\n\n/**\n * Parses a query param from the query object of the request context.\n * @param key The query parameter key.\n * @param requestContext The request context.\n */\nexport const parseQueryParam = (key: string, requestContext: IRequestContext): T | null => {\n if (requestContext.query && requestContext.query[key]) {\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\n }\n return null;\n};\n\n/**\n * Gets the current URL of the page from the request context.\n * @param requestContext The request context.\n */\nexport const getCurrentUrl = (requestContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (requestContext.url.requestUrl.href) {\n return new URL(requestContext.url.requestUrl.href);\n }\n return new URL((requestContext.url.requestUrl));\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductRefinerValue, ProductSearchResult, SimpleProduct, SortingInfo } from '@msdyn365-commerce/retail-proxy';\nimport { observable } from 'mobx';\n\nimport { listPageType } from './actions';\n\n/**\n * ListPageState class.\n */\nexport class ListPageState {\n @observable public activeFilters: ProductRefinerValue[] | null = null;\n\n @observable public activeProducts: ProductSearchResult[] = [];\n\n @observable public sortingCritera: SortingInfo | null = null;\n\n @observable public currentPageNumber: number | null = null;\n\n @observable public refiners: IProductRefinerHierarchy[] | null = null;\n\n @observable public totalProductCount: number | undefined;\n\n @observable public pageSize: number = 10;\n\n @observable public pageType: listPageType = 'Unknown';\n\n @observable public featureProduct: SimpleProduct | null = null;\n\n @observable public productPrices: ProductPrice[] | undefined = [];\n}\n\n/**\n * ListPageStateInput - action input.\n */\nexport class ListPageStateInput implements IActionInput {\n public getCacheKey = () => 'ListPageState';\n\n public getCacheObjectType = () => 'ListPageState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function listPageStateAction(input: ListPageStateInput, ctx: IActionContext): Promise {\n return new ListPageState();\n}\n\n/**\n * Create new input for create action.\n * @param inputData\n */\nexport const createListPageInput = (inputData: ICreateActionContext>): IActionInput => {\n return new ListPageStateInput();\n};\n\n/**\n * ListPageState - create action.\n */\nexport default createObservableDataAction({\n action: >listPageStateAction,\n input: createListPageInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { SearchState } from './search-state';\n\nexport function createSearchStateInput(result: SearchState): GenericInput {\n return new GenericInput('searchState', result, 'SearchState');\n}\n\nconst createsearchStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createSearchStateInput({ searchText: '' });\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createsearchStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IActiveTabState } from './tab-state';\n\nexport function createTabStateInput(result: IActiveTabState): GenericInput {\n return new GenericInput('activeTabState', result, 'IActiveTabState');\n}\n\nconst createTabStateInputInternal = (): IActionInput => {\n return createTabStateInput({});\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createTabStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for getActiveWishlistItems data action.\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => 'ActiveWishlistItems';\n\n public getCacheObjectType = () => 'ActiveWishlistItems';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if (ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n null\n );\n\n if (wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n wishlists.forEach(currWishlist => {\n if (currWishlist.CommerceListLines) {\n currWishlist.CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if (commerceListLine.ProductId) {\n productInputs.push(\n new FullProductInput(\n commerceListLine.ProductId,\n ctx.requestContext.apiSettings,\n getProductDetailsCriteriaFromActionInput(ctx),\n ctx.requestContext\n )\n );\n }\n });\n }\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n }\n return [];\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[getActiveWishlistItems]Unable to hydrate cart with product information');\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n }\n ctx.trace('No productIds found for wishlist');\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport const getActiveWishlistItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n\nexport default getActiveWishlistItemsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n buildCacheKey,\n createInventoryAvailabilitySearchCriteria,\n IProductInventoryInformation,\n mapAggregatedProductInventoryInformation\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ActiveWishlistInput, getActiveWishlistItems } from './get-items-in-wishlists';\n\n/**\n * Input class for availabilities for items in wishlist.\n */\nexport class ProductAvailabilitiesForWishlistItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveWishlistItemsAvailability', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveWishlistItemsAvailability';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForWishlistItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get wishlist which will be cached the then finds the quantities for each item.\n * @param input\n * @param ctx\n */\nexport async function getAvailabilitiesForWishlistItems(\n input: ProductAvailabilitiesForWishlistItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForWishlistItems]No valid Input was provided, failing');\n }\n\n const products = await getActiveWishlistItems(new ActiveWishlistInput(), ctx);\n\n if (!products) {\n ctx.trace('[getAvailabilitiesForWishlistItems] Not able to get products in wishlist');\n return [];\n }\n\n let validProducts: number[] = [];\n\n for (const product of products) {\n if (\n product.ProductDetails &&\n product.ProductDetails.RecordId &&\n product.ProductDetails.ItemTypeValue !== ReleasedProductType.Service\n ) {\n validProducts.push(product.ProductDetails.RecordId);\n }\n }\n\n if (validProducts.length === 0) {\n ctx.trace('[getAvailabilitiesForWishlistItems] No products in wishlist');\n return [];\n }\n\n validProducts = ArrayExtensions.unique(validProducts);\n const searchCriteria = createInventoryAvailabilitySearchCriteria(ctx, validProducts, true);\n const productAvailabilities = await getEstimatedAvailabilityAsync({ callerContext: ctx }, searchCriteria);\n\n if (productAvailabilities && productAvailabilities) {\n return mapAggregatedProductInventoryInformation(ctx, productAvailabilities);\n }\n\n ctx.trace('[getAvailabilitiesForWishlistItems] unable to get availabilities for product');\n return [];\n}\n\nexport const getAvailabilitiesForWishlistItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-product-availabilities-wishlist-items',\n action: >getAvailabilitiesForWishlistItems,\n input: createInput\n});\n\nexport default getAvailabilitiesForWishlistItemsDataAction;\n","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { BusinessPartnerUser, AccountStatementRequest, BusinessPartnerOperationRequest } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function businessPartnerUsersQuery(b2BUserId?: string): DataServiceQuery {\n var key = (b2BUserId) ? { B2BUserId: b2BUserId } : null;\n return new DataServiceQuery(\"BusinessPartnerUsers\", \"BusinessPartnerUser\", \"BusinessPartnerUserClass\", key);\n }\n \n export function createCreateInput(entity: BusinessPartnerUser): IDataServiceRequest {\n return businessPartnerUsersQuery().create(entity);\n }\n\n export function createBusinessPartnerUserAsync(context: IContext, entity: BusinessPartnerUser): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: BusinessPartnerUser): IDataServiceRequest {\n return businessPartnerUsersQuery(entity.B2BUserId).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: BusinessPartnerUser): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: BusinessPartnerUser): IDataServiceRequest {\n return businessPartnerUsersQuery(entity.B2BUserId).delete();\n }\n\n export function deleteAsync(context: IContext, entity: BusinessPartnerUser): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(b2BUserId: string): IDataServiceRequest {\n return businessPartnerUsersQuery(b2BUserId).read();\n }\n\n export function readAsync(context: IContext, b2BUserId: string): AsyncResult {\n const request = createReadAsync(b2BUserId);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return businessPartnerUsersQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createRequestAccountStatementInput(b2BUserId: string, accountStatementParameters?: AccountStatementRequest | null): IDataServiceRequest { \n const query = businessPartnerUsersQuery(b2BUserId);\n return query.createDataServiceRequestForOperation('RequestAccountStatement', true, '', '', {bypassCache: 'get', returnEntity: ''}, {accountStatementParameters: accountStatementParameters });\n } \n \n export function requestAccountStatementAsync(context: IContext, b2BUserId: string, accountStatementParameters?: AccountStatementRequest | null):AsyncResult {\n const request = createRequestAccountStatementInput(b2BUserId, accountStatementParameters);\n return executeAction(request, context);\n } \n \n export function createRequestInvoiceCopyInput(b2BUserId: string, invoiceId: string | null, deliveryType: number): IDataServiceRequest { \n const query = businessPartnerUsersQuery(b2BUserId);\n return query.createDataServiceRequestForOperation('RequestInvoiceCopy', true, '', '', {bypassCache: 'get', returnEntity: ''}, {invoiceId: invoiceId, deliveryType: deliveryType });\n } \n \n export function requestInvoiceCopyAsync(context: IContext, b2BUserId: string, invoiceId: string | null, deliveryType: number):AsyncResult {\n const request = createRequestInvoiceCopyInput(b2BUserId, invoiceId, deliveryType);\n return executeAction(request, context);\n } \n \n export function createGetOperationRequestsInput(queryResultSettings: IQueryResultSettings, b2BUserId: string, startDateTime: Date, endDateTime: Date): IDataServiceRequest { \n const query = businessPartnerUsersQuery(b2BUserId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOperationRequests', true, \n 'BusinessPartnerOperationRequestClass'\n , 'true', {bypassCache: 'none', returnEntity: 'BusinessPartnerOperationRequest'}, {startDateTime: startDateTime, endDateTime: endDateTime });\n } \n \n export function getOperationRequestsAsync(context: IContext, b2BUserId: string, startDateTime: Date, endDateTime: Date):AsyncResult {\n const request = createGetOperationRequestsInput(context.queryResultSettings, b2BUserId, startDateTime, endDateTime);\n return executeAction(request, context);\n } \n \n export function createGetCurrentInput(): IDataServiceRequest { \n const query = businessPartnerUsersQuery();\n return query.createDataServiceRequestForOperation('GetCurrent', false, \n 'BusinessPartnerUserClass'\n , 'false', {bypassCache: 'none', returnEntity: 'BusinessPartnerUser'}, { });\n } \n \n export function getCurrentAsync(context: IContext, ):AsyncResult {\n const request = createGetCurrentInput();\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { BusinessPartner, OrderShipments, BusinessPartnerProspect, BusinessPartnerUser } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function businessPartnersQuery(businessPartnerId?: string): DataServiceQuery {\n var key = (businessPartnerId) ? { BusinessPartnerId: businessPartnerId } : null;\n return new DataServiceQuery(\"BusinessPartners\", \"BusinessPartner\", \"BusinessPartnerClass\", key);\n }\n \n export function createCreateInput(entity: BusinessPartner): IDataServiceRequest {\n return businessPartnersQuery().create(entity);\n }\n\n export function createBusinessPartnerAsync(context: IContext, entity: BusinessPartner): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: BusinessPartner): IDataServiceRequest {\n return businessPartnersQuery(entity.BusinessPartnerId).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: BusinessPartner): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: BusinessPartner): IDataServiceRequest {\n return businessPartnersQuery(entity.BusinessPartnerId).delete();\n }\n\n export function deleteAsync(context: IContext, entity: BusinessPartner): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(businessPartnerId: string): IDataServiceRequest {\n return businessPartnersQuery(businessPartnerId).read();\n }\n\n export function readAsync(context: IContext, businessPartnerId: string): AsyncResult {\n const request = createReadAsync(businessPartnerId);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return businessPartnersQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetOrderHistoryInput(queryResultSettings: IQueryResultSettings, businessPartnerId: string, ): IDataServiceRequest { \n const query = businessPartnersQuery(businessPartnerId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOrderHistory', false, \n 'OrderShipmentsClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrderShipments'}, { });\n } \n \n export function getOrderHistoryAsync(context: IContext, businessPartnerId: string):AsyncResult {\n const request = createGetOrderHistoryInput(context.queryResultSettings, businessPartnerId);\n return executeAction(request, context);\n } \n \n export function createCreateProspectInput(businessPartnerProspect?: BusinessPartnerProspect | null): IDataServiceRequest { \n const query = businessPartnersQuery();\n return query.createDataServiceRequestForOperation('CreateProspect', true, \n 'BusinessPartnerProspectClass'\n , 'false', {bypassCache: 'get', returnEntity: 'BusinessPartnerProspect'}, {businessPartnerProspect: businessPartnerProspect });\n } \n \n export function createProspectAsync(context: IContext, businessPartnerProspect?: BusinessPartnerProspect | null):AsyncResult {\n const request = createCreateProspectInput(businessPartnerProspect);\n return executeAction(request, context);\n } \n \n export function createGetCurrentInput(): IDataServiceRequest { \n const query = businessPartnersQuery();\n return query.createDataServiceRequestForOperation('GetCurrent', false, \n 'BusinessPartnerClass'\n , 'false', {bypassCache: 'none', returnEntity: 'BusinessPartner'}, { });\n } \n \n export function getCurrentAsync(context: IContext, ):AsyncResult {\n const request = createGetCurrentInput();\n return executeAction(request, context);\n } \n \n export function createGetManagedBusinessPartnersInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = businessPartnersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetManagedBusinessPartners', false, \n 'BusinessPartnerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'BusinessPartner'}, { });\n } \n \n export function getManagedBusinessPartnersAsync(context: IContext, ):AsyncResult {\n const request = createGetManagedBusinessPartnersInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetUsersInput(queryResultSettings: IQueryResultSettings, businessPartnerId: string, ): IDataServiceRequest { \n const query = businessPartnersQuery(businessPartnerId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetUsers', false, \n 'BusinessPartnerUserClass'\n , 'true', {bypassCache: 'none', returnEntity: 'BusinessPartnerUser'}, { });\n } \n \n export function getUsersAsync(context: IContext, businessPartnerId: string):AsyncResult {\n const request = createGetUsersInput(context.queryResultSettings, businessPartnerId);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { Cart, CartSearchCriteria, TokenizedPaymentCard, CartTenderLine, SalesOrder, LoyaltyPointRedemptionEstimate, TenderLine, LineShippingAddress, SalesLineDeliveryOption, CartDeliveryPreferences, Address, DeliveryOption, LineDeliverySpecification, DeliverySpecification, ReasonCodeLine, CartLine, ReturnCartLine, TenderDiscountLine, ReceiptRetrievalCriteria, Receipt, RecallInvoicedSalesLineLookup, CardPaymentAcceptSettings, CommerceProperty, CardPaymentAcceptPoint, RetrievePaymentResultSettings, CardPaymentAcceptResult, CartPromotions, CartPromotionLine, CartLineUserAlerts, ChargeCode, TenderTypeAmount, CartLineValidationResults } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function cartsQuery(id?: string): DataServiceQuery {\n var key = (id) ? { Id: id } : null;\n return new DataServiceQuery(\"Carts\", \"Cart\", \"CartClass\", key);\n }\n \n export function createCreateInput(entity: Cart): IDataServiceRequest {\n return cartsQuery().create(entity);\n }\n\n export function createCartAsync(context: IContext, entity: Cart): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: Cart): IDataServiceRequest {\n return cartsQuery(entity.Id).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: Cart): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: Cart): IDataServiceRequest {\n return cartsQuery(entity.Id).delete();\n }\n\n export function deleteAsync(context: IContext, entity: Cart): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(id: string): IDataServiceRequest {\n return cartsQuery(id).read();\n }\n\n export function readAsync(context: IContext, id: string): AsyncResult {\n const request = createReadAsync(id);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return cartsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchInput(queryResultSettings: IQueryResultSettings, cartSearchCriteria?: CartSearchCriteria | null): IDataServiceRequest { \n const query = cartsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Search', true, \n 'CartClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Cart'}, {cartSearchCriteria: cartSearchCriteria });\n } \n \n export function searchAsync(context: IContext, cartSearchCriteria?: CartSearchCriteria | null):AsyncResult {\n const request = createSearchInput(context.queryResultSettings, cartSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createCheckoutInput(id: string, receiptEmail?: string | null, tokenizedPaymentCard?: TokenizedPaymentCard | null, receiptNumberSequence?: string | null, cartTenderLines?: CartTenderLine[] | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('Checkout', true, \n 'SalesOrderClass'\n , 'false', {bypassCache: 'get', returnEntity: 'SalesOrder'}, {receiptEmail: receiptEmail, tokenizedPaymentCard: tokenizedPaymentCard, receiptNumberSequence: receiptNumberSequence, cartTenderLines: cartTenderLines, cartVersion: cartVersion });\n } \n \n export function checkoutAsync(context: IContext, id: string, receiptEmail?: string | null, tokenizedPaymentCard?: TokenizedPaymentCard | null, receiptNumberSequence?: string | null, cartTenderLines?: CartTenderLine[] | null, cartVersion?: number | null):AsyncResult {\n const request = createCheckoutInput(id, receiptEmail, tokenizedPaymentCard, receiptNumberSequence, cartTenderLines, cartVersion);\n return executeAction(request, context);\n } \n \n export function createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput(id: string, loyaltyCardId?: string | null, currencyCode?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('GetMaxLoyaltyPointsToRedeemForTransactionBalance', true, \n 'LoyaltyPointRedemptionEstimateClass'\n , 'false', {bypassCache: 'none', returnEntity: 'LoyaltyPointRedemptionEstimate'}, {loyaltyCardId: loyaltyCardId, currencyCode: currencyCode });\n } \n \n export function getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync(context: IContext, id: string, loyaltyCardId?: string | null, currencyCode?: string | null):AsyncResult {\n const request = createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput(id, loyaltyCardId, currencyCode);\n return executeAction(request, context);\n } \n \n export function createGetPaymentsHistoryInput(queryResultSettings: IQueryResultSettings, id: string, ): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetPaymentsHistory', true, \n 'TenderLineClass'\n , 'true', {bypassCache: 'none', returnEntity: 'TenderLine'}, { });\n } \n \n export function getPaymentsHistoryAsync(context: IContext, id: string):AsyncResult {\n const request = createGetPaymentsHistoryInput(context.queryResultSettings, id);\n return executeAction(request, context);\n } \n \n export function createGetLineDeliveryOptionsByChannelIdInput(queryResultSettings: IQueryResultSettings, id: string, lineShippingAddresses: LineShippingAddress[] | null, channelId: number, filterOption?: number | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLineDeliveryOptionsByChannelId', true, \n 'SalesLineDeliveryOptionClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesLineDeliveryOption'}, {lineShippingAddresses: lineShippingAddresses, channelId: channelId, filterOption: filterOption });\n } \n \n export function getLineDeliveryOptionsByChannelIdAsync(context: IContext, id: string, lineShippingAddresses: LineShippingAddress[] | null, channelId: number, filterOption?: number | null):AsyncResult {\n const request = createGetLineDeliveryOptionsByChannelIdInput(context.queryResultSettings, id, lineShippingAddresses, channelId, filterOption);\n return executeAction(request, context);\n } \n \n export function createGetLineDeliveryOptionsInput(queryResultSettings: IQueryResultSettings, id: string, lineShippingAddresses?: LineShippingAddress[] | null, filterOption?: number | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLineDeliveryOptions', true, \n 'SalesLineDeliveryOptionClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesLineDeliveryOption'}, {lineShippingAddresses: lineShippingAddresses, filterOption: filterOption });\n } \n \n export function getLineDeliveryOptionsAsync(context: IContext, id: string, lineShippingAddresses?: LineShippingAddress[] | null, filterOption?: number | null):AsyncResult {\n const request = createGetLineDeliveryOptionsInput(context.queryResultSettings, id, lineShippingAddresses, filterOption);\n return executeAction(request, context);\n } \n \n export function createGetDeliveryPreferencesInput(id: string, ): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('GetDeliveryPreferences', true, \n 'CartDeliveryPreferencesClass'\n , 'false', {bypassCache: 'none', returnEntity: 'CartDeliveryPreferences'}, { });\n } \n \n export function getDeliveryPreferencesAsync(context: IContext, id: string):AsyncResult {\n const request = createGetDeliveryPreferencesInput(id);\n return executeAction(request, context);\n } \n \n export function createGetDeliveryOptionsInput(queryResultSettings: IQueryResultSettings, id: string, shippingAddress?: Address | null, cartLineIds?: string[] | null, filterOption?: number | null, ignoreLinesWithDeliveryMode?: boolean | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDeliveryOptions', true, \n 'DeliveryOptionClass'\n , 'true', {bypassCache: 'none', returnEntity: 'DeliveryOption'}, {shippingAddress: shippingAddress, cartLineIds: cartLineIds, filterOption: filterOption, ignoreLinesWithDeliveryMode: ignoreLinesWithDeliveryMode });\n } \n \n export function getDeliveryOptionsAsync(context: IContext, id: string, shippingAddress?: Address | null, cartLineIds?: string[] | null, filterOption?: number | null, ignoreLinesWithDeliveryMode?: boolean | null):AsyncResult {\n const request = createGetDeliveryOptionsInput(context.queryResultSettings, id, shippingAddress, cartLineIds, filterOption, ignoreLinesWithDeliveryMode);\n return executeAction(request, context);\n } \n \n export function createUpdateLineDeliverySpecificationsInput(id: string, lineDeliverySpecifications?: LineDeliverySpecification[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('UpdateLineDeliverySpecifications', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {lineDeliverySpecifications: lineDeliverySpecifications });\n } \n \n export function updateLineDeliverySpecificationsAsync(context: IContext, id: string, lineDeliverySpecifications?: LineDeliverySpecification[] | null):AsyncResult {\n const request = createUpdateLineDeliverySpecificationsInput(id, lineDeliverySpecifications);\n return executeAction(request, context);\n } \n \n export function createUpdateDeliverySpecificationInput(id: string, deliverySpecification?: DeliverySpecification | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('UpdateDeliverySpecification', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {deliverySpecification: deliverySpecification });\n } \n \n export function updateDeliverySpecificationAsync(context: IContext, id: string, deliverySpecification?: DeliverySpecification | null):AsyncResult {\n const request = createUpdateDeliverySpecificationInput(id, deliverySpecification);\n return executeAction(request, context);\n } \n \n export function createAddChargeInput(id: string, moduleTypeValue: number, chargeCode: string | null, amount: number): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddCharge', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {moduleTypeValue: moduleTypeValue, chargeCode: chargeCode, amount: amount });\n } \n \n export function addChargeAsync(context: IContext, id: string, moduleTypeValue: number, chargeCode: string | null, amount: number):AsyncResult {\n const request = createAddChargeInput(id, moduleTypeValue, chargeCode, amount);\n return executeAction(request, context);\n } \n \n export function createOverrideChargeInput(id: string, chargeLineId: string | null, amount: number, reasonCodeLines?: ReasonCodeLine[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('OverrideCharge', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {chargeLineId: chargeLineId, amount: amount, reasonCodeLines: reasonCodeLines });\n } \n \n export function overrideChargeAsync(context: IContext, id: string, chargeLineId: string | null, amount: number, reasonCodeLines?: ReasonCodeLine[] | null):AsyncResult {\n const request = createOverrideChargeInput(id, chargeLineId, amount, reasonCodeLines);\n return executeAction(request, context);\n } \n \n export function createAddCartLineChargeInput(id: string, cartLineId: string | null, moduleTypeValue: number, chargeCode: string | null, amount: number): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddCartLineCharge', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLineId: cartLineId, moduleTypeValue: moduleTypeValue, chargeCode: chargeCode, amount: amount });\n } \n \n export function addCartLineChargeAsync(context: IContext, id: string, cartLineId: string | null, moduleTypeValue: number, chargeCode: string | null, amount: number):AsyncResult {\n const request = createAddCartLineChargeInput(id, cartLineId, moduleTypeValue, chargeCode, amount);\n return executeAction(request, context);\n } \n \n export function createOverrideCartLineChargeInput(id: string, cartLineId: string | null, chargeLineId: string | null, amount: number, reasonCodeLines?: ReasonCodeLine[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('OverrideCartLineCharge', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLineId: cartLineId, chargeLineId: chargeLineId, amount: amount, reasonCodeLines: reasonCodeLines });\n } \n \n export function overrideCartLineChargeAsync(context: IContext, id: string, cartLineId: string | null, chargeLineId: string | null, amount: number, reasonCodeLines?: ReasonCodeLine[] | null):AsyncResult {\n const request = createOverrideCartLineChargeInput(id, cartLineId, chargeLineId, amount, reasonCodeLines);\n return executeAction(request, context);\n } \n \n export function createVoidInput(id: string, reasonCodeLines?: ReasonCodeLine[] | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('Void', true, \n 'SalesOrderClass'\n , 'false', {bypassCache: 'get', returnEntity: 'SalesOrder'}, {reasonCodeLines: reasonCodeLines, cartVersion: cartVersion });\n } \n \n export function voidAsync(context: IContext, id: string, reasonCodeLines?: ReasonCodeLine[] | null, cartVersion?: number | null):AsyncResult {\n const request = createVoidInput(id, reasonCodeLines, cartVersion);\n return executeAction(request, context);\n } \n \n export function createAddCartLinesInput(id: string, cartLines?: CartLine[] | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddCartLines', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLines: cartLines, cartVersion: cartVersion });\n } \n \n export function addCartLinesAsync(context: IContext, id: string, cartLines?: CartLine[] | null, cartVersion?: number | null):AsyncResult {\n const request = createAddCartLinesInput(id, cartLines, cartVersion);\n return executeAction(request, context);\n } \n \n export function createAddReturnCartLinesInput(id: string, returnCartLines: ReturnCartLine[] | null, returnTransactionSearchLocation: number, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddReturnCartLines', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {returnCartLines: returnCartLines, returnTransactionSearchLocation: returnTransactionSearchLocation, cartVersion: cartVersion });\n } \n \n export function addReturnCartLinesAsync(context: IContext, id: string, returnCartLines: ReturnCartLine[] | null, returnTransactionSearchLocation: number, cartVersion?: number | null):AsyncResult {\n const request = createAddReturnCartLinesInput(id, returnCartLines, returnTransactionSearchLocation, cartVersion);\n return executeAction(request, context);\n } \n \n export function createUpdateCartLinesInput(id: string, cartLines?: CartLine[] | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('UpdateCartLines', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLines: cartLines, cartVersion: cartVersion });\n } \n \n export function updateCartLinesAsync(context: IContext, id: string, cartLines?: CartLine[] | null, cartVersion?: number | null):AsyncResult {\n const request = createUpdateCartLinesInput(id, cartLines, cartVersion);\n return executeAction(request, context);\n } \n \n export function createVoidCartLinesInput(id: string, cartLines?: CartLine[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('VoidCartLines', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLines: cartLines });\n } \n \n export function voidCartLinesAsync(context: IContext, id: string, cartLines?: CartLine[] | null):AsyncResult {\n const request = createVoidCartLinesInput(id, cartLines);\n return executeAction(request, context);\n } \n \n export function createRemoveCartLinesInput(id: string, cartLineIds?: string[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('RemoveCartLines', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLineIds: cartLineIds });\n } \n \n export function removeCartLinesAsync(context: IContext, id: string, cartLineIds?: string[] | null):AsyncResult {\n const request = createRemoveCartLinesInput(id, cartLineIds);\n return executeAction(request, context);\n } \n \n export function createAddTenderLineInput(id: string, cartTenderLine?: CartTenderLine | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddTenderLine', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartTenderLine: cartTenderLine, cartVersion: cartVersion });\n } \n \n export function addTenderLineAsync(context: IContext, id: string, cartTenderLine?: CartTenderLine | null, cartVersion?: number | null):AsyncResult {\n const request = createAddTenderLineInput(id, cartTenderLine, cartVersion);\n return executeAction(request, context);\n } \n \n export function createCalculateTenderDiscountInput(id: string, tenderLine?: TenderLine | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('CalculateTenderDiscount', true, \n 'TenderDiscountLineClass'\n , 'false', {bypassCache: 'get', returnEntity: 'TenderDiscountLine'}, {tenderLine: tenderLine, cartVersion: cartVersion });\n } \n \n export function calculateTenderDiscountAsync(context: IContext, id: string, tenderLine?: TenderLine | null, cartVersion?: number | null):AsyncResult {\n const request = createCalculateTenderDiscountInput(id, tenderLine, cartVersion);\n return executeAction(request, context);\n } \n \n export function createAddPreprocessedTenderLineInput(id: string, preprocessedTenderLine?: TenderLine | null, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddPreprocessedTenderLine', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {preprocessedTenderLine: preprocessedTenderLine, cartVersion: cartVersion });\n } \n \n export function addPreprocessedTenderLineAsync(context: IContext, id: string, preprocessedTenderLine?: TenderLine | null, cartVersion?: number | null):AsyncResult {\n const request = createAddPreprocessedTenderLineInput(id, preprocessedTenderLine, cartVersion);\n return executeAction(request, context);\n } \n \n export function createValidateTenderLineForAddInput(id: string, tenderLine?: TenderLine | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('ValidateTenderLineForAdd', true, '', '', {bypassCache: 'get', returnEntity: ''}, {tenderLine: tenderLine });\n } \n \n export function validateTenderLineForAddAsync(context: IContext, id: string, tenderLine?: TenderLine | null):AsyncResult {\n const request = createValidateTenderLineForAddInput(id, tenderLine);\n return executeAction(request, context);\n } \n \n export function createUpdateTenderLineSignatureInput(id: string, tenderLineId?: string | null, signatureData?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('UpdateTenderLineSignature', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {tenderLineId: tenderLineId, signatureData: signatureData });\n } \n \n export function updateTenderLineSignatureAsync(context: IContext, id: string, tenderLineId?: string | null, signatureData?: string | null):AsyncResult {\n const request = createUpdateTenderLineSignatureInput(id, tenderLineId, signatureData);\n return executeAction(request, context);\n } \n \n export function createGetDeclinedOrVoidedCardReceiptsInput(queryResultSettings: IQueryResultSettings, id: string, preprocessedTenderLine?: TenderLine | null, receiptRetrievalCriteria?: ReceiptRetrievalCriteria | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDeclinedOrVoidedCardReceipts', true, \n 'ReceiptClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Receipt'}, {preprocessedTenderLine: preprocessedTenderLine, receiptRetrievalCriteria: receiptRetrievalCriteria });\n } \n \n export function getDeclinedOrVoidedCardReceiptsAsync(context: IContext, id: string, preprocessedTenderLine?: TenderLine | null, receiptRetrievalCriteria?: ReceiptRetrievalCriteria | null):AsyncResult {\n const request = createGetDeclinedOrVoidedCardReceiptsInput(context.queryResultSettings, id, preprocessedTenderLine, receiptRetrievalCriteria);\n return executeAction(request, context);\n } \n \n export function createCopyInput(id: string, targetCartType: number): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('Copy', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {targetCartType: targetCartType });\n } \n \n export function copyAsync(context: IContext, id: string, targetCartType: number):AsyncResult {\n const request = createCopyInput(id, targetCartType);\n return executeAction(request, context);\n } \n \n export function createAddInvoicedSalesLinesToCartInput(transactionId: string | null, invoicedSalesLinesIds: number[]): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('AddInvoicedSalesLinesToCart', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {transactionId: transactionId, invoicedSalesLinesIds: invoicedSalesLinesIds });\n } \n \n export function addInvoicedSalesLinesToCartAsync(context: IContext, transactionId: string | null, invoicedSalesLinesIds: number[]):AsyncResult {\n const request = createAddInvoicedSalesLinesToCartInput(transactionId, invoicedSalesLinesIds);\n return executeAction(request, context);\n } \n \n export function createRecallInvoicedSalesLinesInput(id: string, recallInvoicedSalesLineLookups?: RecallInvoicedSalesLineLookup[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('RecallInvoicedSalesLines', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {recallInvoicedSalesLineLookups: recallInvoicedSalesLineLookups });\n } \n \n export function recallInvoicedSalesLinesAsync(context: IContext, id: string, recallInvoicedSalesLineLookups?: RecallInvoicedSalesLineLookup[] | null):AsyncResult {\n const request = createRecallInvoicedSalesLinesInput(id, recallInvoicedSalesLineLookups);\n return executeAction(request, context);\n } \n \n export function createVoidTenderLineInput(id: string, tenderLineId?: string | null, reasonCodeLines?: ReasonCodeLine[] | null, isPreprocessed?: boolean | null, forceVoid?: boolean | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('VoidTenderLine', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {tenderLineId: tenderLineId, reasonCodeLines: reasonCodeLines, isPreprocessed: isPreprocessed, forceVoid: forceVoid });\n } \n \n export function voidTenderLineAsync(context: IContext, id: string, tenderLineId?: string | null, reasonCodeLines?: ReasonCodeLine[] | null, isPreprocessed?: boolean | null, forceVoid?: boolean | null):AsyncResult {\n const request = createVoidTenderLineInput(id, tenderLineId, reasonCodeLines, isPreprocessed, forceVoid);\n return executeAction(request, context);\n } \n \n export function createIssueGiftCardInput(id: string, giftCardId: string | null, amount: number, currencyCode?: string | null, lineDescription?: string | null, tenderTypeId?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('IssueGiftCard', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {giftCardId: giftCardId, amount: amount, currencyCode: currencyCode, lineDescription: lineDescription, tenderTypeId: tenderTypeId });\n } \n \n export function issueGiftCardAsync(context: IContext, id: string, giftCardId: string | null, amount: number, currencyCode?: string | null, lineDescription?: string | null, tenderTypeId?: string | null):AsyncResult {\n const request = createIssueGiftCardInput(id, giftCardId, amount, currencyCode, lineDescription, tenderTypeId);\n return executeAction(request, context);\n } \n \n export function createRefillGiftCardInput(id: string, giftCardId: string | null, amount: number, currencyCode?: string | null, lineDescription?: string | null, tenderTypeId?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('RefillGiftCard', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {giftCardId: giftCardId, amount: amount, currencyCode: currencyCode, lineDescription: lineDescription, tenderTypeId: tenderTypeId });\n } \n \n export function refillGiftCardAsync(context: IContext, id: string, giftCardId: string | null, amount: number, currencyCode?: string | null, lineDescription?: string | null, tenderTypeId?: string | null):AsyncResult {\n const request = createRefillGiftCardInput(id, giftCardId, amount, currencyCode, lineDescription, tenderTypeId);\n return executeAction(request, context);\n } \n \n export function createCashOutGiftCardInput(id: string, giftCardId: string | null, amount: number, currencyCode?: string | null, lineDescription?: string | null, tenderTypeId?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('CashOutGiftCard', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {giftCardId: giftCardId, amount: amount, currencyCode: currencyCode, lineDescription: lineDescription, tenderTypeId: tenderTypeId });\n } \n \n export function cashOutGiftCardAsync(context: IContext, id: string, giftCardId: string | null, amount: number, currencyCode?: string | null, lineDescription?: string | null, tenderTypeId?: string | null):AsyncResult {\n const request = createCashOutGiftCardInput(id, giftCardId, amount, currencyCode, lineDescription, tenderTypeId);\n return executeAction(request, context);\n } \n \n export function createSuspendInput(id: string, ): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('Suspend', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, { });\n } \n \n export function suspendAsync(context: IContext, id: string):AsyncResult {\n const request = createSuspendInput(id);\n return executeAction(request, context);\n } \n \n export function createSuspendWithJournalInput(id: string, journalCartId?: string | null, receiptNumberSequence?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('SuspendWithJournal', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {journalCartId: journalCartId, receiptNumberSequence: receiptNumberSequence });\n } \n \n export function suspendWithJournalAsync(context: IContext, id: string, journalCartId?: string | null, receiptNumberSequence?: string | null):AsyncResult {\n const request = createSuspendWithJournalInput(id, journalCartId, receiptNumberSequence);\n return executeAction(request, context);\n } \n \n export function createResumeInput(id: string, ): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('Resume', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, { });\n } \n \n export function resumeAsync(context: IContext, id: string):AsyncResult {\n const request = createResumeInput(id);\n return executeAction(request, context);\n } \n \n export function createResumeFromReceiptIdInput(receiptId?: string | null): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('ResumeFromReceiptId', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {receiptId: receiptId });\n } \n \n export function resumeFromReceiptIdAsync(context: IContext, receiptId?: string | null):AsyncResult {\n const request = createResumeFromReceiptIdInput(receiptId);\n return executeAction(request, context);\n } \n \n export function createRemoveDiscountCodesInput(id: string, discountCodes?: string[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('RemoveDiscountCodes', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {discountCodes: discountCodes });\n } \n \n export function removeDiscountCodesAsync(context: IContext, id: string, discountCodes?: string[] | null):AsyncResult {\n const request = createRemoveDiscountCodesInput(id, discountCodes);\n return executeAction(request, context);\n } \n \n export function createGetSuspendedInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = cartsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSuspended', true, \n 'CartClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Cart'}, { });\n } \n \n export function getSuspendedAsync(context: IContext, ):AsyncResult {\n const request = createGetSuspendedInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createOverrideCartLinePriceInput(id: string, cartLineId: string | null, price: number): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('OverrideCartLinePrice', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLineId: cartLineId, price: price });\n } \n \n export function overrideCartLinePriceAsync(context: IContext, id: string, cartLineId: string | null, price: number):AsyncResult {\n const request = createOverrideCartLinePriceInput(id, cartLineId, price);\n return executeAction(request, context);\n } \n \n export function createGetCardPaymentAcceptPointInput(id: string, cardPaymentAcceptSettings?: CardPaymentAcceptSettings | null, extensionProperties?: CommerceProperty[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('GetCardPaymentAcceptPoint', true, \n 'CardPaymentAcceptPointClass'\n , 'false', {bypassCache: 'none', returnEntity: 'CardPaymentAcceptPoint'}, {cardPaymentAcceptSettings: cardPaymentAcceptSettings, extensionProperties: extensionProperties });\n } \n \n export function getCardPaymentAcceptPointAsync(context: IContext, id: string, cardPaymentAcceptSettings?: CardPaymentAcceptSettings | null, extensionProperties?: CommerceProperty[] | null):AsyncResult {\n const request = createGetCardPaymentAcceptPointInput(id, cardPaymentAcceptSettings, extensionProperties);\n return executeAction(request, context);\n } \n \n export function createRetrieveCardPaymentAcceptResultInput(resultAccessCode?: string | null, extensionProperties?: CommerceProperty[] | null, cartId?: string | null, settings?: RetrievePaymentResultSettings | null): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('RetrieveCardPaymentAcceptResult', true, \n 'CardPaymentAcceptResultClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CardPaymentAcceptResult'}, {resultAccessCode: resultAccessCode, extensionProperties: extensionProperties, cartId: cartId, settings: settings });\n } \n \n export function retrieveCardPaymentAcceptResultAsync(context: IContext, resultAccessCode?: string | null, extensionProperties?: CommerceProperty[] | null, cartId?: string | null, settings?: RetrievePaymentResultSettings | null):AsyncResult {\n const request = createRetrieveCardPaymentAcceptResultInput(resultAccessCode, extensionProperties, cartId, settings);\n return executeAction(request, context);\n } \n \n export function createRecallOrderInput(transactionId?: string | null, salesId?: string | null): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('RecallOrder', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {transactionId: transactionId, salesId: salesId });\n } \n \n export function recallOrderAsync(context: IContext, transactionId?: string | null, salesId?: string | null):AsyncResult {\n const request = createRecallOrderInput(transactionId, salesId);\n return executeAction(request, context);\n } \n \n export function createRecallQuoteInput(transactionId?: string | null, quoteId?: string | null): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('RecallQuote', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {transactionId: transactionId, quoteId: quoteId });\n } \n \n export function recallQuoteAsync(context: IContext, transactionId?: string | null, quoteId?: string | null):AsyncResult {\n const request = createRecallQuoteInput(transactionId, quoteId);\n return executeAction(request, context);\n } \n \n export function createRecalculateOrderInput(id: string, ): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('RecalculateOrder', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, { });\n } \n \n export function recalculateOrderAsync(context: IContext, id: string):AsyncResult {\n const request = createRecalculateOrderInput(id);\n return executeAction(request, context);\n } \n \n export function createResetAllChargesInput(id: string, ): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('ResetAllCharges', false, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, { });\n } \n \n export function resetAllChargesAsync(context: IContext, id: string):AsyncResult {\n const request = createResetAllChargesInput(id);\n return executeAction(request, context);\n } \n \n export function createGetPromotionsInput(id: string, ): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('GetPromotions', true, \n 'CartPromotionsClass'\n , 'false', {bypassCache: 'none', returnEntity: 'CartPromotions'}, { });\n } \n \n export function getPromotionsAsync(context: IContext, id: string):AsyncResult {\n const request = createGetPromotionsInput(id);\n return executeAction(request, context);\n } \n \n export function createGetAvailablePromotionsInput(queryResultSettings: IQueryResultSettings, id: string, cartLineIds?: string[] | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAvailablePromotions', true, \n 'CartPromotionLineClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CartPromotionLine'}, {cartLineIds: cartLineIds });\n } \n \n export function getAvailablePromotionsAsync(context: IContext, id: string, cartLineIds?: string[] | null):AsyncResult {\n const request = createGetAvailablePromotionsInput(context.queryResultSettings, id, cartLineIds);\n return executeAction(request, context);\n } \n \n export function createRecallSalesInvoiceInput(transactionId?: string | null, invoiceId?: string | null): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('RecallSalesInvoice', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {transactionId: transactionId, invoiceId: invoiceId });\n } \n \n export function recallSalesInvoiceAsync(context: IContext, transactionId?: string | null, invoiceId?: string | null):AsyncResult {\n const request = createRecallSalesInvoiceInput(transactionId, invoiceId);\n return executeAction(request, context);\n } \n \n export function createAddOrderInvoiceInput(id: string, invoiceId?: string | null, lineDescription?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddOrderInvoice', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {invoiceId: invoiceId, lineDescription: lineDescription });\n } \n \n export function addOrderInvoiceAsync(context: IContext, id: string, invoiceId?: string | null, lineDescription?: string | null):AsyncResult {\n const request = createAddOrderInvoiceInput(id, invoiceId, lineDescription);\n return executeAction(request, context);\n } \n \n export function createAddInvoicesInput(id: string, invoiceIds?: string[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddInvoices', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {invoiceIds: invoiceIds });\n } \n \n export function addInvoicesAsync(context: IContext, id: string, invoiceIds?: string[] | null):AsyncResult {\n const request = createAddInvoicesInput(id, invoiceIds);\n return executeAction(request, context);\n } \n \n export function createUpdateCommissionSalesGroupInput(transactionId: string | null, cartLineId: string | null, commissionSalesGroup: string | null, isUserInitiated: boolean): IDataServiceRequest { \n const query = cartsQuery();\n return query.createDataServiceRequestForOperation('UpdateCommissionSalesGroup', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {transactionId: transactionId, cartLineId: cartLineId, commissionSalesGroup: commissionSalesGroup, isUserInitiated: isUserInitiated });\n } \n \n export function updateCommissionSalesGroupAsync(context: IContext, transactionId: string | null, cartLineId: string | null, commissionSalesGroup: string | null, isUserInitiated: boolean):AsyncResult {\n const request = createUpdateCommissionSalesGroupInput(transactionId, cartLineId, commissionSalesGroup, isUserInitiated);\n return executeAction(request, context);\n } \n \n export function createAddCouponsInput(id: string, couponCodes?: string[] | null, isLegacyDiscountCode?: boolean | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddCoupons', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {couponCodes: couponCodes, isLegacyDiscountCode: isLegacyDiscountCode });\n } \n \n export function addCouponsAsync(context: IContext, id: string, couponCodes?: string[] | null, isLegacyDiscountCode?: boolean | null):AsyncResult {\n const request = createAddCouponsInput(id, couponCodes, isLegacyDiscountCode);\n return executeAction(request, context);\n } \n \n export function createRemoveCouponsInput(id: string, couponCodes?: string[] | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('RemoveCoupons', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {couponCodes: couponCodes });\n } \n \n export function removeCouponsAsync(context: IContext, id: string, couponCodes?: string[] | null):AsyncResult {\n const request = createRemoveCouponsInput(id, couponCodes);\n return executeAction(request, context);\n } \n \n export function createGetCartLineUserAlertsForAddInput(queryResultSettings: IQueryResultSettings, id: string, cartLines?: CartLine[] | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCartLineUserAlertsForAdd', true, \n 'CartLineUserAlertsClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CartLineUserAlerts'}, {cartLines: cartLines });\n } \n \n export function getCartLineUserAlertsForAddAsync(context: IContext, id: string, cartLines?: CartLine[] | null):AsyncResult {\n const request = createGetCartLineUserAlertsForAddInput(context.queryResultSettings, id, cartLines);\n return executeAction(request, context);\n } \n \n export function createGetCartLineUserAlertsInput(queryResultSettings: IQueryResultSettings, id: string, cartLineIds?: string[] | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCartLineUserAlerts', true, \n 'CartLineUserAlertsClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CartLineUserAlerts'}, {cartLineIds: cartLineIds });\n } \n \n export function getCartLineUserAlertsAsync(context: IContext, id: string, cartLineIds?: string[] | null):AsyncResult {\n const request = createGetCartLineUserAlertsInput(context.queryResultSettings, id, cartLineIds);\n return executeAction(request, context);\n } \n \n export function createGetChargeCodesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = cartsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetChargeCodes', false, \n 'ChargeCodeClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ChargeCode'}, { });\n } \n \n export function getChargeCodesAsync(context: IContext, ):AsyncResult {\n const request = createGetChargeCodesInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetReceiptTypesInput(queryResultSettings: IQueryResultSettings, id: string, ): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReceiptTypes', false, '', 'true', {bypassCache: 'none', returnEntity: ''}, { });\n } \n \n export function getReceiptTypesAsync(context: IContext, id: string):AsyncResult {\n const request = createGetReceiptTypesInput(context.queryResultSettings, id);\n return executeAction(request, context);\n } \n \n export function createSetInvoiceLinePriceInput(id: string, cartLineId: string | null, price: number, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('SetInvoiceLinePrice', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {cartLineId: cartLineId, price: price, cartVersion: cartVersion });\n } \n \n export function setInvoiceLinePriceAsync(context: IContext, id: string, cartLineId: string | null, price: number, cartVersion?: number | null):AsyncResult {\n const request = createSetInvoiceLinePriceInput(id, cartLineId, price, cartVersion);\n return executeAction(request, context);\n } \n \n export function createAddDiscountCodeInput(id: string, discountCode?: string | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('AddDiscountCode', true, \n 'CartClass'\n , 'false', {bypassCache: 'get', returnEntity: 'Cart'}, {discountCode: discountCode });\n } \n \n export function addDiscountCodeAsync(context: IContext, id: string, discountCode?: string | null):AsyncResult {\n const request = createAddDiscountCodeInput(id, discountCode);\n return executeAction(request, context);\n } \n \n export function createGetReturnOptionsInput(queryResultSettings: IQueryResultSettings, id: string, ): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReturnOptions', false, \n 'TenderTypeAmountClass'\n , 'true', {bypassCache: 'none', returnEntity: 'TenderTypeAmount'}, { });\n } \n \n export function getReturnOptionsAsync(context: IContext, id: string):AsyncResult {\n const request = createGetReturnOptionsInput(context.queryResultSettings, id);\n return executeAction(request, context);\n } \n \n export function createValidateForCheckoutInput(id: string, cartVersion?: number | null): IDataServiceRequest { \n const query = cartsQuery(id);\n return query.createDataServiceRequestForOperation('ValidateForCheckout', false, \n 'CartLineValidationResultsClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CartLineValidationResults'}, {cartVersion: cartVersion });\n } \n \n export function validateForCheckoutAsync(context: IContext, id: string, cartVersion?: number | null):AsyncResult {\n const request = createValidateForCheckoutInput(id, cartVersion);\n return executeAction(request, context);\n } \n \n export function createGetTenderSuggestionsInput(queryResultSettings: IQueryResultSettings, id: string, tenderTypeId?: string | null, currencyCode?: string | null): IDataServiceRequest { \n const query = cartsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetTenderSuggestions', false, \n 'TenderLineClass'\n , 'true', {bypassCache: 'none', returnEntity: 'TenderLine'}, {tenderTypeId: tenderTypeId, currencyCode: currencyCode });\n } \n \n export function getTenderSuggestionsAsync(context: IContext, id: string, tenderTypeId?: string | null, currencyCode?: string | null):AsyncResult {\n const request = createGetTenderSuggestionsInput(context.queryResultSettings, id, tenderTypeId, currencyCode);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { ProductCatalog } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function catalogsQuery(recordId?: number): DataServiceQuery {\n var key = (recordId) ? { RecordId: recordId } : null;\n return new DataServiceQuery(\"Catalogs\", \"ProductCatalog\", \"ProductCatalogClass\", key);\n }\n \n export function createCreateInput(entity: ProductCatalog): IDataServiceRequest {\n return catalogsQuery().create(entity);\n }\n\n export function createProductCatalogAsync(context: IContext, entity: ProductCatalog): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: ProductCatalog): IDataServiceRequest {\n return catalogsQuery(entity.RecordId).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: ProductCatalog): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: ProductCatalog): IDataServiceRequest {\n return catalogsQuery(entity.RecordId).delete();\n }\n\n export function deleteAsync(context: IContext, entity: ProductCatalog): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(recordId: number): IDataServiceRequest {\n return catalogsQuery(recordId).read();\n }\n\n export function readAsync(context: IContext, recordId: number): AsyncResult {\n const request = createReadAsync(recordId);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return catalogsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCatalogsInput(queryResultSettings: IQueryResultSettings, channelId: number, activeOnly: boolean): IDataServiceRequest { \n const query = catalogsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCatalogs', true, \n 'ProductCatalogClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductCatalog'}, {channelId: channelId, activeOnly: activeOnly });\n } \n \n export function getCatalogsAsync(context: IContext, channelId: number, activeOnly: boolean):AsyncResult {\n const request = createGetCatalogsInput(context.queryResultSettings, channelId, activeOnly);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { Category, AttributeCategory } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function categoriesQuery(recordId?: number): DataServiceQuery {\n var key = (recordId) ? { RecordId: recordId } : null;\n return new DataServiceQuery(\"Categories\", \"Category\", \"CategoryClass\", key);\n }\n \n export function createCreateInput(entity: Category): IDataServiceRequest {\n return categoriesQuery().create(entity);\n }\n\n export function createCategoryAsync(context: IContext, entity: Category): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: Category): IDataServiceRequest {\n return categoriesQuery(entity.RecordId).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: Category): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: Category): IDataServiceRequest {\n return categoriesQuery(entity.RecordId).delete();\n }\n\n export function deleteAsync(context: IContext, entity: Category): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(recordId: number): IDataServiceRequest {\n return categoriesQuery(recordId).read();\n }\n\n export function readAsync(context: IContext, recordId: number): AsyncResult {\n const request = createReadAsync(recordId);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return categoriesQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCategoriesInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId?: number | null): IDataServiceRequest { \n const query = categoriesQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCategories', true, \n 'CategoryClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Category'}, {channelId: channelId, catalogId: catalogId });\n } \n \n export function getCategoriesAsync(context: IContext, channelId: number, catalogId?: number | null):AsyncResult {\n const request = createGetCategoriesInput(context.queryResultSettings, channelId, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetAttributesInput(queryResultSettings: IQueryResultSettings, categoryId: number): IDataServiceRequest { \n const query = categoriesQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAttributes', false, \n 'AttributeCategoryClass'\n , 'true', {bypassCache: 'none', returnEntity: 'AttributeCategory'}, {categoryId: categoryId });\n } \n \n export function getAttributesAsync(context: IContext, categoryId: number):AsyncResult {\n const request = createGetAttributesInput(context.queryResultSettings, categoryId);\n return executeAction(request, context);\n } \n \n export function createGetCatalogAttributesInput(queryResultSettings: IQueryResultSettings, catalogId: number, categoryIds: number[]): IDataServiceRequest { \n const query = categoriesQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCatalogAttributes', true, \n 'AttributeCategoryClass'\n , 'true', {bypassCache: 'none', returnEntity: 'AttributeCategory'}, {catalogId: catalogId, categoryIds: categoryIds });\n } \n \n export function getCatalogAttributesAsync(context: IContext, catalogId: number, categoryIds: number[]):AsyncResult {\n const request = createGetCatalogAttributesInput(context.queryResultSettings, catalogId, categoryIds);\n return executeAction(request, context);\n } \n \n export function createGetChildrenInput(queryResultSettings: IQueryResultSettings, channelId: number, categoryId: number): IDataServiceRequest { \n const query = categoriesQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetChildren', true, \n 'CategoryClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Category'}, {channelId: channelId, categoryId: categoryId });\n } \n \n export function getChildrenAsync(context: IContext, channelId: number, categoryId: number):AsyncResult {\n const request = createGetChildrenInput(context.queryResultSettings, channelId, categoryId);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { CommerceList, CommerceListLine, CommerceListContributor, CommerceListInvitation } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function commerceListsQuery(id?: number): DataServiceQuery {\n var key = (id) ? { Id: id } : null;\n return new DataServiceQuery(\"CommerceLists\", \"CommerceList\", \"CommerceListClass\", key);\n }\n \n export function createCreateInput(entity: CommerceList): IDataServiceRequest {\n return commerceListsQuery().create(entity);\n }\n\n export function createCommerceListAsync(context: IContext, entity: CommerceList): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: CommerceList): IDataServiceRequest {\n return commerceListsQuery(entity.Id).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: CommerceList): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: CommerceList): IDataServiceRequest {\n return commerceListsQuery(entity.Id).delete();\n }\n\n export function deleteAsync(context: IContext, entity: CommerceList): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(id: number): IDataServiceRequest {\n return commerceListsQuery(id).read();\n }\n\n export function readAsync(context: IContext, id: number): AsyncResult {\n const request = createReadAsync(id);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return commerceListsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetByCustomerInput(queryResultSettings: IQueryResultSettings, customerId?: string | null): IDataServiceRequest { \n const query = commerceListsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetByCustomer', true, \n 'CommerceListClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CommerceList'}, {customerId: customerId });\n } \n \n export function getByCustomerAsync(context: IContext, customerId?: string | null):AsyncResult {\n const request = createGetByCustomerInput(context.queryResultSettings, customerId);\n return executeAction(request, context);\n } \n \n export function createAddLinesInput(id: number, commerceListLines?: CommerceListLine[] | null): IDataServiceRequest { \n const query = commerceListsQuery(id);\n return query.createDataServiceRequestForOperation('AddLines', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListLines: commerceListLines });\n } \n \n export function addLinesAsync(context: IContext, id: number, commerceListLines?: CommerceListLine[] | null):AsyncResult {\n const request = createAddLinesInput(id, commerceListLines);\n return executeAction(request, context);\n } \n \n export function createUpdateLinesInput(id: number, commerceListLines?: CommerceListLine[] | null): IDataServiceRequest { \n const query = commerceListsQuery(id);\n return query.createDataServiceRequestForOperation('UpdateLines', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListLines: commerceListLines });\n } \n \n export function updateLinesAsync(context: IContext, id: number, commerceListLines?: CommerceListLine[] | null):AsyncResult {\n const request = createUpdateLinesInput(id, commerceListLines);\n return executeAction(request, context);\n } \n \n export function createRemoveLinesInput(id: number, commerceListLines?: CommerceListLine[] | null): IDataServiceRequest { \n const query = commerceListsQuery(id);\n return query.createDataServiceRequestForOperation('RemoveLines', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListLines: commerceListLines });\n } \n \n export function removeLinesAsync(context: IContext, id: number, commerceListLines?: CommerceListLine[] | null):AsyncResult {\n const request = createRemoveLinesInput(id, commerceListLines);\n return executeAction(request, context);\n } \n \n export function createMoveLinesInput(commerceListLines: CommerceListLine[] | null, destinationId: number): IDataServiceRequest { \n const query = commerceListsQuery();\n return query.createDataServiceRequestForOperation('MoveLines', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListLines: commerceListLines, destinationId: destinationId });\n } \n \n export function moveLinesAsync(context: IContext, commerceListLines: CommerceListLine[] | null, destinationId: number):AsyncResult {\n const request = createMoveLinesInput(commerceListLines, destinationId);\n return executeAction(request, context);\n } \n \n export function createCopyLinesInput(commerceListLines: CommerceListLine[] | null, destinationId: number): IDataServiceRequest { \n const query = commerceListsQuery();\n return query.createDataServiceRequestForOperation('CopyLines', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListLines: commerceListLines, destinationId: destinationId });\n } \n \n export function copyLinesAsync(context: IContext, commerceListLines: CommerceListLine[] | null, destinationId: number):AsyncResult {\n const request = createCopyLinesInput(commerceListLines, destinationId);\n return executeAction(request, context);\n } \n \n export function createAddContributorsInput(id: number, commerceListContributors?: CommerceListContributor[] | null): IDataServiceRequest { \n const query = commerceListsQuery(id);\n return query.createDataServiceRequestForOperation('AddContributors', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListContributors: commerceListContributors });\n } \n \n export function addContributorsAsync(context: IContext, id: number, commerceListContributors?: CommerceListContributor[] | null):AsyncResult {\n const request = createAddContributorsInput(id, commerceListContributors);\n return executeAction(request, context);\n } \n \n export function createRemoveContributorsInput(id: number, commerceListContributors?: CommerceListContributor[] | null): IDataServiceRequest { \n const query = commerceListsQuery(id);\n return query.createDataServiceRequestForOperation('RemoveContributors', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListContributors: commerceListContributors });\n } \n \n export function removeContributorsAsync(context: IContext, id: number, commerceListContributors?: CommerceListContributor[] | null):AsyncResult {\n const request = createRemoveContributorsInput(id, commerceListContributors);\n return executeAction(request, context);\n } \n \n export function createCreateInvitationsInput(id: number, commerceListInvitations?: CommerceListInvitation[] | null): IDataServiceRequest { \n const query = commerceListsQuery(id);\n return query.createDataServiceRequestForOperation('CreateInvitations', true, \n 'CommerceListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CommerceList'}, {commerceListInvitations: commerceListInvitations });\n } \n \n export function createInvitationsAsync(context: IContext, id: number, commerceListInvitations?: CommerceListInvitation[] | null):AsyncResult {\n const request = createCreateInvitationsInput(id, commerceListInvitations);\n return executeAction(request, context);\n } \n \n export function createAcceptInvitationInput(invitationToken?: string | null, customerId?: string | null): IDataServiceRequest { \n const query = commerceListsQuery();\n return query.createDataServiceRequestForOperation('AcceptInvitation', true, '', '', {bypassCache: 'get', returnEntity: ''}, {invitationToken: invitationToken, customerId: customerId });\n } \n \n export function acceptInvitationAsync(context: IContext, invitationToken?: string | null, customerId?: string | null):AsyncResult {\n const request = createAcceptInvitationInput(invitationToken, customerId);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { Customer, CustomerSearchCriteria, GlobalCustomer, CustomerSearchByFieldCriteria, CustomerTimelineItem, CustomerRefiner, SalesOrder, OrderShipments, PurchaseHistory, CustomerSearchField, CustomerTimelineItemTypeMap, CustomerTimelineRefiner, CustomerTitle } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function customersQuery(accountNumber?: string): DataServiceQuery {\n var key = (accountNumber !== null && accountNumber !== undefined) ? { AccountNumber: accountNumber } : null;\n return new DataServiceQuery(\"Customers\", \"Customer\", \"CustomerClass\", key);\n }\n \n export function createCreateInput(entity: Customer): IDataServiceRequest {\n return customersQuery().create(entity);\n }\n\n export function createCustomerAsync(context: IContext, entity: Customer): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: Customer): IDataServiceRequest {\n return customersQuery(entity.AccountNumber).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: Customer): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: Customer): IDataServiceRequest {\n return customersQuery(entity.AccountNumber).delete();\n }\n\n export function deleteAsync(context: IContext, entity: Customer): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(accountNumber: string): IDataServiceRequest {\n return customersQuery(accountNumber).read();\n }\n\n export function readAsync(context: IContext, accountNumber: string): AsyncResult {\n const request = createReadAsync(accountNumber);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return customersQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchInput(queryResultSettings: IQueryResultSettings, customerSearchCriteria?: CustomerSearchCriteria | null): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Search', true, \n 'GlobalCustomerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'GlobalCustomer'}, {customerSearchCriteria: customerSearchCriteria });\n } \n \n export function searchAsync(context: IContext, customerSearchCriteria?: CustomerSearchCriteria | null):AsyncResult {\n const request = createSearchInput(context.queryResultSettings, customerSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createSearchByFieldsInput(queryResultSettings: IQueryResultSettings, customerSearchByFieldCriteria?: CustomerSearchByFieldCriteria | null): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchByFields', true, \n 'GlobalCustomerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'GlobalCustomer'}, {CustomerSearchByFieldCriteria: customerSearchByFieldCriteria });\n } \n \n export function searchByFieldsAsync(context: IContext, customerSearchByFieldCriteria?: CustomerSearchByFieldCriteria | null):AsyncResult {\n const request = createSearchByFieldsInput(context.queryResultSettings, customerSearchByFieldCriteria);\n return executeAction(request, context);\n } \n \n export function createGetByAccountNumbersInput(queryResultSettings: IQueryResultSettings, accountNumbers: string[] | null, searchLocationValue: number): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetByAccountNumbers', true, \n 'CustomerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Customer'}, {accountNumbers: accountNumbers, searchLocationValue: searchLocationValue });\n } \n \n export function getByAccountNumbersAsync(context: IContext, accountNumbers: string[] | null, searchLocationValue: number):AsyncResult {\n const request = createGetByAccountNumbersInput(context.queryResultSettings, accountNumbers, searchLocationValue);\n return executeAction(request, context);\n } \n \n export function createCreateCustomerTimelineItemInput(customerTimelineItem?: CustomerTimelineItem | null): IDataServiceRequest { \n const query = customersQuery();\n return query.createDataServiceRequestForOperation('CreateCustomerTimelineItem', true, \n 'CustomerTimelineItemClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CustomerTimelineItem'}, {customerTimelineItem: customerTimelineItem });\n } \n \n export function createCustomerTimelineItemAsync(context: IContext, customerTimelineItem?: CustomerTimelineItem | null):AsyncResult {\n const request = createCreateCustomerTimelineItemInput(customerTimelineItem);\n return executeAction(request, context);\n } \n \n export function createUpdateCustomerTimelineItemInput(customerTimelineItem?: CustomerTimelineItem | null): IDataServiceRequest { \n const query = customersQuery();\n return query.createDataServiceRequestForOperation('UpdateCustomerTimelineItem', true, \n 'CustomerTimelineItemClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CustomerTimelineItem'}, {customerTimelineItem: customerTimelineItem });\n } \n \n export function updateCustomerTimelineItemAsync(context: IContext, customerTimelineItem?: CustomerTimelineItem | null):AsyncResult {\n const request = createUpdateCustomerTimelineItemInput(customerTimelineItem);\n return executeAction(request, context);\n } \n \n export function createGetRefinersInput(queryResultSettings: IQueryResultSettings, searchCriteria: CustomerSearchCriteria | null, refinerSourceTypes: number[]): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRefiners', true, \n 'CustomerRefinerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CustomerRefiner'}, {searchCriteria: searchCriteria, refinerSourceTypes: refinerSourceTypes });\n } \n \n export function getRefinersAsync(context: IContext, searchCriteria: CustomerSearchCriteria | null, refinerSourceTypes: number[]):AsyncResult {\n const request = createGetRefinersInput(context.queryResultSettings, searchCriteria, refinerSourceTypes);\n return executeAction(request, context);\n } \n \n export function createGetOrderHistoryInput(queryResultSettings: IQueryResultSettings, accountNumber: string, ): IDataServiceRequest { \n const query = customersQuery(accountNumber).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOrderHistory', true, \n 'SalesOrderClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesOrder'}, { });\n } \n \n export function getOrderHistoryAsync(context: IContext, accountNumber: string):AsyncResult {\n const request = createGetOrderHistoryInput(context.queryResultSettings, accountNumber);\n return executeAction(request, context);\n } \n \n export function createGetOrderShipmentsHistoryInput(queryResultSettings: IQueryResultSettings, accountNumber: string, nextPageToken?: string | null): IDataServiceRequest { \n const query = customersQuery(accountNumber).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOrderShipmentsHistory', true, \n 'OrderShipmentsClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrderShipments'}, {nextPageToken: nextPageToken });\n } \n \n export function getOrderShipmentsHistoryAsync(context: IContext, accountNumber: string, nextPageToken?: string | null):AsyncResult {\n const request = createGetOrderShipmentsHistoryInput(context.queryResultSettings, accountNumber, nextPageToken);\n return executeAction(request, context);\n } \n \n export function createPostNonTransactionalActivityLoyaltyPointsInput(loyaltyCardId: string | null, channelId: number, affiliationId: number, activityTypeId?: string | null): IDataServiceRequest { \n const query = customersQuery();\n return query.createDataServiceRequestForOperation('PostNonTransactionalActivityLoyaltyPoints', true, '', '', {bypassCache: 'get', returnEntity: ''}, {loyaltyCardId: loyaltyCardId, channelId: channelId, affiliationId: affiliationId, activityTypeId: activityTypeId });\n } \n \n export function postNonTransactionalActivityLoyaltyPointsAsync(context: IContext, loyaltyCardId: string | null, channelId: number, affiliationId: number, activityTypeId?: string | null):AsyncResult {\n const request = createPostNonTransactionalActivityLoyaltyPointsInput(loyaltyCardId, channelId, affiliationId, activityTypeId);\n return executeAction(request, context);\n } \n \n export function createGetPurchaseHistoryInput(queryResultSettings: IQueryResultSettings, accountNumber: string, ): IDataServiceRequest { \n const query = customersQuery(accountNumber).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetPurchaseHistory', false, \n 'PurchaseHistoryClass'\n , 'true', {bypassCache: 'none', returnEntity: 'PurchaseHistory'}, { });\n } \n \n export function getPurchaseHistoryAsync(context: IContext, accountNumber: string):AsyncResult {\n const request = createGetPurchaseHistoryInput(context.queryResultSettings, accountNumber);\n return executeAction(request, context);\n } \n \n export function createGetCustomerSearchFieldsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCustomerSearchFields', false, \n 'CustomerSearchFieldClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CustomerSearchField'}, { });\n } \n \n export function getCustomerSearchFieldsAsync(context: IContext, ):AsyncResult {\n const request = createGetCustomerSearchFieldsInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetCustomerTimelineItemTypesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCustomerTimelineItemTypes', false, \n 'CustomerTimelineItemTypeMapClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CustomerTimelineItemTypeMap'}, { });\n } \n \n export function getCustomerTimelineItemTypesAsync(context: IContext, ):AsyncResult {\n const request = createGetCustomerTimelineItemTypesInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetCustomerTimelineItemsInput(queryResultSettings: IQueryResultSettings, accountNumber: string, ): IDataServiceRequest { \n const query = customersQuery(accountNumber).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCustomerTimelineItems', false, \n 'CustomerTimelineItemClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CustomerTimelineItem'}, { });\n } \n \n export function getCustomerTimelineItemsAsync(context: IContext, accountNumber: string):AsyncResult {\n const request = createGetCustomerTimelineItemsInput(context.queryResultSettings, accountNumber);\n return executeAction(request, context);\n } \n \n export function createGetCustomerTimelineRefinersInput(queryResultSettings: IQueryResultSettings, accountNumber: string, ): IDataServiceRequest { \n const query = customersQuery(accountNumber).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCustomerTimelineRefiners', false, \n 'CustomerTimelineRefinerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CustomerTimelineRefiner'}, { });\n } \n \n export function getCustomerTimelineRefinersAsync(context: IContext, accountNumber: string):AsyncResult {\n const request = createGetCustomerTimelineRefinersInput(context.queryResultSettings, accountNumber);\n return executeAction(request, context);\n } \n \n export function createGetTitlesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = customersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetTitles', false, \n 'CustomerTitleClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CustomerTitle'}, { });\n } \n \n export function getTitlesAsync(context: IContext, ):AsyncResult {\n const request = createGetTitlesInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { OrgUnit, TillLayout, SearchStoreCriteria, SearchArea, OrgUnitLocation, OrgUnitLocationSearchCriteria, ChannelConfiguration, StoreHours, ChannelDeliveryOption, OrgUnitAvailability, ItemUnit, ProductDimensionCombination, OrgUnitAvailabilitySearchCriteria, TerminalInfo } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function orgUnitsQuery(orgUnitNumber?: string): DataServiceQuery {\n var key = (orgUnitNumber) ? { OrgUnitNumber: orgUnitNumber } : null;\n return new DataServiceQuery(\"OrgUnits\", \"OrgUnit\", \"OrgUnitClass\", key);\n }\n \n export function createCreateInput(entity: OrgUnit): IDataServiceRequest {\n return orgUnitsQuery().create(entity);\n }\n\n export function createOrgUnitAsync(context: IContext, entity: OrgUnit): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: OrgUnit): IDataServiceRequest {\n return orgUnitsQuery(entity.OrgUnitNumber).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: OrgUnit): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: OrgUnit): IDataServiceRequest {\n return orgUnitsQuery(entity.OrgUnitNumber).delete();\n }\n\n export function deleteAsync(context: IContext, entity: OrgUnit): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(orgUnitNumber: string): IDataServiceRequest {\n return orgUnitsQuery(orgUnitNumber).read();\n }\n\n export function readAsync(context: IContext, orgUnitNumber: string): AsyncResult {\n const request = createReadAsync(orgUnitNumber);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return orgUnitsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetTillLayoutInput(height?: number | null, width?: number | null, includeImage?: boolean | null): IDataServiceRequest { \n const query = orgUnitsQuery();\n return query.createDataServiceRequestForOperation('GetTillLayout', true, \n 'TillLayoutClass'\n , 'false', {bypassCache: 'none', returnEntity: 'TillLayout'}, {height: height, width: width, includeImage: includeImage });\n } \n \n export function getTillLayoutAsync(context: IContext, height?: number | null, width?: number | null, includeImage?: boolean | null):AsyncResult {\n const request = createGetTillLayoutInput(height, width, includeImage);\n return executeAction(request, context);\n } \n \n export function createSearchInput(queryResultSettings: IQueryResultSettings, storeSearchCriteria?: SearchStoreCriteria | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Search', true, \n 'OrgUnitClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnit'}, {storeSearchCriteria: storeSearchCriteria });\n } \n \n export function searchAsync(context: IContext, storeSearchCriteria?: SearchStoreCriteria | null):AsyncResult {\n const request = createSearchInput(context.queryResultSettings, storeSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetOrgUnitLocationsByAreaInput(queryResultSettings: IQueryResultSettings, searchArea?: SearchArea | null, deliveryModeTypeFilter?: number | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOrgUnitLocationsByArea', true, \n 'OrgUnitLocationClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitLocation'}, {searchArea: searchArea, deliveryModeTypeFilter: deliveryModeTypeFilter });\n } \n \n export function getOrgUnitLocationsByAreaAsync(context: IContext, searchArea?: SearchArea | null, deliveryModeTypeFilter?: number | null):AsyncResult {\n const request = createGetOrgUnitLocationsByAreaInput(context.queryResultSettings, searchArea, deliveryModeTypeFilter);\n return executeAction(request, context);\n } \n \n export function createSearchOrgUnitLocationsInput(queryResultSettings: IQueryResultSettings, orgUnitLocationSearchCriteria?: OrgUnitLocationSearchCriteria | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchOrgUnitLocations', true, \n 'OrgUnitLocationClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitLocation'}, {orgUnitLocationSearchCriteria: orgUnitLocationSearchCriteria });\n } \n \n export function searchOrgUnitLocationsAsync(context: IContext, orgUnitLocationSearchCriteria?: OrgUnitLocationSearchCriteria | null):AsyncResult {\n const request = createSearchOrgUnitLocationsInput(context.queryResultSettings, orgUnitLocationSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetOrgUnitConfigurationInput(): IDataServiceRequest { \n const query = orgUnitsQuery();\n return query.createDataServiceRequestForOperation('GetOrgUnitConfiguration', true, \n 'ChannelConfigurationClass'\n , 'false', {bypassCache: 'none', returnEntity: 'ChannelConfiguration'}, { });\n } \n \n export function getOrgUnitConfigurationAsync(context: IContext, ):AsyncResult {\n const request = createGetOrgUnitConfigurationInput();\n return executeAction(request, context);\n } \n \n export function createGetStoreHoursInput(storeNumber?: string | null): IDataServiceRequest { \n const query = orgUnitsQuery();\n return query.createDataServiceRequestForOperation('GetStoreHours', false, \n 'StoreHoursClass'\n , 'false', {bypassCache: 'none', returnEntity: 'StoreHours'}, {storeNumber: storeNumber });\n } \n \n export function getStoreHoursAsync(context: IContext, storeNumber?: string | null):AsyncResult {\n const request = createGetStoreHoursInput(storeNumber);\n return executeAction(request, context);\n } \n \n export function createGetChannelDeliveryOptionsInput(queryResultSettings: IQueryResultSettings, channelIds: number[], filterOption?: number | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetChannelDeliveryOptions', true, \n 'ChannelDeliveryOptionClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ChannelDeliveryOption'}, {channelIds: channelIds, filterOption: filterOption });\n } \n \n export function getChannelDeliveryOptionsAsync(context: IContext, channelIds: number[], filterOption?: number | null):AsyncResult {\n const request = createGetChannelDeliveryOptionsInput(context.queryResultSettings, channelIds, filterOption);\n return executeAction(request, context);\n } \n \n export function createGetAvailableInventoryInput(queryResultSettings: IQueryResultSettings, itemId?: string | null, variantId?: string | null, barcode?: string | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAvailableInventory', true, \n 'OrgUnitAvailabilityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitAvailability'}, {itemId: itemId, variantId: variantId, barcode: barcode });\n } \n \n export function getAvailableInventoryAsync(context: IContext, itemId?: string | null, variantId?: string | null, barcode?: string | null):AsyncResult {\n const request = createGetAvailableInventoryInput(context.queryResultSettings, itemId, variantId, barcode);\n return executeAction(request, context);\n } \n \n export function createGetAvailableInventoryNearbyInput(queryResultSettings: IQueryResultSettings, itemIds?: ItemUnit[] | null, searchArea?: SearchArea | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAvailableInventoryNearby', true, \n 'OrgUnitAvailabilityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitAvailability'}, {itemIds: itemIds, searchArea: searchArea });\n } \n \n export function getAvailableInventoryNearbyAsync(context: IContext, itemIds?: ItemUnit[] | null, searchArea?: SearchArea | null):AsyncResult {\n const request = createGetAvailableInventoryNearbyInput(context.queryResultSettings, itemIds, searchArea);\n return executeAction(request, context);\n } \n \n export function createGetProductAvailabilityByDimensionsInput(queryResultSettings: IQueryResultSettings, inventLocationIds: string[] | null, productId: number, productDimensionCombinations?: ProductDimensionCombination[] | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductAvailabilityByDimensions', true, \n 'OrgUnitAvailabilityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitAvailability'}, {inventLocationIds: inventLocationIds, productId: productId, productDimensionCombinations: productDimensionCombinations });\n } \n \n export function getProductAvailabilityByDimensionsAsync(context: IContext, inventLocationIds: string[] | null, productId: number, productDimensionCombinations?: ProductDimensionCombination[] | null):AsyncResult {\n const request = createGetProductAvailabilityByDimensionsInput(context.queryResultSettings, inventLocationIds, productId, productDimensionCombinations);\n return executeAction(request, context);\n } \n \n export function createSearchProductAvailabilityInput(queryResultSettings: IQueryResultSettings, productId: number, orgUnitAvailabilitySearchCriteria?: OrgUnitAvailabilitySearchCriteria | null): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchProductAvailability', true, \n 'OrgUnitAvailabilityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitAvailability'}, {productId: productId, orgUnitAvailabilitySearchCriteria: orgUnitAvailabilitySearchCriteria });\n } \n \n export function searchProductAvailabilityAsync(context: IContext, productId: number, orgUnitAvailabilitySearchCriteria?: OrgUnitAvailabilitySearchCriteria | null):AsyncResult {\n const request = createSearchProductAvailabilityInput(context.queryResultSettings, productId, orgUnitAvailabilitySearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetTerminalInfoInput(queryResultSettings: IQueryResultSettings, orgUnitNumber: string, deviceType: number): IDataServiceRequest { \n const query = orgUnitsQuery(orgUnitNumber).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetTerminalInfo', false, \n 'TerminalInfoClass'\n , 'true', {bypassCache: 'none', returnEntity: 'TerminalInfo'}, {deviceType: deviceType });\n } \n \n export function getTerminalInfoAsync(context: IContext, orgUnitNumber: string, deviceType: number):AsyncResult {\n const request = createGetTerminalInfoInput(context.queryResultSettings, orgUnitNumber, deviceType);\n return executeAction(request, context);\n } \n \n export function createGetProductAvailabilityInput(queryResultSettings: IQueryResultSettings, productId: number): IDataServiceRequest { \n const query = orgUnitsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductAvailability', false, \n 'OrgUnitAvailabilityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrgUnitAvailability'}, {productId: productId });\n } \n \n export function getProductAvailabilityAsync(context: IContext, productId: number):AsyncResult {\n const request = createGetProductAvailabilityInput(context.queryResultSettings, productId);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { ProductList, ProductListSearchCriteria, ProductListLine } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function productListsQuery(id?: string): DataServiceQuery {\n var key = (id) ? { Id: id } : null;\n return new DataServiceQuery(\"ProductLists\", \"ProductList\", \"ProductListClass\", key);\n }\n \n export function createCreateInput(entity: ProductList): IDataServiceRequest {\n return productListsQuery().create(entity);\n }\n\n export function createProductListAsync(context: IContext, entity: ProductList): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: ProductList): IDataServiceRequest {\n return productListsQuery(entity.Id).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: ProductList): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: ProductList): IDataServiceRequest {\n return productListsQuery(entity.Id).delete();\n }\n\n export function deleteAsync(context: IContext, entity: ProductList): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(id: string): IDataServiceRequest {\n return productListsQuery(id).read();\n }\n\n export function readAsync(context: IContext, id: string): AsyncResult {\n const request = createReadAsync(id);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return productListsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchInput(queryResultSettings: IQueryResultSettings, searchCriteria?: ProductListSearchCriteria | null): IDataServiceRequest { \n const query = productListsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Search', true, \n 'ProductListClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductList'}, {searchCriteria: searchCriteria });\n } \n \n export function searchAsync(context: IContext, searchCriteria?: ProductListSearchCriteria | null):AsyncResult {\n const request = createSearchInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetProductListLinesInput(queryResultSettings: IQueryResultSettings, id: string, searchText?: string | null): IDataServiceRequest { \n const query = productListsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductListLines', true, \n 'ProductListLineClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductListLine'}, {searchText: searchText });\n } \n \n export function getProductListLinesAsync(context: IContext, id: string, searchText?: string | null):AsyncResult {\n const request = createGetProductListLinesInput(context.queryResultSettings, id, searchText);\n return executeAction(request, context);\n } \n \n export function createAddProductListLinesInput(queryResultSettings: IQueryResultSettings, id: string, productListLines?: ProductListLine[] | null): IDataServiceRequest { \n const query = productListsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('AddProductListLines', true, \n 'ProductListLineClass'\n , 'true', {bypassCache: 'get', returnEntity: 'ProductListLine'}, {productListLines: productListLines });\n } \n \n export function addProductListLinesAsync(context: IContext, id: string, productListLines?: ProductListLine[] | null):AsyncResult {\n const request = createAddProductListLinesInput(context.queryResultSettings, id, productListLines);\n return executeAction(request, context);\n } \n \n export function createUpdateProductListLinesInput(queryResultSettings: IQueryResultSettings, id: string, productListLines?: ProductListLine[] | null): IDataServiceRequest { \n const query = productListsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('UpdateProductListLines', true, \n 'ProductListLineClass'\n , 'true', {bypassCache: 'get', returnEntity: 'ProductListLine'}, {productListLines: productListLines });\n } \n \n export function updateProductListLinesAsync(context: IContext, id: string, productListLines?: ProductListLine[] | null):AsyncResult {\n const request = createUpdateProductListLinesInput(context.queryResultSettings, id, productListLines);\n return executeAction(request, context);\n } \n \n export function createRemoveProductListLinesInput(id: string, productListLines?: ProductListLine[] | null): IDataServiceRequest { \n const query = productListsQuery(id);\n return query.createDataServiceRequestForOperation('RemoveProductListLines', true, '', '', {bypassCache: 'get', returnEntity: ''}, {productListLines: productListLines });\n } \n \n export function removeProductListLinesAsync(context: IContext, id: string, productListLines?: ProductListLine[] | null):AsyncResult {\n const request = createRemoveProductListLinesInput(id, productListLines);\n return executeAction(request, context);\n } \n \n export function createCopyCartToProductListInput(id: string, cartId?: string | null, isRewrite?: boolean | null, isQuantityAggregate?: boolean | null): IDataServiceRequest { \n const query = productListsQuery(id);\n return query.createDataServiceRequestForOperation('CopyCartToProductList', true, \n 'ProductListClass'\n , 'false', {bypassCache: 'get', returnEntity: 'ProductList'}, {cartId: cartId, isRewrite: isRewrite, isQuantityAggregate: isQuantityAggregate });\n } \n \n export function copyCartToProductListAsync(context: IContext, id: string, cartId?: string | null, isRewrite?: boolean | null, isQuantityAggregate?: boolean | null):AsyncResult {\n const request = createCopyCartToProductListInput(id, cartId, isRewrite, isQuantityAggregate);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { Product, ProductSearchCriteria, ProductRefiner, ProductDimension, ProductVariantResolutionOnKitSelectionContext, ProductDimensionValue, ProductDimensionAvailabilitySearchCriteria, ProductDimensionValueInventoryAvailability, SimpleProduct, ComponentInSlotRelation, ProductComparisonLine, ProductSearchResult, ProductRefinerValue, Address, ProductDeliveryOptions, ChangedProductsSearchCriteria, ReadChangedProductsSession, DeletedListingsResult, AssortedProductIdentity, ProductExistenceCriteria, ProductExistenceId, ProductRating, ProductAssortmentInterval, ListingPublishStatus, AttributeProduct, ProductPrice, ProductAvailableQuantity, ProjectionDomain, AffiliationLoyaltyTier, ProductComponent, SearchSuggestion, CategoryPathLookup, CategoryPathResult, UnitOfMeasure, ProductLookupClause, AttributeValue, MediaLocation, MediaBlob, ProductRelationType, ProductWarrantiesMapping, ProductWarehouse, ProductWarehouseInventoryInformation, InventoryAvailabilitySearchCriteria } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function productsQuery(recordId?: number): DataServiceQuery {\n var key = (recordId) ? { RecordId: recordId } : null;\n return new DataServiceQuery(\"Products\", \"Product\", \"ProductClass\", key);\n }\n \n export function createCreateInput(entity: Product): IDataServiceRequest {\n return productsQuery().create(entity);\n }\n\n export function createProductAsync(context: IContext, entity: Product): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: Product): IDataServiceRequest {\n return productsQuery(entity.RecordId).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: Product): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: Product): IDataServiceRequest {\n return productsQuery(entity.RecordId).delete();\n }\n\n export function deleteAsync(context: IContext, entity: Product): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(recordId: number): IDataServiceRequest {\n return productsQuery(recordId).read();\n }\n\n export function readAsync(context: IContext, recordId: number): AsyncResult {\n const request = createReadAsync(recordId);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return productsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchInput(queryResultSettings: IQueryResultSettings, productSearchCriteria?: ProductSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Search', true, \n 'ProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Product'}, {productSearchCriteria: productSearchCriteria });\n } \n \n export function searchAsync(context: IContext, productSearchCriteria?: ProductSearchCriteria | null):AsyncResult {\n const request = createSearchInput(context.queryResultSettings, productSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetRefinersInput(queryResultSettings: IQueryResultSettings, productSearchCriteria?: ProductSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRefiners', true, \n 'ProductRefinerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRefiner'}, {productSearchCriteria: productSearchCriteria });\n } \n \n export function getRefinersAsync(context: IContext, productSearchCriteria?: ProductSearchCriteria | null):AsyncResult {\n const request = createGetRefinersInput(context.queryResultSettings, productSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetDimensionValuesInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, dimension: number, matchingDimensionValues?: ProductDimension[] | null, kitVariantResolutionContext?: ProductVariantResolutionOnKitSelectionContext | null): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDimensionValues', true, \n 'ProductDimensionValueClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductDimensionValue'}, {channelId: channelId, dimension: dimension, matchingDimensionValues: matchingDimensionValues, kitVariantResolutionContext: kitVariantResolutionContext });\n } \n \n export function getDimensionValuesAsync(context: IContext, recordId: number, channelId: number, dimension: number, matchingDimensionValues?: ProductDimension[] | null, kitVariantResolutionContext?: ProductVariantResolutionOnKitSelectionContext | null):AsyncResult {\n const request = createGetDimensionValuesInput(context.queryResultSettings, recordId, channelId, dimension, matchingDimensionValues, kitVariantResolutionContext);\n return executeAction(request, context);\n } \n \n export function createGetDimensionValuesWithEstimatedAvailabilitiesInput(queryResultSettings: IQueryResultSettings, recordId: number, searchCriteria?: ProductDimensionAvailabilitySearchCriteria | null): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDimensionValuesWithEstimatedAvailabilities', true, \n 'ProductDimensionValueInventoryAvailabilityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductDimensionValueInventoryAvailability'}, {searchCriteria: searchCriteria });\n } \n \n export function getDimensionValuesWithEstimatedAvailabilitiesAsync(context: IContext, recordId: number, searchCriteria?: ProductDimensionAvailabilitySearchCriteria | null):AsyncResult {\n const request = createGetDimensionValuesWithEstimatedAvailabilitiesInput(context.queryResultSettings, recordId, searchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetVariantsByDimensionValuesInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, matchingDimensionValues?: ProductDimension[] | null): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetVariantsByDimensionValues', true, \n 'SimpleProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SimpleProduct'}, {channelId: channelId, matchingDimensionValues: matchingDimensionValues });\n } \n \n export function getVariantsByDimensionValuesAsync(context: IContext, recordId: number, channelId: number, matchingDimensionValues?: ProductDimension[] | null):AsyncResult {\n const request = createGetVariantsByDimensionValuesInput(context.queryResultSettings, recordId, channelId, matchingDimensionValues);\n return executeAction(request, context);\n } \n \n export function createGetVariantsByComponentsInSlotsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, matchingSlotToComponentRelationship?: ComponentInSlotRelation[] | null): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetVariantsByComponentsInSlots', true, \n 'SimpleProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SimpleProduct'}, {channelId: channelId, matchingSlotToComponentRelationship: matchingSlotToComponentRelationship });\n } \n \n export function getVariantsByComponentsInSlotsAsync(context: IContext, recordId: number, channelId: number, matchingSlotToComponentRelationship?: ComponentInSlotRelation[] | null):AsyncResult {\n const request = createGetVariantsByComponentsInSlotsInput(context.queryResultSettings, recordId, channelId, matchingSlotToComponentRelationship);\n return executeAction(request, context);\n } \n \n export function createGetByIdsInput(queryResultSettings: IQueryResultSettings, channelId: number, productIds: number[], inventLocationId?: string | null, catalogId?: number | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetByIds', true, \n 'SimpleProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SimpleProduct'}, {channelId: channelId, productIds: productIds, inventLocationId: inventLocationId, catalogId: catalogId });\n } \n \n export function getByIdsAsync(context: IContext, channelId: number, productIds: number[], inventLocationId?: string | null, catalogId?: number | null):AsyncResult {\n const request = createGetByIdsInput(context.queryResultSettings, channelId, productIds, inventLocationId, catalogId);\n return executeAction(request, context);\n } \n \n export function createCompareInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, productIds: number[]): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Compare', true, \n 'ProductComparisonLineClass'\n , 'true', {bypassCache: 'get', returnEntity: 'ProductComparisonLine'}, {channelId: channelId, catalogId: catalogId, productIds: productIds });\n } \n \n export function compareAsync(context: IContext, channelId: number, catalogId: number, productIds: number[]):AsyncResult {\n const request = createCompareInput(context.queryResultSettings, channelId, catalogId, productIds);\n return executeAction(request, context);\n } \n \n export function createGetRecommendedProductsInput(queryResultSettings: IQueryResultSettings, productIds: number[], customerId?: string | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRecommendedProducts', true, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductSearchResult'}, {productIds: productIds, customerId: customerId });\n } \n \n export function getRecommendedProductsAsync(context: IContext, productIds: number[], customerId?: string | null):AsyncResult {\n const request = createGetRecommendedProductsInput(context.queryResultSettings, productIds, customerId);\n return executeAction(request, context);\n } \n \n export function createRefineSearchByCategoryInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, categoryId: number, refinementCriteria?: ProductRefinerValue[] | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('RefineSearchByCategory', true, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'get', returnEntity: 'ProductSearchResult'}, {channelId: channelId, catalogId: catalogId, categoryId: categoryId, refinementCriteria: refinementCriteria });\n } \n \n export function refineSearchByCategoryAsync(context: IContext, channelId: number, catalogId: number, categoryId: number, refinementCriteria?: ProductRefinerValue[] | null):AsyncResult {\n const request = createRefineSearchByCategoryInput(context.queryResultSettings, channelId, catalogId, categoryId, refinementCriteria);\n return executeAction(request, context);\n } \n \n export function createRefineSearchByTextInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, searchText?: string | null, refinementCriteria?: ProductRefinerValue[] | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('RefineSearchByText', true, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'get', returnEntity: 'ProductSearchResult'}, {channelId: channelId, catalogId: catalogId, searchText: searchText, refinementCriteria: refinementCriteria });\n } \n \n export function refineSearchByTextAsync(context: IContext, channelId: number, catalogId: number, searchText?: string | null, refinementCriteria?: ProductRefinerValue[] | null):AsyncResult {\n const request = createRefineSearchByTextInput(context.queryResultSettings, channelId, catalogId, searchText, refinementCriteria);\n return executeAction(request, context);\n } \n \n export function createGetProductSearchRefinersInput(queryResultSettings: IQueryResultSettings, searchCriteria?: ProductSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductSearchRefiners', true, \n 'ProductRefinerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRefiner'}, {searchCriteria: searchCriteria });\n } \n \n export function getProductSearchRefinersAsync(context: IContext, searchCriteria?: ProductSearchCriteria | null):AsyncResult {\n const request = createGetProductSearchRefinersInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetDeliveryOptionsInput(queryResultSettings: IQueryResultSettings, productIds: number[], address?: Address | null, filterOption?: number | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDeliveryOptions', true, \n 'ProductDeliveryOptionsClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductDeliveryOptions'}, {productIds: productIds, address: address, filterOption: filterOption });\n } \n \n export function getDeliveryOptionsAsync(context: IContext, productIds: number[], address?: Address | null, filterOption?: number | null):AsyncResult {\n const request = createGetDeliveryOptionsInput(context.queryResultSettings, productIds, address, filterOption);\n return executeAction(request, context);\n } \n \n export function createChangesInput(queryResultSettings: IQueryResultSettings, productSearchCriteria?: ChangedProductsSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Changes', true, \n 'ProductClass'\n , 'true', {bypassCache: 'get', returnEntity: 'Product'}, {productSearchCriteria: productSearchCriteria });\n } \n \n export function changesAsync(context: IContext, productSearchCriteria?: ChangedProductsSearchCriteria | null):AsyncResult {\n const request = createChangesInput(context.queryResultSettings, productSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createBeginReadChangedProductsInput(changedProductSearchCriteria?: ChangedProductsSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('BeginReadChangedProducts', true, \n 'ReadChangedProductsSessionClass'\n , 'false', {bypassCache: 'get', returnEntity: 'ReadChangedProductsSession'}, {changedProductSearchCriteria: changedProductSearchCriteria });\n } \n \n export function beginReadChangedProductsAsync(context: IContext, changedProductSearchCriteria?: ChangedProductsSearchCriteria | null):AsyncResult {\n const request = createBeginReadChangedProductsInput(changedProductSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createReadChangedProductsInput(queryResultSettings: IQueryResultSettings, productSearchCriteria?: ChangedProductsSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('ReadChangedProducts', true, \n 'ProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Product'}, {productSearchCriteria: productSearchCriteria });\n } \n \n export function readChangedProductsAsync(context: IContext, productSearchCriteria?: ChangedProductsSearchCriteria | null):AsyncResult {\n const request = createReadChangedProductsInput(context.queryResultSettings, productSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetDeletedListingsInput(catalogId: number, skip: number, top: number): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('GetDeletedListings', true, \n 'DeletedListingsResultClass'\n , 'false', {bypassCache: 'none', returnEntity: 'DeletedListingsResult'}, {catalogId: catalogId, skip: skip, top: top });\n } \n \n export function getDeletedListingsAsync(context: IContext, catalogId: number, skip: number, top: number):AsyncResult {\n const request = createGetDeletedListingsInput(catalogId, skip, top);\n return executeAction(request, context);\n } \n \n export function createGetAssortedProductIdsInput(queryResultSettings: IQueryResultSettings, productIds: number[], includeFutureAssortedProducts: boolean): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAssortedProductIds', true, \n 'AssortedProductIdentityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'AssortedProductIdentity'}, {productIds: productIds, includeFutureAssortedProducts: includeFutureAssortedProducts });\n } \n \n export function getAssortedProductIdsAsync(context: IContext, productIds: number[], includeFutureAssortedProducts: boolean):AsyncResult {\n const request = createGetAssortedProductIdsInput(context.queryResultSettings, productIds, includeFutureAssortedProducts);\n return executeAction(request, context);\n } \n \n export function createCheckProductsExistenceInput(queryResultSettings: IQueryResultSettings, productExistenceCriteria?: ProductExistenceCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('CheckProductsExistence', true, \n 'ProductExistenceIdClass'\n , 'true', {bypassCache: 'get', returnEntity: 'ProductExistenceId'}, {productExistenceCriteria: productExistenceCriteria });\n } \n \n export function checkProductsExistenceAsync(context: IContext, productExistenceCriteria?: ProductExistenceCriteria | null):AsyncResult {\n const request = createCheckProductsExistenceInput(context.queryResultSettings, productExistenceCriteria);\n return executeAction(request, context);\n } \n \n export function createGetDeletedCatalogsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDeletedCatalogs', false, '', 'true', {bypassCache: 'none', returnEntity: ''}, { });\n } \n \n export function getDeletedCatalogsAsync(context: IContext, ):AsyncResult {\n const request = createGetDeletedCatalogsInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetDeletedLanguagesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDeletedLanguages', false, '', 'true', {bypassCache: 'none', returnEntity: ''}, { });\n } \n \n export function getDeletedLanguagesAsync(context: IContext, ):AsyncResult {\n const request = createGetDeletedLanguagesInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetProductRatingsInput(queryResultSettings: IQueryResultSettings, productIds: number[]): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductRatings', true, \n 'ProductRatingClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRating'}, {productIds: productIds });\n } \n \n export function getProductRatingsAsync(context: IContext, productIds: number[]):AsyncResult {\n const request = createGetProductRatingsInput(context.queryResultSettings, productIds);\n return executeAction(request, context);\n } \n \n export function createGetProductAssortmentIntervalsInput(queryResultSettings: IQueryResultSettings, productIds: number[]): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductAssortmentIntervals', true, \n 'ProductAssortmentIntervalClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductAssortmentInterval'}, {productIds: productIds });\n } \n \n export function getProductAssortmentIntervalsAsync(context: IContext, productIds: number[]):AsyncResult {\n const request = createGetProductAssortmentIntervalsInput(context.queryResultSettings, productIds);\n return executeAction(request, context);\n } \n \n export function createDeleteListingsByCatalogsInput(catalogIds: number[]): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('DeleteListingsByCatalogs', true, '', '', {bypassCache: 'get', returnEntity: ''}, {catalogIds: catalogIds });\n } \n \n export function deleteListingsByCatalogsAsync(context: IContext, catalogIds: number[]):AsyncResult {\n const request = createDeleteListingsByCatalogsInput(catalogIds);\n return executeAction(request, context);\n } \n \n export function createDeleteListingsByLanguagesInput(languages?: string[] | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('DeleteListingsByLanguages', true, '', '', {bypassCache: 'get', returnEntity: ''}, {languages: languages });\n } \n \n export function deleteListingsByLanguagesAsync(context: IContext, languages?: string[] | null):AsyncResult {\n const request = createDeleteListingsByLanguagesInput(languages);\n return executeAction(request, context);\n } \n \n export function createEndReadChangedProductsInput(session?: ReadChangedProductsSession | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('EndReadChangedProducts', true, '', '', {bypassCache: 'get', returnEntity: ''}, {session: session });\n } \n \n export function endReadChangedProductsAsync(context: IContext, session?: ReadChangedProductsSession | null):AsyncResult {\n const request = createEndReadChangedProductsInput(session);\n return executeAction(request, context);\n } \n \n export function createUpdateListingPublishingStatusInput(publishingStatuses?: ListingPublishStatus[] | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('UpdateListingPublishingStatus', true, '', '', {bypassCache: 'get', returnEntity: ''}, {publishingStatuses: publishingStatuses });\n } \n \n export function updateListingPublishingStatusAsync(context: IContext, publishingStatuses?: ListingPublishStatus[] | null):AsyncResult {\n const request = createUpdateListingPublishingStatusInput(publishingStatuses);\n return executeAction(request, context);\n } \n \n export function createGetCatalogProductAttributesInput(queryResultSettings: IQueryResultSettings, catalogId: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCatalogProductAttributes', true, \n 'AttributeProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'AttributeProduct'}, {catalogId: catalogId });\n } \n \n export function getCatalogProductAttributesAsync(context: IContext, catalogId: number):AsyncResult {\n const request = createGetCatalogProductAttributesInput(context.queryResultSettings, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetPricesInput(queryResultSettings: IQueryResultSettings, itemId: string | null, inventoryDimensionId: string | null, barcode: string | null, customerAccountNumber: string | null, unitOfMeasureSymbol: string | null, quantity: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetPrices', true, \n 'ProductPriceClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductPrice'}, {itemId: itemId, inventoryDimensionId: inventoryDimensionId, barcode: barcode, customerAccountNumber: customerAccountNumber, unitOfMeasureSymbol: unitOfMeasureSymbol, quantity: quantity });\n } \n \n export function getPricesAsync(context: IContext, itemId: string | null, inventoryDimensionId: string | null, barcode: string | null, customerAccountNumber: string | null, unitOfMeasureSymbol: string | null, quantity: number):AsyncResult {\n const request = createGetPricesInput(context.queryResultSettings, itemId, inventoryDimensionId, barcode, customerAccountNumber, unitOfMeasureSymbol, quantity);\n return executeAction(request, context);\n } \n \n export function createGetProductAvailabilitiesInput(queryResultSettings: IQueryResultSettings, itemIds: number[], channelId: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetProductAvailabilities', true, \n 'ProductAvailableQuantityClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductAvailableQuantity'}, {itemIds: itemIds, channelId: channelId });\n } \n \n export function getProductAvailabilitiesAsync(context: IContext, itemIds: number[], channelId: number):AsyncResult {\n const request = createGetProductAvailabilitiesInput(context.queryResultSettings, itemIds, channelId);\n return executeAction(request, context);\n } \n \n export function createGetActivePricesInput(queryResultSettings: IQueryResultSettings, projectDomain: ProjectionDomain | null, productIds: number[], activeDate: Date, customerId?: string | null, affiliationLoyaltyTiers?: AffiliationLoyaltyTier[] | null, includeSimpleDiscountsInContextualPrice?: boolean | null, includeVariantPriceRange?: boolean | null, includeAttainablePricesAndDiscounts?: boolean | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetActivePrices', true, \n 'ProductPriceClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductPrice'}, {projectDomain: projectDomain, productIds: productIds, activeDate: activeDate, customerId: customerId, affiliationLoyaltyTiers: affiliationLoyaltyTiers, includeSimpleDiscountsInContextualPrice: includeSimpleDiscountsInContextualPrice, includeVariantPriceRange: includeVariantPriceRange, includeAttainablePricesAndDiscounts: includeAttainablePricesAndDiscounts });\n } \n \n export function getActivePricesAsync(context: IContext, projectDomain: ProjectionDomain | null, productIds: number[], activeDate: Date, customerId?: string | null, affiliationLoyaltyTiers?: AffiliationLoyaltyTier[] | null, includeSimpleDiscountsInContextualPrice?: boolean | null, includeVariantPriceRange?: boolean | null, includeAttainablePricesAndDiscounts?: boolean | null):AsyncResult {\n const request = createGetActivePricesInput(context.queryResultSettings, projectDomain, productIds, activeDate, customerId, affiliationLoyaltyTiers, includeSimpleDiscountsInContextualPrice, includeVariantPriceRange, includeAttainablePricesAndDiscounts);\n return executeAction(request, context);\n } \n \n export function createGetFilteredSlotComponentsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, slotId: number, selectedComponents?: ComponentInSlotRelation[] | null): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFilteredSlotComponents', true, \n 'ProductComponentClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductComponent'}, {channelId: channelId, slotId: slotId, selectedComponents: selectedComponents });\n } \n \n export function getFilteredSlotComponentsAsync(context: IContext, recordId: number, channelId: number, slotId: number, selectedComponents?: ComponentInSlotRelation[] | null):AsyncResult {\n const request = createGetFilteredSlotComponentsInput(context.queryResultSettings, recordId, channelId, slotId, selectedComponents);\n return executeAction(request, context);\n } \n \n export function createGetComponentByProductSlotRelationInput(channelId: number, componentRelation?: ComponentInSlotRelation | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('GetComponentByProductSlotRelation', true, \n 'ProductComponentClass'\n , 'false', {bypassCache: 'none', returnEntity: 'ProductComponent'}, {channelId: channelId, componentRelation: componentRelation });\n } \n \n export function getComponentByProductSlotRelationAsync(context: IContext, channelId: number, componentRelation?: ComponentInSlotRelation | null):AsyncResult {\n const request = createGetComponentByProductSlotRelationInput(channelId, componentRelation);\n return executeAction(request, context);\n } \n \n export function createGetSearchSuggestionsInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, searchText?: string | null, hitPrefix?: string | null, hitSuffix?: string | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSearchSuggestions', false, \n 'SearchSuggestionClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SearchSuggestion'}, {channelId: channelId, catalogId: catalogId, searchText: searchText, hitPrefix: hitPrefix, hitSuffix: hitSuffix });\n } \n \n export function getSearchSuggestionsAsync(context: IContext, channelId: number, catalogId: number, searchText?: string | null, hitPrefix?: string | null, hitSuffix?: string | null):AsyncResult {\n const request = createGetSearchSuggestionsInput(context.queryResultSettings, channelId, catalogId, searchText, hitPrefix, hitSuffix);\n return executeAction(request, context);\n } \n \n export function createGetCategoryPathsInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, categoryPathLookups?: CategoryPathLookup[] | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCategoryPaths', true, \n 'CategoryPathResultClass'\n , 'true', {bypassCache: 'none', returnEntity: 'CategoryPathResult'}, {channelId: channelId, catalogId: catalogId, CategoryPathLookups: categoryPathLookups });\n } \n \n export function getCategoryPathsAsync(context: IContext, channelId: number, catalogId: number, categoryPathLookups?: CategoryPathLookup[] | null):AsyncResult {\n const request = createGetCategoryPathsInput(context.queryResultSettings, channelId, catalogId, categoryPathLookups);\n return executeAction(request, context);\n } \n \n export function createGetUnitsOfMeasureInput(queryResultSettings: IQueryResultSettings, recordId: number, ): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetUnitsOfMeasure', false, \n 'UnitOfMeasureClass'\n , 'true', {bypassCache: 'none', returnEntity: 'UnitOfMeasure'}, { });\n } \n \n export function getUnitsOfMeasureAsync(context: IContext, recordId: number):AsyncResult {\n const request = createGetUnitsOfMeasureInput(context.queryResultSettings, recordId);\n return executeAction(request, context);\n } \n \n export function createSearchByCategoryInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, categoryId: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchByCategory', false, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductSearchResult'}, {channelId: channelId, catalogId: catalogId, categoryId: categoryId });\n } \n \n export function searchByCategoryAsync(context: IContext, channelId: number, catalogId: number, categoryId: number):AsyncResult {\n const request = createSearchByCategoryInput(context.queryResultSettings, channelId, catalogId, categoryId);\n return executeAction(request, context);\n } \n \n export function createSearchByTextInput(queryResultSettings: IQueryResultSettings, channelId: number, catalogId: number, searchText?: string | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchByText', false, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductSearchResult'}, {channelId: channelId, catalogId: catalogId, searchText: searchText });\n } \n \n export function searchByTextAsync(context: IContext, channelId: number, catalogId: number, searchText?: string | null):AsyncResult {\n const request = createSearchByTextInput(context.queryResultSettings, channelId, catalogId, searchText);\n return executeAction(request, context);\n } \n \n export function createSearchByCriteriaInput(queryResultSettings: IQueryResultSettings, searchCriteria?: ProductSearchCriteria | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchByCriteria', true, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductSearchResult'}, {searchCriteria: searchCriteria });\n } \n \n export function searchByCriteriaAsync(context: IContext, searchCriteria?: ProductSearchCriteria | null):AsyncResult {\n const request = createSearchByCriteriaInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetByLookupClausesInput(queryResultSettings: IQueryResultSettings, channelId: number, productLookupClauses?: ProductLookupClause[] | null, catalogId?: number | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetByLookupClauses', true, \n 'SimpleProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SimpleProduct'}, {channelId: channelId, productLookupClauses: productLookupClauses, catalogId: catalogId });\n } \n \n export function getByLookupClausesAsync(context: IContext, channelId: number, productLookupClauses?: ProductLookupClause[] | null, catalogId?: number | null):AsyncResult {\n const request = createGetByLookupClausesInput(context.queryResultSettings, channelId, productLookupClauses, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetRefinersByCategoryInput(queryResultSettings: IQueryResultSettings, catalogId: number, categoryId: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRefinersByCategory', false, \n 'ProductRefinerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRefiner'}, {catalogId: catalogId, categoryId: categoryId });\n } \n \n export function getRefinersByCategoryAsync(context: IContext, catalogId: number, categoryId: number):AsyncResult {\n const request = createGetRefinersByCategoryInput(context.queryResultSettings, catalogId, categoryId);\n return executeAction(request, context);\n } \n \n export function createGetRefinersByTextInput(queryResultSettings: IQueryResultSettings, catalogId: number, searchText?: string | null): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRefinersByText', false, \n 'ProductRefinerClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRefiner'}, {catalogId: catalogId, searchText: searchText });\n } \n \n export function getRefinersByTextAsync(context: IContext, catalogId: number, searchText?: string | null):AsyncResult {\n const request = createGetRefinersByTextInput(context.queryResultSettings, catalogId, searchText);\n return executeAction(request, context);\n } \n \n export function createGetRefinerValuesByCategoryInput(queryResultSettings: IQueryResultSettings, catalogId: number, categoryId: number, refinerId: number, refinerSourceValue: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRefinerValuesByCategory', false, \n 'ProductRefinerValueClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRefinerValue'}, {catalogId: catalogId, categoryId: categoryId, refinerId: refinerId, refinerSourceValue: refinerSourceValue });\n } \n \n export function getRefinerValuesByCategoryAsync(context: IContext, catalogId: number, categoryId: number, refinerId: number, refinerSourceValue: number):AsyncResult {\n const request = createGetRefinerValuesByCategoryInput(context.queryResultSettings, catalogId, categoryId, refinerId, refinerSourceValue);\n return executeAction(request, context);\n } \n \n export function createGetRefinerValuesByTextInput(queryResultSettings: IQueryResultSettings, catalogId: number, searchText: string | null, refinerId: number, refinerSourceValue: number): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRefinerValuesByText', false, \n 'ProductRefinerValueClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRefinerValue'}, {catalogId: catalogId, searchText: searchText, refinerId: refinerId, refinerSourceValue: refinerSourceValue });\n } \n \n export function getRefinerValuesByTextAsync(context: IContext, catalogId: number, searchText: string | null, refinerId: number, refinerSourceValue: number):AsyncResult {\n const request = createGetRefinerValuesByTextInput(context.queryResultSettings, catalogId, searchText, refinerId, refinerSourceValue);\n return executeAction(request, context);\n } \n \n export function createGetChannelProductAttributesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetChannelProductAttributes', false, \n 'AttributeProductClass'\n , 'true', {bypassCache: 'none', returnEntity: 'AttributeProduct'}, { });\n } \n \n export function getChannelProductAttributesAsync(context: IContext, ):AsyncResult {\n const request = createGetChannelProductAttributesInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetByIdInput(recordId: number, channelId: number): IDataServiceRequest { \n const query = productsQuery(recordId);\n return query.createDataServiceRequestForOperation('GetById', false, \n 'SimpleProductClass'\n , 'false', {bypassCache: 'none', returnEntity: 'SimpleProduct'}, {channelId: channelId });\n } \n \n export function getByIdAsync(context: IContext, recordId: number, channelId: number):AsyncResult {\n const request = createGetByIdInput(recordId, channelId);\n return executeAction(request, context);\n } \n \n export function createGetAttributeValuesInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, catalogId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAttributeValues', false, \n 'AttributeValueClass'\n , 'true', {bypassCache: 'none', returnEntity: 'AttributeValue'}, {channelId: channelId, catalogId: catalogId });\n } \n \n export function getAttributeValuesAsync(context: IContext, recordId: number, channelId: number, catalogId: number):AsyncResult {\n const request = createGetAttributeValuesInput(context.queryResultSettings, recordId, channelId, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetMediaLocationsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, catalogId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetMediaLocations', false, \n 'MediaLocationClass'\n , 'true', {bypassCache: 'none', returnEntity: 'MediaLocation'}, {channelId: channelId, catalogId: catalogId });\n } \n \n export function getMediaLocationsAsync(context: IContext, recordId: number, channelId: number, catalogId: number):AsyncResult {\n const request = createGetMediaLocationsInput(context.queryResultSettings, recordId, channelId, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetMediaBlobsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, catalogId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetMediaBlobs', false, \n 'MediaBlobClass'\n , 'true', {bypassCache: 'none', returnEntity: 'MediaBlob'}, {channelId: channelId, catalogId: catalogId });\n } \n \n export function getMediaBlobsAsync(context: IContext, recordId: number, channelId: number, catalogId: number):AsyncResult {\n const request = createGetMediaBlobsInput(context.queryResultSettings, recordId, channelId, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetDefaultComponentsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDefaultComponents', false, \n 'ProductComponentClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductComponent'}, {channelId: channelId });\n } \n \n export function getDefaultComponentsAsync(context: IContext, recordId: number, channelId: number):AsyncResult {\n const request = createGetDefaultComponentsInput(context.queryResultSettings, recordId, channelId);\n return executeAction(request, context);\n } \n \n export function createGetSlotComponentsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, slotId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSlotComponents', false, \n 'ProductComponentClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductComponent'}, {channelId: channelId, slotId: slotId });\n } \n \n export function getSlotComponentsAsync(context: IContext, recordId: number, channelId: number, slotId: number):AsyncResult {\n const request = createGetSlotComponentsInput(context.queryResultSettings, recordId, channelId, slotId);\n return executeAction(request, context);\n } \n \n export function createGetAllRelationTypesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAllRelationTypes', false, \n 'ProductRelationTypeClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRelationType'}, { });\n } \n \n export function getAllRelationTypesAsync(context: IContext, ):AsyncResult {\n const request = createGetAllRelationTypesInput(context.queryResultSettings, );\n return executeAction(request, context);\n } \n \n export function createGetRelationTypesInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, catalogId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRelationTypes', false, \n 'ProductRelationTypeClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductRelationType'}, {channelId: channelId, catalogId: catalogId });\n } \n \n export function getRelationTypesAsync(context: IContext, recordId: number, channelId: number, catalogId: number):AsyncResult {\n const request = createGetRelationTypesInput(context.queryResultSettings, recordId, channelId, catalogId);\n return executeAction(request, context);\n } \n \n export function createGetRelatedProductsInput(queryResultSettings: IQueryResultSettings, recordId: number, channelId: number, catalogId: number, relationTypeId: number): IDataServiceRequest { \n const query = productsQuery(recordId).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetRelatedProducts', false, \n 'ProductSearchResultClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductSearchResult'}, {channelId: channelId, catalogId: catalogId, relationTypeId: relationTypeId });\n } \n \n export function getRelatedProductsAsync(context: IContext, recordId: number, channelId: number, catalogId: number, relationTypeId: number):AsyncResult {\n const request = createGetRelatedProductsInput(context.queryResultSettings, recordId, channelId, catalogId, relationTypeId);\n return executeAction(request, context);\n } \n \n export function createGetApplicableWarrantiesInput(queryResultSettings: IQueryResultSettings, catalogId: number, warrantableProductIds: number[]): IDataServiceRequest { \n const query = productsQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetApplicableWarranties', true, \n 'ProductWarrantiesMappingClass'\n , 'true', {bypassCache: 'none', returnEntity: 'ProductWarrantiesMapping'}, {catalogId: catalogId, warrantableProductIds: warrantableProductIds });\n } \n \n export function getApplicableWarrantiesAsync(context: IContext, catalogId: number, warrantableProductIds: number[]):AsyncResult {\n const request = createGetApplicableWarrantiesInput(context.queryResultSettings, catalogId, warrantableProductIds);\n return executeAction(request, context);\n } \n \n export function createGetPriceInput(recordId: number, customerAccountNumber?: string | null, unitOfMeasureSymbol?: string | null): IDataServiceRequest { \n const query = productsQuery(recordId);\n return query.createDataServiceRequestForOperation('GetPrice', false, \n 'ProductPriceClass'\n , 'false', {bypassCache: 'none', returnEntity: 'ProductPrice'}, {customerAccountNumber: customerAccountNumber, unitOfMeasureSymbol: unitOfMeasureSymbol });\n } \n \n export function getPriceAsync(context: IContext, recordId: number, customerAccountNumber?: string | null, unitOfMeasureSymbol?: string | null):AsyncResult {\n const request = createGetPriceInput(recordId, customerAccountNumber, unitOfMeasureSymbol);\n return executeAction(request, context);\n } \n \n export function createCalculateProductPriceInput(recordId: number, customerAccountNumber?: string | null, unitOfMeasureSymbol?: string | null, loyaltyCardId?: string | null, affiliationLoyaltyTiers?: AffiliationLoyaltyTier[] | null): IDataServiceRequest { \n const query = productsQuery(recordId);\n return query.createDataServiceRequestForOperation('CalculateProductPrice', true, \n 'ProductPriceClass'\n , 'false', {bypassCache: 'get', returnEntity: 'ProductPrice'}, {customerAccountNumber: customerAccountNumber, unitOfMeasureSymbol: unitOfMeasureSymbol, loyaltyCardId: loyaltyCardId, affiliationLoyaltyTiers: affiliationLoyaltyTiers });\n } \n \n export function calculateProductPriceAsync(context: IContext, recordId: number, customerAccountNumber?: string | null, unitOfMeasureSymbol?: string | null, loyaltyCardId?: string | null, affiliationLoyaltyTiers?: AffiliationLoyaltyTier[] | null):AsyncResult {\n const request = createCalculateProductPriceInput(recordId, customerAccountNumber, unitOfMeasureSymbol, loyaltyCardId, affiliationLoyaltyTiers);\n return executeAction(request, context);\n } \n \n export function createGetEstimatedProductWarehouseAvailabilityInput(productWarehouses?: ProductWarehouse[] | null, quantityUnitType?: number | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('GetEstimatedProductWarehouseAvailability', true, \n 'ProductWarehouseInventoryInformationClass'\n , 'false', {bypassCache: 'none', returnEntity: 'ProductWarehouseInventoryInformation'}, {productWarehouses: productWarehouses, quantityUnitType: quantityUnitType });\n } \n \n export function getEstimatedProductWarehouseAvailabilityAsync(context: IContext, productWarehouses?: ProductWarehouse[] | null, quantityUnitType?: number | null):AsyncResult {\n const request = createGetEstimatedProductWarehouseAvailabilityInput(productWarehouses, quantityUnitType);\n return executeAction(request, context);\n } \n \n export function createGetEstimatedAvailabilityInput(searchCriteria?: InventoryAvailabilitySearchCriteria | null): IDataServiceRequest { \n const query = productsQuery();\n return query.createDataServiceRequestForOperation('GetEstimatedAvailability', true, \n 'ProductWarehouseInventoryInformationClass'\n , 'false', {bypassCache: 'none', returnEntity: 'ProductWarehouseInventoryInformation'}, {searchCriteria: searchCriteria });\n } \n \n export function getEstimatedAvailabilityAsync(context: IContext, searchCriteria?: InventoryAvailabilitySearchCriteria | null):AsyncResult {\n const request = createGetEstimatedAvailabilityInput(searchCriteria);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { Recommendation, RecommendationCriteria, RecommendedElement } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function recommendationsQuery(id?: string): DataServiceQuery {\n var key = (id) ? { Id: id } : null;\n return new DataServiceQuery(\"Recommendations\", \"Recommendation\", \"RecommendationClass\", key);\n }\n \n export function createCreateInput(entity: Recommendation): IDataServiceRequest {\n return recommendationsQuery().create(entity);\n }\n\n export function createRecommendationAsync(context: IContext, entity: Recommendation): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: Recommendation): IDataServiceRequest {\n return recommendationsQuery(entity.Id).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: Recommendation): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: Recommendation): IDataServiceRequest {\n return recommendationsQuery(entity.Id).delete();\n }\n\n export function deleteAsync(context: IContext, entity: Recommendation): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(id: string): IDataServiceRequest {\n return recommendationsQuery(id).read();\n }\n\n export function readAsync(context: IContext, id: string): AsyncResult {\n const request = createReadAsync(id);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return recommendationsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetElementsInput(queryResultSettings: IQueryResultSettings, id: string, recommendationCriteria?: RecommendationCriteria | null): IDataServiceRequest { \n const query = recommendationsQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetElements', true, \n 'RecommendedElementClass'\n , 'true', {bypassCache: 'none', returnEntity: 'RecommendedElement'}, {recommendationCriteria: recommendationCriteria });\n } \n \n export function getElementsAsync(context: IContext, id: string, recommendationCriteria?: RecommendationCriteria | null):AsyncResult {\n const request = createGetElementsInput(context.queryResultSettings, id, recommendationCriteria);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { SalesOrder, SalesOrderSearchCriteria, OrderSearchCriteria, FulfillmentLineSearchCriteria, FulfillmentLine, ReceiptRetrievalCriteria, Receipt, SearchReceiptCriteria, ElectronicAddress, ChannelReferenceLookupCriteria, ShipFulfillmentLine, FulfillmentLineParameter, RejectFulfillmentLine, SalesInvoice, OrderInvoice, InvoiceSearchCriteria, InvoiceDetailsSearchCriteria, SalesLine, PickAndPackSalesLineParameter, PickingList, FulfillmentLineUserAlerts, CommerceProperty, CheckInForOrderPickupConfirmation, PackingSlipData } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function salesOrdersQuery(id?: string): DataServiceQuery {\n var key = (id) ? { Id: id } : null;\n return new DataServiceQuery(\"SalesOrders\", \"SalesOrder\", \"SalesOrderClass\", key);\n }\n \n export function createCreateInput(entity: SalesOrder): IDataServiceRequest {\n return salesOrdersQuery().create(entity);\n }\n\n export function createSalesOrderAsync(context: IContext, entity: SalesOrder): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: SalesOrder): IDataServiceRequest {\n return salesOrdersQuery(entity.Id).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: SalesOrder): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: SalesOrder): IDataServiceRequest {\n return salesOrdersQuery(entity.Id).delete();\n }\n\n export function deleteAsync(context: IContext, entity: SalesOrder): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(id: string): IDataServiceRequest {\n return salesOrdersQuery(id).read();\n }\n\n export function readAsync(context: IContext, id: string): AsyncResult {\n const request = createReadAsync(id);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return salesOrdersQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchInput(queryResultSettings: IQueryResultSettings, salesOrderSearchCriteria?: SalesOrderSearchCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('Search', true, \n 'SalesOrderClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {salesOrderSearchCriteria: salesOrderSearchCriteria });\n } \n \n export function searchAsync(context: IContext, salesOrderSearchCriteria?: SalesOrderSearchCriteria | null):AsyncResult {\n const request = createSearchInput(context.queryResultSettings, salesOrderSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createSearchSalesTransactionsByReceiptIdInput(queryResultSettings: IQueryResultSettings, receiptId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchSalesTransactionsByReceiptId', true, \n 'SalesOrderClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {receiptId: receiptId });\n } \n \n export function searchSalesTransactionsByReceiptIdAsync(context: IContext, receiptId?: string | null):AsyncResult {\n const request = createSearchSalesTransactionsByReceiptIdInput(context.queryResultSettings, receiptId);\n return executeAction(request, context);\n } \n \n export function createSearchOrdersInput(queryResultSettings: IQueryResultSettings, orderSearchCriteria?: OrderSearchCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchOrders', true, \n 'SalesOrderClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {orderSearchCriteria: orderSearchCriteria });\n } \n \n export function searchOrdersAsync(context: IContext, orderSearchCriteria?: OrderSearchCriteria | null):AsyncResult {\n const request = createSearchOrdersInput(context.queryResultSettings, orderSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetFulfillmentLinesInput(queryResultSettings: IQueryResultSettings, fulfillmentLineSearchCriteria?: FulfillmentLineSearchCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFulfillmentLines', true, \n 'FulfillmentLineClass'\n , 'true', {bypassCache: 'none', returnEntity: 'FulfillmentLine'}, {fulfillmentLineSearchCriteria: fulfillmentLineSearchCriteria });\n } \n \n export function getFulfillmentLinesAsync(context: IContext, fulfillmentLineSearchCriteria?: FulfillmentLineSearchCriteria | null):AsyncResult {\n const request = createGetFulfillmentLinesInput(context.queryResultSettings, fulfillmentLineSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetReceiptsInput(queryResultSettings: IQueryResultSettings, id: string, receiptRetrievalCriteria?: ReceiptRetrievalCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReceipts', true, \n 'ReceiptClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Receipt'}, {receiptRetrievalCriteria: receiptRetrievalCriteria });\n } \n \n export function getReceiptsAsync(context: IContext, id: string, receiptRetrievalCriteria?: ReceiptRetrievalCriteria | null):AsyncResult {\n const request = createGetReceiptsInput(context.queryResultSettings, id, receiptRetrievalCriteria);\n return executeAction(request, context);\n } \n \n export function createSendReceiptInput(searchCriteria?: SearchReceiptCriteria | null, recipientAddresses?: ElectronicAddress[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('SendReceipt', true, '', '', {bypassCache: 'get', returnEntity: ''}, {searchCriteria: searchCriteria, recipientAddresses: recipientAddresses });\n } \n \n export function sendReceiptAsync(context: IContext, searchCriteria?: SearchReceiptCriteria | null, recipientAddresses?: ElectronicAddress[] | null):AsyncResult {\n const request = createSendReceiptInput(searchCriteria, recipientAddresses);\n return executeAction(request, context);\n } \n \n export function createGetGiftReceiptsInput(queryResultSettings: IQueryResultSettings, id: string, salesLineNumbers: number[], receiptRetrievalCriteria?: ReceiptRetrievalCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetGiftReceipts', true, \n 'ReceiptClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Receipt'}, {SalesLineNumbers: salesLineNumbers, receiptRetrievalCriteria: receiptRetrievalCriteria });\n } \n \n export function getGiftReceiptsAsync(context: IContext, id: string, salesLineNumbers: number[], receiptRetrievalCriteria?: ReceiptRetrievalCriteria | null):AsyncResult {\n const request = createGetGiftReceiptsInput(context.queryResultSettings, id, salesLineNumbers, receiptRetrievalCriteria);\n return executeAction(request, context);\n } \n \n export function createGetByReceiptIdInput(queryResultSettings: IQueryResultSettings, receiptId?: string | null, orderStoreNumber?: string | null, orderTerminalId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetByReceiptId', true, \n 'SalesOrderClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {receiptId: receiptId, orderStoreNumber: orderStoreNumber, orderTerminalId: orderTerminalId });\n } \n \n export function getByReceiptIdAsync(context: IContext, receiptId?: string | null, orderStoreNumber?: string | null, orderTerminalId?: string | null):AsyncResult {\n const request = createGetByReceiptIdInput(context.queryResultSettings, receiptId, orderStoreNumber, orderTerminalId);\n return executeAction(request, context);\n } \n \n export function createGetSalesOrderDetailsByTransactionIdInput(transactionId: string | null, searchLocationValue: number): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('GetSalesOrderDetailsByTransactionId', false, \n 'SalesOrderClass'\n , 'false', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {transactionId: transactionId, searchLocationValue: searchLocationValue });\n } \n \n export function getSalesOrderDetailsByTransactionIdAsync(context: IContext, transactionId: string | null, searchLocationValue: number):AsyncResult {\n const request = createGetSalesOrderDetailsByTransactionIdInput(transactionId, searchLocationValue);\n return executeAction(request, context);\n } \n \n export function createGetSalesOrderDetailsBySalesIdInput(salesId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('GetSalesOrderDetailsBySalesId', false, \n 'SalesOrderClass'\n , 'false', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {salesId: salesId });\n } \n \n export function getSalesOrderDetailsBySalesIdAsync(context: IContext, salesId?: string | null):AsyncResult {\n const request = createGetSalesOrderDetailsBySalesIdInput(salesId);\n return executeAction(request, context);\n } \n \n export function createGetOrderByChannelReferenceLookupCriteriaInput(channelReferenceLookupCriteria?: ChannelReferenceLookupCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('GetOrderByChannelReferenceLookupCriteria', true, \n 'SalesOrderClass'\n , 'false', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {channelReferenceLookupCriteria: channelReferenceLookupCriteria });\n } \n \n export function getOrderByChannelReferenceLookupCriteriaAsync(context: IContext, channelReferenceLookupCriteria?: ChannelReferenceLookupCriteria | null):AsyncResult {\n const request = createGetOrderByChannelReferenceLookupCriteriaInput(channelReferenceLookupCriteria);\n return executeAction(request, context);\n } \n \n export function createGetSalesOrderDetailsByQuotationIdInput(quotationId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('GetSalesOrderDetailsByQuotationId', false, \n 'SalesOrderClass'\n , 'false', {bypassCache: 'none', returnEntity: 'SalesOrder'}, {quotationId: quotationId });\n } \n \n export function getSalesOrderDetailsByQuotationIdAsync(context: IContext, quotationId?: string | null):AsyncResult {\n const request = createGetSalesOrderDetailsByQuotationIdInput(quotationId);\n return executeAction(request, context);\n } \n \n export function createShipFulfillmentLinesInput(shipFulfillmentLines?: ShipFulfillmentLine[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('ShipFulfillmentLines', true, '', '', {bypassCache: 'get', returnEntity: ''}, {ShipFulfillmentLines: shipFulfillmentLines });\n } \n \n export function shipFulfillmentLinesAsync(context: IContext, shipFulfillmentLines?: ShipFulfillmentLine[] | null):AsyncResult {\n const request = createShipFulfillmentLinesInput(shipFulfillmentLines);\n return executeAction(request, context);\n } \n \n export function createAcceptFulfillmentLinesInput(fulfillmentLineParameter?: FulfillmentLineParameter[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('AcceptFulfillmentLines', true, '', '', {bypassCache: 'get', returnEntity: ''}, {FulfillmentLineParameter: fulfillmentLineParameter });\n } \n \n export function acceptFulfillmentLinesAsync(context: IContext, fulfillmentLineParameter?: FulfillmentLineParameter[] | null):AsyncResult {\n const request = createAcceptFulfillmentLinesInput(fulfillmentLineParameter);\n return executeAction(request, context);\n } \n \n export function createPickFulfillmentLinesInput(fulfillmentLineParameter?: FulfillmentLineParameter[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('PickFulfillmentLines', true, '', '', {bypassCache: 'get', returnEntity: ''}, {FulfillmentLineParameter: fulfillmentLineParameter });\n } \n \n export function pickFulfillmentLinesAsync(context: IContext, fulfillmentLineParameter?: FulfillmentLineParameter[] | null):AsyncResult {\n const request = createPickFulfillmentLinesInput(fulfillmentLineParameter);\n return executeAction(request, context);\n } \n \n export function createPackFulfillmentLinesInput(fulfillmentLineParameter?: FulfillmentLineParameter[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('PackFulfillmentLines', true, '', '', {bypassCache: 'get', returnEntity: ''}, {FulfillmentLineParameter: fulfillmentLineParameter });\n } \n \n export function packFulfillmentLinesAsync(context: IContext, fulfillmentLineParameter?: FulfillmentLineParameter[] | null):AsyncResult {\n const request = createPackFulfillmentLinesInput(fulfillmentLineParameter);\n return executeAction(request, context);\n } \n \n export function createMarkFulfillmentLinesAsPackedInput(fulfillmentLineParameter?: FulfillmentLineParameter[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('MarkFulfillmentLinesAsPacked', true, '', 'false', {bypassCache: 'get', returnEntity: ''}, {FulfillmentLineParameter: fulfillmentLineParameter });\n } \n \n export function markFulfillmentLinesAsPackedAsync(context: IContext, fulfillmentLineParameter?: FulfillmentLineParameter[] | null):AsyncResult {\n const request = createMarkFulfillmentLinesAsPackedInput(fulfillmentLineParameter);\n return executeAction(request, context);\n } \n \n export function createMarkAsPickedInput(fulfillmentLineParameter?: FulfillmentLineParameter[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('MarkAsPicked', true, '', '', {bypassCache: 'get', returnEntity: ''}, {FulfillmentLineParameter: fulfillmentLineParameter });\n } \n \n export function markAsPickedAsync(context: IContext, fulfillmentLineParameter?: FulfillmentLineParameter[] | null):AsyncResult {\n const request = createMarkAsPickedInput(fulfillmentLineParameter);\n return executeAction(request, context);\n } \n \n export function createGetFulfillmentPickingListsInput(queryResultSettings: IQueryResultSettings, pickingListFulfillmentLine?: FulfillmentLineParameter[] | null, hardwareProfileId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFulfillmentPickingLists', true, \n 'ReceiptClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Receipt'}, {pickingListFulfillmentLine: pickingListFulfillmentLine, hardwareProfileId: hardwareProfileId });\n } \n \n export function getFulfillmentPickingListsAsync(context: IContext, pickingListFulfillmentLine?: FulfillmentLineParameter[] | null, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetFulfillmentPickingListsInput(context.queryResultSettings, pickingListFulfillmentLine, hardwareProfileId);\n return executeAction(request, context);\n } \n \n export function createGetFulfillmentPackingSlipsInput(queryResultSettings: IQueryResultSettings, packFulfillmentLines?: FulfillmentLineParameter[] | null, hardwareProfileId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFulfillmentPackingSlips', true, \n 'ReceiptClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Receipt'}, {packFulfillmentLines: packFulfillmentLines, hardwareProfileId: hardwareProfileId });\n } \n \n export function getFulfillmentPackingSlipsAsync(context: IContext, packFulfillmentLines?: FulfillmentLineParameter[] | null, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetFulfillmentPackingSlipsInput(context.queryResultSettings, packFulfillmentLines, hardwareProfileId);\n return executeAction(request, context);\n } \n \n export function createGetFulfillmentPackingSlipsByIdInput(queryResultSettings: IQueryResultSettings, salesId?: string | null, packingSlipId?: string | null, hardwareProfileId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFulfillmentPackingSlipsById', true, \n 'ReceiptClass'\n , 'true', {bypassCache: 'none', returnEntity: 'Receipt'}, {salesId: salesId, PackingSlipId: packingSlipId, hardwareProfileId: hardwareProfileId });\n } \n \n export function getFulfillmentPackingSlipsByIdAsync(context: IContext, salesId?: string | null, packingSlipId?: string | null, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetFulfillmentPackingSlipsByIdInput(context.queryResultSettings, salesId, packingSlipId, hardwareProfileId);\n return executeAction(request, context);\n } \n \n export function createRejectFulfillmentLinesInput(rejectFulfillmentLines?: RejectFulfillmentLine[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('RejectFulfillmentLines', true, '', '', {bypassCache: 'get', returnEntity: ''}, {RejectFulfillmentLines: rejectFulfillmentLines });\n } \n \n export function rejectFulfillmentLinesAsync(context: IContext, rejectFulfillmentLines?: RejectFulfillmentLine[] | null):AsyncResult {\n const request = createRejectFulfillmentLinesInput(rejectFulfillmentLines);\n return executeAction(request, context);\n } \n \n export function createGetInvoicesBySalesIdInput(queryResultSettings: IQueryResultSettings, salesId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetInvoicesBySalesId', true, \n 'SalesInvoiceClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesInvoice'}, {salesId: salesId });\n } \n \n export function getInvoicesBySalesIdAsync(context: IContext, salesId?: string | null):AsyncResult {\n const request = createGetInvoicesBySalesIdInput(context.queryResultSettings, salesId);\n return executeAction(request, context);\n } \n \n export function createGetOrderInvoicesInput(queryResultSettings: IQueryResultSettings, customerId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOrderInvoices', true, \n 'OrderInvoiceClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrderInvoice'}, {customerId: customerId });\n } \n \n export function getOrderInvoicesAsync(context: IContext, customerId?: string | null):AsyncResult {\n const request = createGetOrderInvoicesInput(context.queryResultSettings, customerId);\n return executeAction(request, context);\n } \n \n export function createGetInvoicesInput(queryResultSettings: IQueryResultSettings, invoiceSearchCriteria?: InvoiceSearchCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetInvoices', true, \n 'OrderInvoiceClass'\n , 'true', {bypassCache: 'none', returnEntity: 'OrderInvoice'}, {invoiceSearchCriteria: invoiceSearchCriteria });\n } \n \n export function getInvoicesAsync(context: IContext, invoiceSearchCriteria?: InvoiceSearchCriteria | null):AsyncResult {\n const request = createGetInvoicesInput(context.queryResultSettings, invoiceSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetInvoiceDetailsInput(invoiceDetailsSearchCriteria?: InvoiceDetailsSearchCriteria | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('GetInvoiceDetails', true, \n 'SalesInvoiceClass'\n , 'false', {bypassCache: 'none', returnEntity: 'SalesInvoice'}, {invoiceDetailsSearchCriteria: invoiceDetailsSearchCriteria });\n } \n \n export function getInvoiceDetailsAsync(context: IContext, invoiceDetailsSearchCriteria?: InvoiceDetailsSearchCriteria | null):AsyncResult {\n const request = createGetInvoiceDetailsInput(invoiceDetailsSearchCriteria);\n return executeAction(request, context);\n } \n \n export function createGetInvoicedSalesLinesBySalesIdsInput(queryResultSettings: IQueryResultSettings, salesIds?: string[] | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetInvoicedSalesLinesBySalesIds', true, \n 'SalesLineClass'\n , 'true', {bypassCache: 'none', returnEntity: 'SalesLine'}, {salesIds: salesIds });\n } \n \n export function getInvoicedSalesLinesBySalesIdsAsync(context: IContext, salesIds?: string[] | null):AsyncResult {\n const request = createGetInvoicedSalesLinesBySalesIdsInput(context.queryResultSettings, salesIds);\n return executeAction(request, context);\n } \n \n export function createCreatePickingListInput(salesId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('CreatePickingList', true, '', '', {bypassCache: 'get', returnEntity: ''}, {salesId: salesId });\n } \n \n export function createPickingListAsync(context: IContext, salesId?: string | null):AsyncResult {\n const request = createCreatePickingListInput(salesId);\n return executeAction(request, context);\n } \n \n export function createCreatePickingListForItemsInput(salesId?: string | null, pickAndPackSalesLineParameters?: PickAndPackSalesLineParameter[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('CreatePickingListForItems', true, '', 'false', {bypassCache: 'get', returnEntity: ''}, {salesId: salesId, pickAndPackSalesLineParameters: pickAndPackSalesLineParameters });\n } \n \n export function createPickingListForItemsAsync(context: IContext, salesId?: string | null, pickAndPackSalesLineParameters?: PickAndPackSalesLineParameter[] | null):AsyncResult {\n const request = createCreatePickingListForItemsInput(salesId, pickAndPackSalesLineParameters);\n return executeAction(request, context);\n } \n \n export function createGetPickingListsInput(queryResultSettings: IQueryResultSettings, id: string, ): IDataServiceRequest { \n const query = salesOrdersQuery(id).resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetPickingLists', false, \n 'PickingListClass'\n , 'true', {bypassCache: 'none', returnEntity: 'PickingList'}, { });\n } \n \n export function getPickingListsAsync(context: IContext, id: string):AsyncResult {\n const request = createGetPickingListsInput(context.queryResultSettings, id);\n return executeAction(request, context);\n } \n \n export function createCreatePackingSlipInput(salesId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('CreatePackingSlip', true, '', '', {bypassCache: 'get', returnEntity: ''}, {salesId: salesId });\n } \n \n export function createPackingSlipAsync(context: IContext, salesId?: string | null):AsyncResult {\n const request = createCreatePackingSlipInput(salesId);\n return executeAction(request, context);\n } \n \n export function createGetFulfillmentLineUserAlertsInput(queryResultSettings: IQueryResultSettings, fulfillmentLineParameter: FulfillmentLineParameter[] | null, fulfillmentOperation: number): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFulfillmentLineUserAlerts', true, \n 'FulfillmentLineUserAlertsClass'\n , 'true', {bypassCache: 'none', returnEntity: 'FulfillmentLineUserAlerts'}, {FulfillmentLineParameter: fulfillmentLineParameter, FulfillmentOperation: fulfillmentOperation });\n } \n \n export function getFulfillmentLineUserAlertsAsync(context: IContext, fulfillmentLineParameter: FulfillmentLineParameter[] | null, fulfillmentOperation: number):AsyncResult {\n const request = createGetFulfillmentLineUserAlertsInput(context.queryResultSettings, fulfillmentLineParameter, fulfillmentOperation);\n return executeAction(request, context);\n } \n \n export function createCheckInForOrderPickupInput(channelId: number, packingSlipId?: string | null, channelReferenceId?: string | null, extensionProperties?: CommerceProperty[] | null): IDataServiceRequest { \n const query = salesOrdersQuery();\n return query.createDataServiceRequestForOperation('CheckInForOrderPickup', true, \n 'CheckInForOrderPickupConfirmationClass'\n , 'false', {bypassCache: 'get', returnEntity: 'CheckInForOrderPickupConfirmation'}, {channelId: channelId, PackingSlipId: packingSlipId, channelReferenceId: channelReferenceId, extensionProperties: extensionProperties });\n } \n \n export function checkInForOrderPickupAsync(context: IContext, channelId: number, packingSlipId?: string | null, channelReferenceId?: string | null, extensionProperties?: CommerceProperty[] | null):AsyncResult {\n const request = createCheckInForOrderPickupInput(channelId, packingSlipId, channelReferenceId, extensionProperties);\n return executeAction(request, context);\n } \n \n export function createGetPackingSlipsDataInput(queryResultSettings: IQueryResultSettings, salesId?: string | null): IDataServiceRequest { \n const query = salesOrdersQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetPackingSlipsData', false, \n 'PackingSlipDataClass'\n , 'true', {bypassCache: 'none', returnEntity: 'PackingSlipData'}, {salesId: salesId });\n } \n \n export function getPackingSlipsDataAsync(context: IContext, salesId?: string | null):AsyncResult {\n const request = createGetPackingSlipsDataInput(context.queryResultSettings, salesId);\n return executeAction(request, context);\n } \n \n ","\n // \n\n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { ScanResult } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n \n \n function scanResultsQuery(scannedText?: string): DataServiceQuery {\n var key = (scannedText) ? { ScannedText: scannedText } : null;\n return new DataServiceQuery(\"ScanResults\", \"ScanResult\", \"ScanResultClass\", key);\n }\n \n export function createCreateInput(entity: ScanResult): IDataServiceRequest {\n return scanResultsQuery().create(entity);\n }\n\n export function createScanResultAsync(context: IContext, entity: ScanResult): AsyncResult {\n const request = createCreateInput(entity);\n return executeAction(request, context);\n }\n\n export function createUpdateInput(entity: ScanResult): IDataServiceRequest {\n return scanResultsQuery(entity.ScannedText).update(entity);\n }\n\n export function updateAsync(context: IContext, entity: ScanResult): AsyncResult {\n const request = createUpdateInput(entity);\n return executeAction(request, context);\n }\n\n export function createDeleteAsync(entity: ScanResult): IDataServiceRequest {\n return scanResultsQuery(entity.ScannedText).delete();\n }\n\n export function deleteAsync(context: IContext, entity: ScanResult): AsyncResult {\n const request = createDeleteAsync(entity);\n return executeAction(request, context);\n }\n\n export function createReadAsync(scannedText: string): IDataServiceRequest {\n return scanResultsQuery(scannedText).read();\n }\n\n export function readAsync(context: IContext, scannedText: string): AsyncResult {\n const request = createReadAsync(scannedText);\n return executeAction(request, context);\n }\n\n export function createReadAllAsync(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n return scanResultsQuery().resultSettings(queryResultSettings).read();\n }\n\n export function readAllAsync(context: IContext): AsyncResult {\n const request = createReadAllAsync(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n ","\n // \n import { AsyncResult } from '../async-result';\n import { DataServiceQuery } from '../DataServiceQuery';\n import { DeliveryOption, Affiliation, ReasonCodeLine, DiscountsSearchCriteria, Promotion, PaymentMerchantInformation, StoreSafe, ShiftReconciliationLineRetrievalCriteria, ShiftReconciliationLine, ReceiptMask, SearchSuggestionCriteria, SearchSuggestion, DeviceActivationResult, CreateHardwareStationTokenResult, ValidateHardwareStationTokenResult, Barcode, ButtonGrid, GetButtonGridsByIdsCriteria, MediaBlob, CardTypeInfo, CityInfo, CountryRegionInfo, OnlineChannel, CountyInfo, CreditMemo, TerminalDataDownloadRequestInfo, DataDownloadParameters, TerminalDataUploadRequestInfo, DataUploadParameters, DownloadSession, OfflineTerminalState, NumberSequenceSeedData, ReceiptNumberResetInfo, LoyaltyRewardPointActivity, CurrencyRequest, CurrencyAmount, DiscountCode, DistrictInfo, HardwareStationProfile, HardwareProfile, LocalizedString, OperationPermission, ReasonCode, CommerceProperty, ReportDataSet, IncomeExpenseAccount, StateProvinceInfo, ZipCodeInfo, KitTransaction, LoyaltyCard, LoyaltyCardTransaction, TransactionSearchCriteria, Transaction, GiftCard, NonSalesTransaction, DropAndDeclareTransaction, TaxOverride, CustomerBalances, NameValuePair, LinkToExistingCustomerResult, OfflineSyncStatsLine, Shift, StorageAccessToken, Framework, TaskGuidesSearchResult, Recording, AttributeDefinitionCriteria, AttributeDefinition, AttributeGroupDefinitionCriteria, AttributeGroupDefinition, FiscalTransaction, SalesOrder, AuditEvent, InventoryAvailableToPromise, NotificationItem, PurchaseHistorySearchCriteria, PurchaseHistory, FiscalIntegrationDocumentRetrievalCriteria, FiscalIntegrationDocument, FiscalIntegrationRegistrationResult, FiscalIntegrationRegistrationProcess, FiscalIntegrationSupportedEvents, FiscalIntegrationTechnicalProfile, FiscalIntegrationFiscalRegistrationProcessSummary, FiscalIntegrationTechnicalProfileSearchCriteria, FiscalIntegrationServiceInfo, FiscalIntegrationServiceStatus, FiscalIntegrationServiceCommunicationResult, FeatureState, FiscalIntegrationSequentialSignatureData, PickupTimeslotAvailabilitySearchCriteria, PickupTimeslotAvailability, Cart, VendorSearchCriteria, Vendor, VendorValidationResult, OperationalInsightsConfiguration, CashDeclaration, CustomerGroup, ChannelDeliveryOptionConfiguration, ChannelIdentity, ChannelSearchCriteria, EnvironmentConfiguration, SearchConfiguration, ExtensionPackageDefinition, ExtensionProfile, DeviceConfiguration, VisualProfile, SupportedLanguage, SalesTaxGroup, TenderType, UnitOfMeasure, Currency, CommissionSalesGroup, ChannelInventoryConfiguration, ChannelPurchaseConfiguration, InventoryJournalNameSearchCriteria, InventoryJournalName, Device, UserDefinedSecretCertificateResult, ExtensibleEnumerationContainer, AddressPurpose, ReturnPolicy, EmailReceiptSettings, FiscalIntegrationComplianceResult, } from '../Entities/CommerceTypes.g';\n import { IContext, IDataServiceRequest, IQueryResultSettings, NullResult } from '../Interfaces';\n import { executeAction } from '../retail-action';\n\n function storeQuery(): DataServiceQuery {\n return new DataServiceQuery();\n }\n \n export function createGetDeliveryOptionsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDeliveryOptions', false, \n 'DeliveryOptionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DeliveryOption'}, { });\n }\n\n export function getDeliveryOptionsAsync(context: IContext):AsyncResult {\n const request = createGetDeliveryOptionsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createRoundAmountByTenderTypeInput(amount: number, tenderTypeId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('RoundAmountByTenderType', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {amount: amount, tenderTypeId: tenderTypeId });\n }\n\n export function roundAmountByTenderTypeAsync(context: IContext, amount: number, tenderTypeId?: string | null):AsyncResult {\n const request = createRoundAmountByTenderTypeInput(amount, tenderTypeId);\n return executeAction(request, context);\n }\n \n export function createGetAffiliationsByNameInput(queryResultSettings: IQueryResultSettings, affiliationNames?: string[] | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAffiliationsByName', true, \n 'AffiliationClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Affiliation'}, {affiliationNames: affiliationNames });\n }\n\n export function getAffiliationsByNameAsync(context: IContext, affiliationNames?: string[] | null):AsyncResult {\n const request = createGetAffiliationsByNameInput(context.queryResultSettings, affiliationNames);\n return executeAction(request, context);\n }\n \n export function createVoidSuspendedTransactionsInput(suspendedCartIds?: string[] | null, shiftId?: number | null, shiftTerminalId?: string | null, reasonCodeLines?: ReasonCodeLine[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('VoidSuspendedTransactions', true, '', '', { bypassCache: 'get', returnEntity: ''}, {suspendedCartIds: suspendedCartIds, shiftId: shiftId, shiftTerminalId: shiftTerminalId, reasonCodeLines: reasonCodeLines });\n }\n\n export function voidSuspendedTransactionsAsync(context: IContext, suspendedCartIds?: string[] | null, shiftId?: number | null, shiftTerminalId?: string | null, reasonCodeLines?: ReasonCodeLine[] | null):AsyncResult {\n const request = createVoidSuspendedTransactionsInput(suspendedCartIds, shiftId, shiftTerminalId, reasonCodeLines);\n return executeAction(request, context);\n }\n \n export function createGetAvailablePromotionsInput(queryResultSettings: IQueryResultSettings, searchCriteria?: DiscountsSearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAvailablePromotions', true, \n 'PromotionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Promotion'}, {searchCriteria: searchCriteria });\n }\n\n export function getAvailablePromotionsAsync(context: IContext, searchCriteria?: DiscountsSearchCriteria | null):AsyncResult {\n const request = createGetAvailablePromotionsInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createGetMerchantPropertiesByServiceAccountIdInput(queryResultSettings: IQueryResultSettings, serviceAccountIds?: string[] | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetMerchantPropertiesByServiceAccountId', true, \n 'PaymentMerchantInformationClass'\n , 'true', { bypassCache: 'none', returnEntity: 'PaymentMerchantInformation'}, {serviceAccountIds: serviceAccountIds });\n }\n\n export function getMerchantPropertiesByServiceAccountIdAsync(context: IContext, serviceAccountIds?: string[] | null):AsyncResult {\n const request = createGetMerchantPropertiesByServiceAccountIdInput(context.queryResultSettings, serviceAccountIds);\n return executeAction(request, context);\n }\n \n export function createGetStoreSafesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetStoreSafes', true, \n 'StoreSafeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'StoreSafe'}, { });\n }\n\n export function getStoreSafesAsync(context: IContext):AsyncResult {\n const request = createGetStoreSafesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetShiftReconciliationLinesInput(queryResultSettings: IQueryResultSettings, shiftReconciliationLineRetrievalCriteria?: ShiftReconciliationLineRetrievalCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetShiftReconciliationLines', true, \n 'ShiftReconciliationLineClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ShiftReconciliationLine'}, {shiftReconciliationLineRetrievalCriteria: shiftReconciliationLineRetrievalCriteria });\n }\n\n export function getShiftReconciliationLinesAsync(context: IContext, shiftReconciliationLineRetrievalCriteria?: ShiftReconciliationLineRetrievalCriteria | null):AsyncResult {\n const request = createGetShiftReconciliationLinesInput(context.queryResultSettings, shiftReconciliationLineRetrievalCriteria);\n return executeAction(request, context);\n }\n \n export function createReconcileLinesInput(shiftReconciliationLines?: ShiftReconciliationLine[] | null, description?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('ReconcileLines', true, '', '', { bypassCache: 'get', returnEntity: ''}, {shiftReconciliationLines: shiftReconciliationLines, Description: description });\n }\n\n export function reconcileLinesAsync(context: IContext, shiftReconciliationLines?: ShiftReconciliationLine[] | null, description?: string | null):AsyncResult {\n const request = createReconcileLinesInput(shiftReconciliationLines, description);\n return executeAction(request, context);\n }\n \n export function createUndoReconciliationInput(shiftReconciliationLines?: ShiftReconciliationLine[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('UndoReconciliation', true, '', '', { bypassCache: 'get', returnEntity: ''}, {shiftReconciliationLines: shiftReconciliationLines });\n }\n\n export function undoReconciliationAsync(context: IContext, shiftReconciliationLines?: ShiftReconciliationLine[] | null):AsyncResult {\n const request = createUndoReconciliationInput(shiftReconciliationLines);\n return executeAction(request, context);\n }\n \n export function createGetReceiptMasksInput(queryResultSettings: IQueryResultSettings, receiptTransactionType?: number | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReceiptMasks', true, \n 'ReceiptMaskClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ReceiptMask'}, {receiptTransactionType: receiptTransactionType });\n }\n\n export function getReceiptMasksAsync(context: IContext, receiptTransactionType?: number | null):AsyncResult {\n const request = createGetReceiptMasksInput(context.queryResultSettings, receiptTransactionType);\n return executeAction(request, context);\n }\n \n export function createGetSearchSuggestionsInput(queryResultSettings: IQueryResultSettings, searchSuggestionCriteria?: SearchSuggestionCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSearchSuggestions', true, \n 'SearchSuggestionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'SearchSuggestion'}, {searchSuggestionCriteria: searchSuggestionCriteria });\n }\n\n export function getSearchSuggestionsAsync(context: IContext, searchSuggestionCriteria?: SearchSuggestionCriteria | null):AsyncResult {\n const request = createGetSearchSuggestionsInput(context.queryResultSettings, searchSuggestionCriteria);\n return executeAction(request, context);\n }\n \n export function createStartSessionInput(transactionId: string | null, overrideSession: boolean): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('StartSession', true, '', '', { bypassCache: 'get', returnEntity: ''}, {transactionId: transactionId, overrideSession: overrideSession });\n }\n\n export function startSessionAsync(context: IContext, transactionId: string | null, overrideSession: boolean):AsyncResult {\n const request = createStartSessionInput(transactionId, overrideSession);\n return executeAction(request, context);\n }\n \n export function createEndSessionInput(transactionId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('EndSession', true, '', '', { bypassCache: 'get', returnEntity: ''}, {transactionId: transactionId });\n }\n\n export function endSessionAsync(context: IContext, transactionId?: string | null):AsyncResult {\n const request = createEndSessionInput(transactionId);\n return executeAction(request, context);\n }\n \n export function createActivateDeviceInput(deviceNumber: string | null, terminalId: string | null, deviceId: string | null, forceActivate: boolean, deviceType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('ActivateDevice', true, \n 'DeviceActivationResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'DeviceActivationResult'}, {deviceNumber: deviceNumber, terminalId: terminalId, deviceId: deviceId, forceActivate: forceActivate, deviceType: deviceType });\n }\n\n export function activateDeviceAsync(context: IContext, deviceNumber: string | null, terminalId: string | null, deviceId: string | null, forceActivate: boolean, deviceType?: number | null):AsyncResult {\n const request = createActivateDeviceInput(deviceNumber, terminalId, deviceId, forceActivate, deviceType);\n return executeAction(request, context);\n }\n \n export function createMassActivateDeviceInput(deviceNumber?: string | null, terminalId?: string | null, deviceId?: string | null, deviceType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('MassActivateDevice', true, \n 'DeviceActivationResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'DeviceActivationResult'}, {deviceNumber: deviceNumber, terminalId: terminalId, deviceId: deviceId, deviceType: deviceType });\n }\n\n export function massActivateDeviceAsync(context: IContext, deviceNumber?: string | null, terminalId?: string | null, deviceId?: string | null, deviceType?: number | null):AsyncResult {\n const request = createMassActivateDeviceInput(deviceNumber, terminalId, deviceId, deviceType);\n return executeAction(request, context);\n }\n \n export function createDeactivateDeviceInput(transactionId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('DeactivateDevice', true, '', '', { bypassCache: 'get', returnEntity: ''}, {transactionId: transactionId });\n }\n\n export function deactivateDeviceAsync(context: IContext, transactionId?: string | null):AsyncResult {\n const request = createDeactivateDeviceInput(transactionId);\n return executeAction(request, context);\n }\n \n export function createCreateHardwareStationTokenInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CreateHardwareStationToken', true, \n 'CreateHardwareStationTokenResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'CreateHardwareStationTokenResult'}, { });\n }\n\n export function createHardwareStationTokenAsync(context: IContext):AsyncResult {\n const request = createCreateHardwareStationTokenInput();\n return executeAction(request, context);\n }\n \n export function createValidateHardwareStationTokenInput(deviceNumber?: string | null, hardwareStationToken?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('ValidateHardwareStationToken', true, \n 'ValidateHardwareStationTokenResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'ValidateHardwareStationTokenResult'}, {deviceNumber: deviceNumber, hardwareStationToken: hardwareStationToken });\n }\n\n export function validateHardwareStationTokenAsync(context: IContext, deviceNumber?: string | null, hardwareStationToken?: string | null):AsyncResult {\n const request = createValidateHardwareStationTokenInput(deviceNumber, hardwareStationToken);\n return executeAction(request, context);\n }\n \n export function createGetBarcodeByIdInput(barcodeId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetBarcodeById', true, \n 'BarcodeClass'\n , 'false', { bypassCache: 'none', returnEntity: 'Barcode'}, {barcodeId: barcodeId });\n }\n\n export function getBarcodeByIdAsync(context: IContext, barcodeId?: string | null):AsyncResult {\n const request = createGetBarcodeByIdInput(barcodeId);\n return executeAction(request, context);\n }\n \n export function createGetButtonGridByIdInput(buttonGridId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetButtonGridById', true, \n 'ButtonGridClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ButtonGrid'}, {buttonGridId: buttonGridId });\n }\n\n export function getButtonGridByIdAsync(context: IContext, buttonGridId?: string | null):AsyncResult {\n const request = createGetButtonGridByIdInput(buttonGridId);\n return executeAction(request, context);\n }\n \n export function createGetButtonGridsWithoutImageInput(queryResultSettings: IQueryResultSettings, height: number, width: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetButtonGridsWithoutImage', true, \n 'ButtonGridClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ButtonGrid'}, {height: height, width: width });\n }\n\n export function getButtonGridsWithoutImageAsync(context: IContext, height: number, width: number):AsyncResult {\n const request = createGetButtonGridsWithoutImageInput(context.queryResultSettings, height, width);\n return executeAction(request, context);\n }\n \n export function createGetButtonGridsByIdsInput(queryResultSettings: IQueryResultSettings, getButtonGridsByIdsCriteria?: GetButtonGridsByIdsCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetButtonGridsByIds', true, \n 'ButtonGridClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ButtonGrid'}, {getButtonGridsByIdsCriteria: getButtonGridsByIdsCriteria });\n }\n\n export function getButtonGridsByIdsAsync(context: IContext, getButtonGridsByIdsCriteria?: GetButtonGridsByIdsCriteria | null):AsyncResult {\n const request = createGetButtonGridsByIdsInput(context.queryResultSettings, getButtonGridsByIdsCriteria);\n return executeAction(request, context);\n }\n \n export function createGetImageBlobsByPictureIdsInput(queryResultSettings: IQueryResultSettings, pictureIds: number[]): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetImageBlobsByPictureIds', true, \n 'MediaBlobClass'\n , 'true', { bypassCache: 'none', returnEntity: 'MediaBlob'}, {pictureIds: pictureIds });\n }\n\n export function getImageBlobsByPictureIdsAsync(context: IContext, pictureIds: number[]):AsyncResult {\n const request = createGetImageBlobsByPictureIdsInput(context.queryResultSettings, pictureIds);\n return executeAction(request, context);\n }\n \n export function createGetCardTypesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCardTypes', true, \n 'CardTypeInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CardTypeInfo'}, { });\n }\n\n export function getCardTypesAsync(context: IContext):AsyncResult {\n const request = createGetCardTypesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createResolveCardTypesInput(queryResultSettings: IQueryResultSettings, cardNumberPrefix?: string | null, cardType?: number | null, paymentToken?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('ResolveCardTypes', true, \n 'CardTypeInfoClass'\n , 'true', { bypassCache: 'get', returnEntity: 'CardTypeInfo'}, {cardNumberPrefix: cardNumberPrefix, cardType: cardType, paymentToken: paymentToken });\n }\n\n export function resolveCardTypesAsync(context: IContext, cardNumberPrefix?: string | null, cardType?: number | null, paymentToken?: string | null):AsyncResult {\n const request = createResolveCardTypesInput(context.queryResultSettings, cardNumberPrefix, cardType, paymentToken);\n return executeAction(request, context);\n }\n \n export function createGetSupportedPaymentCardTypesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSupportedPaymentCardTypes', true, '', 'true', { bypassCache: 'none', returnEntity: ''}, { });\n }\n\n export function getSupportedPaymentCardTypesAsync(context: IContext):AsyncResult {\n const request = createGetSupportedPaymentCardTypesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCitiesInput(queryResultSettings: IQueryResultSettings, countryRegionId?: string | null, stateProvinceId?: string | null, countyId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCities', true, \n 'CityInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CityInfo'}, {countryRegionId: countryRegionId, stateProvinceId: stateProvinceId, countyId: countyId });\n }\n\n export function getCitiesAsync(context: IContext, countryRegionId?: string | null, stateProvinceId?: string | null, countyId?: string | null):AsyncResult {\n const request = createGetCitiesInput(context.queryResultSettings, countryRegionId, stateProvinceId, countyId);\n return executeAction(request, context);\n }\n \n export function createGetCountryRegionsForShippingInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCountryRegionsForShipping', false, \n 'CountryRegionInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CountryRegionInfo'}, { });\n }\n\n export function getCountryRegionsForShippingAsync(context: IContext):AsyncResult {\n const request = createGetCountryRegionsForShippingInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCountryRegionsByLanguageIdInput(queryResultSettings: IQueryResultSettings, languageId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCountryRegionsByLanguageId', true, \n 'CountryRegionInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CountryRegionInfo'}, {languageId: languageId });\n }\n\n export function getCountryRegionsByLanguageIdAsync(context: IContext, languageId?: string | null):AsyncResult {\n const request = createGetCountryRegionsByLanguageIdInput(context.queryResultSettings, languageId);\n return executeAction(request, context);\n }\n \n export function createGetOnlineChannelInput(channelId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetOnlineChannel', false, \n 'OnlineChannelClass'\n , 'false', { bypassCache: 'none', returnEntity: 'OnlineChannel'}, {channelId: channelId });\n }\n\n export function getOnlineChannelAsync(context: IContext, channelId: number):AsyncResult {\n const request = createGetOnlineChannelInput(channelId);\n return executeAction(request, context);\n }\n \n export function createGetCountiesInput(queryResultSettings: IQueryResultSettings, countryRegionId?: string | null, stateProvinceId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCounties', true, \n 'CountyInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CountyInfo'}, {countryRegionId: countryRegionId, stateProvinceId: stateProvinceId });\n }\n\n export function getCountiesAsync(context: IContext, countryRegionId?: string | null, stateProvinceId?: string | null):AsyncResult {\n const request = createGetCountiesInput(context.queryResultSettings, countryRegionId, stateProvinceId);\n return executeAction(request, context);\n }\n \n export function createGetCreditMemoByIdInput(creditMemoId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetCreditMemoById', true, \n 'CreditMemoClass'\n , 'false', { bypassCache: 'none', returnEntity: 'CreditMemo'}, {creditMemoId: creditMemoId });\n }\n\n export function getCreditMemoByIdAsync(context: IContext, creditMemoId?: string | null):AsyncResult {\n const request = createGetCreditMemoByIdInput(creditMemoId);\n return executeAction(request, context);\n }\n \n export function createGetDownloadIntervalInput(dataStoreName?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetDownloadInterval', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, {dataStoreName: dataStoreName });\n }\n\n export function getDownloadIntervalAsync(context: IContext, dataStoreName?: string | null):AsyncResult {\n const request = createGetDownloadIntervalInput(dataStoreName);\n return executeAction(request, context);\n }\n \n export function createGetTerminalDataStoreNameInput(terminalId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetTerminalDataStoreName', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, {terminalId: terminalId });\n }\n\n export function getTerminalDataStoreNameAsync(context: IContext, terminalId?: string | null):AsyncResult {\n const request = createGetTerminalDataStoreNameInput(terminalId);\n return executeAction(request, context);\n }\n \n export function createGetDownloadLinkInput(dataStoreName: string | null, downloadSessionId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetDownloadLink', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, {dataStoreName: dataStoreName, downloadSessionId: downloadSessionId });\n }\n\n export function getDownloadLinkAsync(context: IContext, dataStoreName: string | null, downloadSessionId: number):AsyncResult {\n const request = createGetDownloadLinkInput(dataStoreName, downloadSessionId);\n return executeAction(request, context);\n }\n \n export function createGetDataDownloadParametersByTerminalInput(terminalDataDownloadRequestInfo?: TerminalDataDownloadRequestInfo | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetDataDownloadParametersByTerminal', true, \n 'DataDownloadParametersClass'\n , 'false', { bypassCache: 'none', returnEntity: 'DataDownloadParameters'}, {TerminalDataDownloadRequestInfo: terminalDataDownloadRequestInfo });\n }\n\n export function getDataDownloadParametersByTerminalAsync(context: IContext, terminalDataDownloadRequestInfo?: TerminalDataDownloadRequestInfo | null):AsyncResult {\n const request = createGetDataDownloadParametersByTerminalInput(terminalDataDownloadRequestInfo);\n return executeAction(request, context);\n }\n \n export function createGetDataUploadParametersByTerminalInput(terminalDataUploadRequestInfo?: TerminalDataUploadRequestInfo | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetDataUploadParametersByTerminal', true, \n 'DataUploadParametersClass'\n , 'false', { bypassCache: 'none', returnEntity: 'DataUploadParameters'}, {TerminalDataUploadRequestInfo: terminalDataUploadRequestInfo });\n }\n\n export function getDataUploadParametersByTerminalAsync(context: IContext, terminalDataUploadRequestInfo?: TerminalDataUploadRequestInfo | null):AsyncResult {\n const request = createGetDataUploadParametersByTerminalInput(terminalDataUploadRequestInfo);\n return executeAction(request, context);\n }\n \n export function createGetDownloadSessionsInput(queryResultSettings: IQueryResultSettings, dataStoreName?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDownloadSessions', true, \n 'DownloadSessionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DownloadSession'}, {dataStoreName: dataStoreName });\n }\n\n export function getDownloadSessionsAsync(context: IContext, dataStoreName?: string | null):AsyncResult {\n const request = createGetDownloadSessionsInput(context.queryResultSettings, dataStoreName);\n return executeAction(request, context);\n }\n \n export function createGetInitialDownloadSessionsInput(queryResultSettings: IQueryResultSettings, dataStoreName?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetInitialDownloadSessions', true, \n 'DownloadSessionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DownloadSession'}, {dataStoreName: dataStoreName });\n }\n\n export function getInitialDownloadSessionsAsync(context: IContext, dataStoreName?: string | null):AsyncResult {\n const request = createGetInitialDownloadSessionsInput(context.queryResultSettings, dataStoreName);\n return executeAction(request, context);\n }\n \n export function createGetUploadJobDefinitionsInput(queryResultSettings: IQueryResultSettings, dataStoreName?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetUploadJobDefinitions', true, '', 'true', { bypassCache: 'none', returnEntity: ''}, {dataStoreName: dataStoreName });\n }\n\n export function getUploadJobDefinitionsAsync(context: IContext, dataStoreName?: string | null):AsyncResult {\n const request = createGetUploadJobDefinitionsInput(context.queryResultSettings, dataStoreName);\n return executeAction(request, context);\n }\n \n export function createGetUploadIntervalInput(dataStoreName?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetUploadInterval', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, {dataStoreName: dataStoreName });\n }\n\n export function getUploadIntervalAsync(context: IContext, dataStoreName?: string | null):AsyncResult {\n const request = createGetUploadIntervalInput(dataStoreName);\n return executeAction(request, context);\n }\n \n export function createPostOfflineTransactionsInput(offlineTransactionForMPOS?: string[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('PostOfflineTransactions', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {offlineTransactionForMPOS: offlineTransactionForMPOS });\n }\n\n export function postOfflineTransactionsAsync(context: IContext, offlineTransactionForMPOS?: string[] | null):AsyncResult {\n const request = createPostOfflineTransactionsInput(offlineTransactionForMPOS);\n return executeAction(request, context);\n }\n \n export function createSetOfflineTerminalStateInput(offlineTerminalState?: OfflineTerminalState | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('SetOfflineTerminalState', true, '', '', { bypassCache: 'get', returnEntity: ''}, {offlineTerminalState: offlineTerminalState });\n }\n\n export function setOfflineTerminalStateAsync(context: IContext, offlineTerminalState?: OfflineTerminalState | null):AsyncResult {\n const request = createSetOfflineTerminalStateInput(offlineTerminalState);\n return executeAction(request, context);\n }\n \n export function createGetRetailTrialPlanOfferInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetRetailTrialPlanOffer', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, { });\n }\n\n export function getRetailTrialPlanOfferAsync(context: IContext):AsyncResult {\n const request = createGetRetailTrialPlanOfferInput();\n return executeAction(request, context);\n }\n \n export function createGetLatestNumberSequenceInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLatestNumberSequence', true, \n 'NumberSequenceSeedDataClass'\n , 'true', { bypassCache: 'none', returnEntity: 'NumberSequenceSeedData'}, { });\n }\n\n export function getLatestNumberSequenceAsync(context: IContext):AsyncResult {\n const request = createGetLatestNumberSequenceInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetReceiptNumberResetInfoInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReceiptNumberResetInfo', true, \n 'ReceiptNumberResetInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ReceiptNumberResetInfo'}, { });\n }\n\n export function getReceiptNumberResetInfoAsync(context: IContext):AsyncResult {\n const request = createGetReceiptNumberResetInfoInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetLoyaltyRewardPointActivityTimelineInput(queryResultSettings: IQueryResultSettings, cardNumber?: string | null, rewardPointId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLoyaltyRewardPointActivityTimeline', true, \n 'LoyaltyRewardPointActivityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'LoyaltyRewardPointActivity'}, {cardNumber: cardNumber, rewardPointId: rewardPointId });\n }\n\n export function getLoyaltyRewardPointActivityTimelineAsync(context: IContext, cardNumber?: string | null, rewardPointId?: string | null):AsyncResult {\n const request = createGetLoyaltyRewardPointActivityTimelineInput(context.queryResultSettings, cardNumber, rewardPointId);\n return executeAction(request, context);\n }\n \n export function createGetLoyaltyRewardPointActivityTimelineForExpiredPointsInput(queryResultSettings: IQueryResultSettings, cardNumber?: string | null, rewardPointId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLoyaltyRewardPointActivityTimelineForExpiredPoints', true, \n 'LoyaltyRewardPointActivityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'LoyaltyRewardPointActivity'}, {cardNumber: cardNumber, rewardPointId: rewardPointId });\n }\n\n export function getLoyaltyRewardPointActivityTimelineForExpiredPointsAsync(context: IContext, cardNumber?: string | null, rewardPointId?: string | null):AsyncResult {\n const request = createGetLoyaltyRewardPointActivityTimelineForExpiredPointsInput(context.queryResultSettings, cardNumber, rewardPointId);\n return executeAction(request, context);\n }\n \n export function createCalculateTotalCurrencyAmountInput(currenciesAmount?: CurrencyRequest[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CalculateTotalCurrencyAmount', true, \n 'CurrencyAmountClass'\n , 'false', { bypassCache: 'get', returnEntity: 'CurrencyAmount'}, {currenciesAmount: currenciesAmount });\n }\n\n export function calculateTotalCurrencyAmountAsync(context: IContext, currenciesAmount?: CurrencyRequest[] | null):AsyncResult {\n const request = createCalculateTotalCurrencyAmountInput(currenciesAmount);\n return executeAction(request, context);\n }\n \n export function createGetDiscountCodeInput(discountCode?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetDiscountCode', true, \n 'DiscountCodeClass'\n , 'false', { bypassCache: 'none', returnEntity: 'DiscountCode'}, {discountCode: discountCode });\n }\n\n export function getDiscountCodeAsync(context: IContext, discountCode?: string | null):AsyncResult {\n const request = createGetDiscountCodeInput(discountCode);\n return executeAction(request, context);\n }\n \n export function createGetDiscountCodesByOfferIdInput(queryResultSettings: IQueryResultSettings, offerId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDiscountCodesByOfferId', true, \n 'DiscountCodeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DiscountCode'}, {offerId: offerId });\n }\n\n export function getDiscountCodesByOfferIdAsync(context: IContext, offerId?: string | null):AsyncResult {\n const request = createGetDiscountCodesByOfferIdInput(context.queryResultSettings, offerId);\n return executeAction(request, context);\n }\n \n export function createGetDiscountCodesByKeywordInput(queryResultSettings: IQueryResultSettings, keyword: string | null, activeDate: Date): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDiscountCodesByKeyword', true, \n 'DiscountCodeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DiscountCode'}, {keyword: keyword, activeDate: activeDate });\n }\n\n export function getDiscountCodesByKeywordAsync(context: IContext, keyword: string | null, activeDate: Date):AsyncResult {\n const request = createGetDiscountCodesByKeywordInput(context.queryResultSettings, keyword, activeDate);\n return executeAction(request, context);\n }\n \n export function createGetDistrictsInput(queryResultSettings: IQueryResultSettings, countryRegionId?: string | null, stateProvinceId?: string | null, countyId?: string | null, cityName?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDistricts', true, \n 'DistrictInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DistrictInfo'}, {countryRegionId: countryRegionId, stateProvinceId: stateProvinceId, countyId: countyId, cityName: cityName });\n }\n\n export function getDistrictsAsync(context: IContext, countryRegionId?: string | null, stateProvinceId?: string | null, countyId?: string | null, cityName?: string | null):AsyncResult {\n const request = createGetDistrictsInput(context.queryResultSettings, countryRegionId, stateProvinceId, countyId, cityName);\n return executeAction(request, context);\n }\n \n export function createGetHardwareStationProfilesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetHardwareStationProfiles', true, \n 'HardwareStationProfileClass'\n , 'true', { bypassCache: 'none', returnEntity: 'HardwareStationProfile'}, { });\n }\n\n export function getHardwareStationProfilesAsync(context: IContext):AsyncResult {\n const request = createGetHardwareStationProfilesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetHardwareProfileByIdInput(hardwareProfileId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetHardwareProfileById', true, \n 'HardwareProfileClass'\n , 'false', { bypassCache: 'none', returnEntity: 'HardwareProfile'}, {hardwareProfileId: hardwareProfileId });\n }\n\n export function getHardwareProfileByIdAsync(context: IContext, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetHardwareProfileByIdInput(hardwareProfileId);\n return executeAction(request, context);\n }\n \n export function createGetLocalizedStringsInput(queryResultSettings: IQueryResultSettings, languageId?: string | null, textId?: number | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLocalizedStrings', true, \n 'LocalizedStringClass'\n , 'true', { bypassCache: 'none', returnEntity: 'LocalizedString'}, {languageId: languageId, textId: textId });\n }\n\n export function getLocalizedStringsAsync(context: IContext, languageId?: string | null, textId?: number | null):AsyncResult {\n const request = createGetLocalizedStringsInput(context.queryResultSettings, languageId, textId);\n return executeAction(request, context);\n }\n \n export function createGetOperationPermissionByIdInput(operationId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetOperationPermissionById', true, \n 'OperationPermissionClass'\n , 'false', { bypassCache: 'none', returnEntity: 'OperationPermission'}, {operationId: operationId });\n }\n\n export function getOperationPermissionByIdAsync(context: IContext, operationId: number):AsyncResult {\n const request = createGetOperationPermissionByIdInput(operationId);\n return executeAction(request, context);\n }\n \n export function createGetReasonCodesByIdInput(queryResultSettings: IQueryResultSettings, reasonCodeGroupId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReasonCodesById', true, \n 'ReasonCodeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ReasonCode'}, {reasonCodeGroupId: reasonCodeGroupId });\n }\n\n export function getReasonCodesByIdAsync(context: IContext, reasonCodeGroupId?: string | null):AsyncResult {\n const request = createGetReasonCodesByIdInput(context.queryResultSettings, reasonCodeGroupId);\n return executeAction(request, context);\n }\n \n export function createSearchReportDataSetInput(reportId?: string | null, parameters?: CommerceProperty[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('SearchReportDataSet', true, \n 'ReportDataSetClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ReportDataSet'}, {reportId: reportId, parameters: parameters });\n }\n\n export function searchReportDataSetAsync(context: IContext, reportId?: string | null, parameters?: CommerceProperty[] | null):AsyncResult {\n const request = createSearchReportDataSetInput(reportId, parameters);\n return executeAction(request, context);\n }\n \n export function createGetReportDataSetByIdInput(reportId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetReportDataSetById', true, \n 'ReportDataSetClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ReportDataSet'}, {reportId: reportId });\n }\n\n export function getReportDataSetByIdAsync(context: IContext, reportId?: string | null):AsyncResult {\n const request = createGetReportDataSetByIdInput(reportId);\n return executeAction(request, context);\n }\n \n export function createGetSrsReportDataSetInput(reportId?: string | null, parameters?: CommerceProperty[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetSrsReportDataSet', true, \n 'ReportDataSetClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ReportDataSet'}, {reportId: reportId, parameters: parameters });\n }\n\n export function getSrsReportDataSetAsync(context: IContext, reportId?: string | null, parameters?: CommerceProperty[] | null):AsyncResult {\n const request = createGetSrsReportDataSetInput(reportId, parameters);\n return executeAction(request, context);\n }\n \n export function createGetIncomeExpenseAccountsInput(queryResultSettings: IQueryResultSettings, incomeExpenseAccountType: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetIncomeExpenseAccounts', true, \n 'IncomeExpenseAccountClass'\n , 'true', { bypassCache: 'none', returnEntity: 'IncomeExpenseAccount'}, {incomeExpenseAccountType: incomeExpenseAccountType });\n }\n\n export function getIncomeExpenseAccountsAsync(context: IContext, incomeExpenseAccountType: number):AsyncResult {\n const request = createGetIncomeExpenseAccountsInput(context.queryResultSettings, incomeExpenseAccountType);\n return executeAction(request, context);\n }\n \n export function createGetStateProvincesInput(queryResultSettings: IQueryResultSettings, countryRegionId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetStateProvinces', true, \n 'StateProvinceInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'StateProvinceInfo'}, {countryRegionId: countryRegionId });\n }\n\n export function getStateProvincesAsync(context: IContext, countryRegionId?: string | null):AsyncResult {\n const request = createGetStateProvincesInput(context.queryResultSettings, countryRegionId);\n return executeAction(request, context);\n }\n \n export function createGetZipCodesInput(queryResultSettings: IQueryResultSettings, countryRegionId?: string | null, stateProvinceId?: string | null, countyId?: string | null, cityName?: string | null, district?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetZipCodes', true, \n 'ZipCodeInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ZipCodeInfo'}, {countryRegionId: countryRegionId, stateProvinceId: stateProvinceId, countyId: countyId, cityName: cityName, district: district });\n }\n\n export function getZipCodesAsync(context: IContext, countryRegionId?: string | null, stateProvinceId?: string | null, countyId?: string | null, cityName?: string | null, district?: string | null):AsyncResult {\n const request = createGetZipCodesInput(context.queryResultSettings, countryRegionId, stateProvinceId, countyId, cityName, district);\n return executeAction(request, context);\n }\n \n export function createGetAddressFromZipCodeInput(queryResultSettings: IQueryResultSettings, countryRegionId?: string | null, zipPostalCode?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAddressFromZipCode', true, \n 'ZipCodeInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ZipCodeInfo'}, {countryRegionId: countryRegionId, zipPostalCode: zipPostalCode });\n }\n\n export function getAddressFromZipCodeAsync(context: IContext, countryRegionId?: string | null, zipPostalCode?: string | null):AsyncResult {\n const request = createGetAddressFromZipCodeInput(context.queryResultSettings, countryRegionId, zipPostalCode);\n return executeAction(request, context);\n }\n \n export function createDisassembleKitTransactionsInput(kitTransaction?: KitTransaction | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('DisassembleKitTransactions', true, \n 'KitTransactionClass'\n , 'false', { bypassCache: 'get', returnEntity: 'KitTransaction'}, {kitTransaction: kitTransaction });\n }\n\n export function disassembleKitTransactionsAsync(context: IContext, kitTransaction?: KitTransaction | null):AsyncResult {\n const request = createDisassembleKitTransactionsInput(kitTransaction);\n return executeAction(request, context);\n }\n \n export function createIssueLoyaltyCardInput(loyaltyCard?: LoyaltyCard | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('IssueLoyaltyCard', true, \n 'LoyaltyCardClass'\n , 'false', { bypassCache: 'get', returnEntity: 'LoyaltyCard'}, {loyaltyCard: loyaltyCard });\n }\n\n export function issueLoyaltyCardAsync(context: IContext, loyaltyCard?: LoyaltyCard | null):AsyncResult {\n const request = createIssueLoyaltyCardInput(loyaltyCard);\n return executeAction(request, context);\n }\n \n export function createGetLoyaltyCardInput(cardNumber?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetLoyaltyCard', true, \n 'LoyaltyCardClass'\n , 'false', { bypassCache: 'none', returnEntity: 'LoyaltyCard'}, {cardNumber: cardNumber });\n }\n\n export function getLoyaltyCardAsync(context: IContext, cardNumber?: string | null):AsyncResult {\n const request = createGetLoyaltyCardInput(cardNumber);\n return executeAction(request, context);\n }\n \n export function createGetCustomerLoyaltyCardsInput(queryResultSettings: IQueryResultSettings, accountNumber?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCustomerLoyaltyCards', true, \n 'LoyaltyCardClass'\n , 'true', { bypassCache: 'none', returnEntity: 'LoyaltyCard'}, {accountNumber: accountNumber });\n }\n\n export function getCustomerLoyaltyCardsAsync(context: IContext, accountNumber?: string | null):AsyncResult {\n const request = createGetCustomerLoyaltyCardsInput(context.queryResultSettings, accountNumber);\n return executeAction(request, context);\n }\n \n export function createGetLoyaltyCardTransactionsInput(queryResultSettings: IQueryResultSettings, cardNumber?: string | null, rewardPointId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLoyaltyCardTransactions', true, \n 'LoyaltyCardTransactionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'LoyaltyCardTransaction'}, {cardNumber: cardNumber, rewardPointId: rewardPointId });\n }\n\n export function getLoyaltyCardTransactionsAsync(context: IContext, cardNumber?: string | null, rewardPointId?: string | null):AsyncResult {\n const request = createGetLoyaltyCardTransactionsInput(context.queryResultSettings, cardNumber, rewardPointId);\n return executeAction(request, context);\n }\n \n export function createGetLoyaltyRewardPointsExpiringSoonInput(queryResultSettings: IQueryResultSettings, cardNumber: string | null, rewardPointId: string | null, daysToExpiry: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLoyaltyRewardPointsExpiringSoon', true, \n 'LoyaltyRewardPointActivityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'LoyaltyRewardPointActivity'}, {cardNumber: cardNumber, rewardPointId: rewardPointId, daysToExpiry: daysToExpiry });\n }\n\n export function getLoyaltyRewardPointsExpiringSoonAsync(context: IContext, cardNumber: string | null, rewardPointId: string | null, daysToExpiry: number):AsyncResult {\n const request = createGetLoyaltyRewardPointsExpiringSoonInput(context.queryResultSettings, cardNumber, rewardPointId, daysToExpiry);\n return executeAction(request, context);\n }\n \n export function createSearchJournalTransactionsInput(queryResultSettings: IQueryResultSettings, searchCriteria?: TransactionSearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchJournalTransactions', true, \n 'TransactionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Transaction'}, {searchCriteria: searchCriteria });\n }\n\n export function searchJournalTransactionsAsync(context: IContext, searchCriteria?: TransactionSearchCriteria | null):AsyncResult {\n const request = createSearchJournalTransactionsInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createGetGiftCardInput(giftCardId?: string | null, tenderTypeId?: string | null, pin?: string | null, expirationMonth?: number | null, expirationYear?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetGiftCard', true, \n 'GiftCardClass'\n , 'false', { bypassCache: 'none', returnEntity: 'GiftCard'}, {giftCardId: giftCardId, tenderTypeId: tenderTypeId, pin: pin, expirationMonth: expirationMonth, expirationYear: expirationYear });\n }\n\n export function getGiftCardAsync(context: IContext, giftCardId?: string | null, tenderTypeId?: string | null, pin?: string | null, expirationMonth?: number | null, expirationYear?: number | null):AsyncResult {\n const request = createGetGiftCardInput(giftCardId, tenderTypeId, pin, expirationMonth, expirationYear);\n return executeAction(request, context);\n }\n \n export function createGetGiftCardInquiryInput(giftCardId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetGiftCardInquiry', true, \n 'GiftCardClass'\n , 'false', { bypassCache: 'none', returnEntity: 'GiftCard'}, {giftCardId: giftCardId });\n }\n\n export function getGiftCardInquiryAsync(context: IContext, giftCardId?: string | null):AsyncResult {\n const request = createGetGiftCardInquiryInput(giftCardId);\n return executeAction(request, context);\n }\n \n export function createGetNonSalesTransactionsInput(queryResultSettings: IQueryResultSettings, shiftId: string | null, shiftTerminalId: string | null, nonSalesTenderTypeValue: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetNonSalesTransactions', true, \n 'NonSalesTransactionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'NonSalesTransaction'}, {shiftId: shiftId, shiftTerminalId: shiftTerminalId, nonSalesTenderTypeValue: nonSalesTenderTypeValue });\n }\n\n export function getNonSalesTransactionsAsync(context: IContext, shiftId: string | null, shiftTerminalId: string | null, nonSalesTenderTypeValue: number):AsyncResult {\n const request = createGetNonSalesTransactionsInput(context.queryResultSettings, shiftId, shiftTerminalId, nonSalesTenderTypeValue);\n return executeAction(request, context);\n }\n \n export function createCreateNonSalesTransactionInput(nonSalesTransaction?: NonSalesTransaction | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CreateNonSalesTransaction', true, \n 'NonSalesTransactionClass'\n , 'false', { bypassCache: 'get', returnEntity: 'NonSalesTransaction'}, {nonSalesTransaction: nonSalesTransaction });\n }\n\n export function createNonSalesTransactionAsync(context: IContext, nonSalesTransaction?: NonSalesTransaction | null):AsyncResult {\n const request = createCreateNonSalesTransactionInput(nonSalesTransaction);\n return executeAction(request, context);\n }\n \n export function createCreateDropAndDeclareTransactionInput(dropAndDeclareTransaction?: DropAndDeclareTransaction | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CreateDropAndDeclareTransaction', true, \n 'DropAndDeclareTransactionClass'\n , 'false', { bypassCache: 'get', returnEntity: 'DropAndDeclareTransaction'}, {dropAndDeclareTransaction: dropAndDeclareTransaction });\n }\n\n export function createDropAndDeclareTransactionAsync(context: IContext, dropAndDeclareTransaction?: DropAndDeclareTransaction | null):AsyncResult {\n const request = createCreateDropAndDeclareTransactionInput(dropAndDeclareTransaction);\n return executeAction(request, context);\n }\n \n export function createGetTaxOverridesInput(queryResultSettings: IQueryResultSettings, overrideBy?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetTaxOverrides', true, \n 'TaxOverrideClass'\n , 'true', { bypassCache: 'none', returnEntity: 'TaxOverride'}, {overrideBy: overrideBy });\n }\n\n export function getTaxOverridesAsync(context: IContext, overrideBy?: string | null):AsyncResult {\n const request = createGetTaxOverridesInput(context.queryResultSettings, overrideBy);\n return executeAction(request, context);\n }\n \n export function createGetCustomerBalanceInput(accountNumber?: string | null, invoiceAccountNumber?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetCustomerBalance', true, \n 'CustomerBalancesClass'\n , 'false', { bypassCache: 'none', returnEntity: 'CustomerBalances'}, {accountNumber: accountNumber, invoiceAccountNumber: invoiceAccountNumber });\n }\n\n export function getCustomerBalanceAsync(context: IContext, accountNumber?: string | null, invoiceAccountNumber?: string | null):AsyncResult {\n const request = createGetCustomerBalanceInput(accountNumber, invoiceAccountNumber);\n return executeAction(request, context);\n }\n \n export function createInitiateLinkToExistingCustomerInput(email?: string | null, activationToken?: string | null, emailTemplateId?: string | null, emailProperties?: NameValuePair[] | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('InitiateLinkToExistingCustomer', true, \n 'LinkToExistingCustomerResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'LinkToExistingCustomerResult'}, {email: email, ActivationToken: activationToken, emailTemplateId: emailTemplateId, emailProperties: emailProperties });\n }\n\n export function initiateLinkToExistingCustomerAsync(context: IContext, email?: string | null, activationToken?: string | null, emailTemplateId?: string | null, emailProperties?: NameValuePair[] | null):AsyncResult {\n const request = createInitiateLinkToExistingCustomerInput(email, activationToken, emailTemplateId, emailProperties);\n return executeAction(request, context);\n }\n \n export function createFinalizeLinkToExistingCustomerInput(email?: string | null, activationToken?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('FinalizeLinkToExistingCustomer', true, \n 'LinkToExistingCustomerResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'LinkToExistingCustomerResult'}, {email: email, ActivationToken: activationToken });\n }\n\n export function finalizeLinkToExistingCustomerAsync(context: IContext, email?: string | null, activationToken?: string | null):AsyncResult {\n const request = createFinalizeLinkToExistingCustomerInput(email, activationToken);\n return executeAction(request, context);\n }\n \n export function createUnlinkFromExistingCustomerInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('UnlinkFromExistingCustomer', true, '', '', { bypassCache: 'get', returnEntity: ''}, { });\n }\n\n export function unlinkFromExistingCustomerAsync(context: IContext):AsyncResult {\n const request = createUnlinkFromExistingCustomerInput();\n return executeAction(request, context);\n }\n \n export function createGetOfflineSyncStatusInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOfflineSyncStatus', true, \n 'OfflineSyncStatsLineClass'\n , 'true', { bypassCache: 'none', returnEntity: 'OfflineSyncStatsLine'}, { });\n }\n\n export function getOfflineSyncStatusAsync(context: IContext):AsyncResult {\n const request = createGetOfflineSyncStatusInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetOfflinePendingTransactionCountInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetOfflinePendingTransactionCount', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, { });\n }\n\n export function getOfflinePendingTransactionCountAsync(context: IContext):AsyncResult {\n const request = createGetOfflinePendingTransactionCountInput();\n return executeAction(request, context);\n }\n \n export function createGetOfflinePendingTransactionCountByShiftInput(shiftId: number, shiftTerminalId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetOfflinePendingTransactionCountByShift', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, {shiftId: shiftId, shiftTerminalId: shiftTerminalId });\n }\n\n export function getOfflinePendingTransactionCountByShiftAsync(context: IContext, shiftId: number, shiftTerminalId?: string | null):AsyncResult {\n const request = createGetOfflinePendingTransactionCountByShiftInput(shiftId, shiftTerminalId);\n return executeAction(request, context);\n }\n \n export function createGetOfflineOpenShiftsInput(queryResultSettings: IQueryResultSettings, filterByCurrentUser: boolean, includeAllShiftsForStore: boolean): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOfflineOpenShifts', false, \n 'ShiftClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Shift'}, {filterByCurrentUser: filterByCurrentUser, includeAllShiftsForStore: includeAllShiftsForStore });\n }\n\n export function getOfflineOpenShiftsAsync(context: IContext, filterByCurrentUser: boolean, includeAllShiftsForStore: boolean):AsyncResult {\n const request = createGetOfflineOpenShiftsInput(context.queryResultSettings, filterByCurrentUser, includeAllShiftsForStore);\n return executeAction(request, context);\n }\n \n export function createDeleteOfflineShiftsInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('DeleteOfflineShifts', false, '', 'false', { bypassCache: 'get', returnEntity: ''}, { });\n }\n\n export function deleteOfflineShiftsAsync(context: IContext):AsyncResult {\n const request = createDeleteOfflineShiftsInput();\n return executeAction(request, context);\n }\n \n export function createUpdateDownloadSessionInput(downloadSession?: DownloadSession | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('UpdateDownloadSession', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {downloadSession: downloadSession });\n }\n\n export function updateDownloadSessionAsync(context: IContext, downloadSession?: DownloadSession | null):AsyncResult {\n const request = createUpdateDownloadSessionInput(downloadSession);\n return executeAction(request, context);\n }\n \n export function createUpdateApplicationVersionInput(appVersion?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('UpdateApplicationVersion', true, '', '', { bypassCache: 'get', returnEntity: ''}, {appVersion: appVersion });\n }\n\n export function updateApplicationVersionAsync(context: IContext, appVersion?: string | null):AsyncResult {\n const request = createUpdateApplicationVersionInput(appVersion);\n return executeAction(request, context);\n }\n \n export function createGetStorageAccessTokenForUploadInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetStorageAccessTokenForUpload', true, \n 'StorageAccessTokenClass'\n , 'false', { bypassCache: 'none', returnEntity: 'StorageAccessToken'}, { });\n }\n\n export function getStorageAccessTokenForUploadAsync(context: IContext):AsyncResult {\n const request = createGetStorageAccessTokenForUploadInput();\n return executeAction(request, context);\n }\n \n export function createGetBusinessProcessModelLibrariesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetBusinessProcessModelLibraries', true, \n 'FrameworkClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Framework'}, { });\n }\n\n export function getBusinessProcessModelLibrariesAsync(context: IContext):AsyncResult {\n const request = createGetBusinessProcessModelLibrariesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetBusinessProcessModelLibraryInput(businessProcessModelFrameworkLineId: number, hierarchyDepth: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetBusinessProcessModelLibrary', true, \n 'FrameworkClass'\n , 'false', { bypassCache: 'none', returnEntity: 'Framework'}, {businessProcessModelFrameworkLineId: businessProcessModelFrameworkLineId, hierarchyDepth: hierarchyDepth });\n }\n\n export function getBusinessProcessModelLibraryAsync(context: IContext, businessProcessModelFrameworkLineId: number, hierarchyDepth: number):AsyncResult {\n const request = createGetBusinessProcessModelLibraryInput(businessProcessModelFrameworkLineId, hierarchyDepth);\n return executeAction(request, context);\n }\n \n export function createSearchTaskGuidesByTitleInput(queryResultSettings: IQueryResultSettings, businessProcessModelFrameworkLineId: number, taskGuideSearchText: string | null, queryTypeValue: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchTaskGuidesByTitle', true, \n 'TaskGuidesSearchResultClass'\n , 'true', { bypassCache: 'none', returnEntity: 'TaskGuidesSearchResult'}, {businessProcessModelFrameworkLineId: businessProcessModelFrameworkLineId, taskGuideSearchText: taskGuideSearchText, queryTypeValue: queryTypeValue });\n }\n\n export function searchTaskGuidesByTitleAsync(context: IContext, businessProcessModelFrameworkLineId: number, taskGuideSearchText: string | null, queryTypeValue: number):AsyncResult {\n const request = createSearchTaskGuidesByTitleInput(context.queryResultSettings, businessProcessModelFrameworkLineId, taskGuideSearchText, queryTypeValue);\n return executeAction(request, context);\n }\n \n export function createGenerateBusinessProcessModelPackageInput(taskRecording?: Recording | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GenerateBusinessProcessModelPackage', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {taskRecording: taskRecording });\n }\n\n export function generateBusinessProcessModelPackageAsync(context: IContext, taskRecording?: Recording | null):AsyncResult {\n const request = createGenerateBusinessProcessModelPackageInput(taskRecording);\n return executeAction(request, context);\n }\n \n export function createDownloadRecordingInput(businessProcessModelLineId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('DownloadRecording', true, \n 'RecordingClass'\n , 'false', { bypassCache: 'get', returnEntity: 'Recording'}, {businessProcessModelLineId: businessProcessModelLineId });\n }\n\n export function downloadRecordingAsync(context: IContext, businessProcessModelLineId: number):AsyncResult {\n const request = createDownloadRecordingInput(businessProcessModelLineId);\n return executeAction(request, context);\n }\n \n export function createLoadRecordingFromFileInput(recordingUrl?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('LoadRecordingFromFile', true, \n 'RecordingClass'\n , 'false', { bypassCache: 'get', returnEntity: 'Recording'}, {recordingUrl: recordingUrl });\n }\n\n export function loadRecordingFromFileAsync(context: IContext, recordingUrl?: string | null):AsyncResult {\n const request = createLoadRecordingFromFileInput(recordingUrl);\n return executeAction(request, context);\n }\n \n export function createGenerateRecordingFileInput(taskRecording?: Recording | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GenerateRecordingFile', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {taskRecording: taskRecording });\n }\n\n export function generateRecordingFileAsync(context: IContext, taskRecording?: Recording | null):AsyncResult {\n const request = createGenerateRecordingFileInput(taskRecording);\n return executeAction(request, context);\n }\n \n export function createGenerateTrainingDocumentInput(taskRecording?: Recording | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GenerateTrainingDocument', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {taskRecording: taskRecording });\n }\n\n export function generateTrainingDocumentAsync(context: IContext, taskRecording?: Recording | null):AsyncResult {\n const request = createGenerateTrainingDocumentInput(taskRecording);\n return executeAction(request, context);\n }\n \n export function createGenerateRecordingBundleInput(taskRecording?: Recording | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GenerateRecordingBundle', true, '', 'false', { bypassCache: 'get', returnEntity: ''}, {taskRecording: taskRecording });\n }\n\n export function generateRecordingBundleAsync(context: IContext, taskRecording?: Recording | null):AsyncResult {\n const request = createGenerateRecordingBundleInput(taskRecording);\n return executeAction(request, context);\n }\n \n export function createUploadRecordingInput(taskRecording: Recording | null, businessProcessModelLineId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('UploadRecording', true, '', '', { bypassCache: 'get', returnEntity: ''}, {taskRecording: taskRecording, businessProcessModelLineId: businessProcessModelLineId });\n }\n\n export function uploadRecordingAsync(context: IContext, taskRecording: Recording | null, businessProcessModelLineId: number):AsyncResult {\n const request = createUploadRecordingInput(taskRecording, businessProcessModelLineId);\n return executeAction(request, context);\n }\n \n export function createGetAttributeDefinitionsInput(queryResultSettings: IQueryResultSettings, attributeDefinitionCriteria?: AttributeDefinitionCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAttributeDefinitions', true, \n 'AttributeDefinitionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'AttributeDefinition'}, {attributeDefinitionCriteria: attributeDefinitionCriteria });\n }\n\n export function getAttributeDefinitionsAsync(context: IContext, attributeDefinitionCriteria?: AttributeDefinitionCriteria | null):AsyncResult {\n const request = createGetAttributeDefinitionsInput(context.queryResultSettings, attributeDefinitionCriteria);\n return executeAction(request, context);\n }\n \n export function createGetAttributeGroupDefinitionsInput(queryResultSettings: IQueryResultSettings, attributeGroupDefinitionCriteria?: AttributeGroupDefinitionCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAttributeGroupDefinitions', true, \n 'AttributeGroupDefinitionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'AttributeGroupDefinition'}, {attributeGroupDefinitionCriteria: attributeGroupDefinitionCriteria });\n }\n\n export function getAttributeGroupDefinitionsAsync(context: IContext, attributeGroupDefinitionCriteria?: AttributeGroupDefinitionCriteria | null):AsyncResult {\n const request = createGetAttributeGroupDefinitionsInput(context.queryResultSettings, attributeGroupDefinitionCriteria);\n return executeAction(request, context);\n }\n \n export function createSaveFiscalTransactionInput(fiscalTransaction?: FiscalTransaction | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('SaveFiscalTransaction', true, '', '', { bypassCache: 'get', returnEntity: ''}, {fiscalTransaction: fiscalTransaction });\n }\n\n export function saveFiscalTransactionAsync(context: IContext, fiscalTransaction?: FiscalTransaction | null):AsyncResult {\n const request = createSaveFiscalTransactionInput(fiscalTransaction);\n return executeAction(request, context);\n }\n \n export function createValidatePrintReceiptCopyAllowedInput(salesOrderToPrint?: SalesOrder | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('ValidatePrintReceiptCopyAllowed', true, '', '', { bypassCache: 'get', returnEntity: ''}, {salesOrderToPrint: salesOrderToPrint });\n }\n\n export function validatePrintReceiptCopyAllowedAsync(context: IContext, salesOrderToPrint?: SalesOrder | null):AsyncResult {\n const request = createValidatePrintReceiptCopyAllowedInput(salesOrderToPrint);\n return executeAction(request, context);\n }\n \n export function createRegisterAuditEventInput(auditEvent?: AuditEvent | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('RegisterAuditEvent', true, '', '', { bypassCache: 'get', returnEntity: ''}, {auditEvent: auditEvent });\n }\n\n export function registerAuditEventAsync(context: IContext, auditEvent?: AuditEvent | null):AsyncResult {\n const request = createRegisterAuditEventInput(auditEvent);\n return executeAction(request, context);\n }\n \n export function createRegisterAndGetAuditEventInput(auditEvent?: AuditEvent | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('RegisterAndGetAuditEvent', true, \n 'AuditEventClass'\n , 'false', { bypassCache: 'get', returnEntity: 'AuditEvent'}, {auditEvent: auditEvent });\n }\n\n export function registerAndGetAuditEventAsync(context: IContext, auditEvent?: AuditEvent | null):AsyncResult {\n const request = createRegisterAndGetAuditEventInput(auditEvent);\n return executeAction(request, context);\n }\n \n export function createGetInventoryAvailableToPromiseInput(queryResultSettings: IQueryResultSettings, productId: number, itemId?: string | null, inventLocationId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetInventoryAvailableToPromise', true, \n 'InventoryAvailableToPromiseClass'\n , 'true', { bypassCache: 'none', returnEntity: 'InventoryAvailableToPromise'}, {productId: productId, itemId: itemId, inventLocationId: inventLocationId });\n }\n\n export function getInventoryAvailableToPromiseAsync(context: IContext, productId: number, itemId?: string | null, inventLocationId?: string | null):AsyncResult {\n const request = createGetInventoryAvailableToPromiseInput(context.queryResultSettings, productId, itemId, inventLocationId);\n return executeAction(request, context);\n }\n \n export function createGetSalesOrdersWithNoFiscalTransactionsInput(queryResultSettings: IQueryResultSettings, storeNumber?: string | null, terminalId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSalesOrdersWithNoFiscalTransactions', true, \n 'SalesOrderClass'\n , 'true', { bypassCache: 'none', returnEntity: 'SalesOrder'}, {storeNumber: storeNumber, terminalId: terminalId });\n }\n\n export function getSalesOrdersWithNoFiscalTransactionsAsync(context: IContext, storeNumber?: string | null, terminalId?: string | null):AsyncResult {\n const request = createGetSalesOrdersWithNoFiscalTransactionsInput(context.queryResultSettings, storeNumber, terminalId);\n return executeAction(request, context);\n }\n \n export function createGetNotificationsInput(queryResultSettings: IQueryResultSettings, subscribedOperations: number[], extensionProperties?: CommerceProperty[] | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetNotifications', true, \n 'NotificationItemClass'\n , 'true', { bypassCache: 'none', returnEntity: 'NotificationItem'}, {subscribedOperations: subscribedOperations, extensionProperties: extensionProperties });\n }\n\n export function getNotificationsAsync(context: IContext, subscribedOperations: number[], extensionProperties?: CommerceProperty[] | null):AsyncResult {\n const request = createGetNotificationsInput(context.queryResultSettings, subscribedOperations, extensionProperties);\n return executeAction(request, context);\n }\n \n export function createAcknowledgeNotificationsInput(lastPullDateTime: Date): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('AcknowledgeNotifications', true, '', '', { bypassCache: 'get', returnEntity: ''}, {lastPullDateTime: lastPullDateTime });\n }\n\n export function acknowledgeNotificationsAsync(context: IContext, lastPullDateTime: Date):AsyncResult {\n const request = createAcknowledgeNotificationsInput(lastPullDateTime);\n return executeAction(request, context);\n }\n \n export function createSearchPurchaseHistoryInput(queryResultSettings: IQueryResultSettings, searchCriteria?: PurchaseHistorySearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchPurchaseHistory', true, \n 'PurchaseHistoryClass'\n , 'true', { bypassCache: 'none', returnEntity: 'PurchaseHistory'}, {searchCriteria: searchCriteria });\n }\n\n export function searchPurchaseHistoryAsync(context: IContext, searchCriteria?: PurchaseHistorySearchCriteria | null):AsyncResult {\n const request = createSearchPurchaseHistoryInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationFiscalDocumentInput(hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, fiscalIntegrationDocumentRetrievalCriteria?: FiscalIntegrationDocumentRetrievalCriteria | null, connectorType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationFiscalDocument', true, \n 'FiscalIntegrationDocumentClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationDocument'}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId, fiscalIntegrationDocumentRetrievalCriteria: fiscalIntegrationDocumentRetrievalCriteria, connectorType: connectorType });\n }\n\n export function getFiscalIntegrationFiscalDocumentAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, fiscalIntegrationDocumentRetrievalCriteria?: FiscalIntegrationDocumentRetrievalCriteria | null, connectorType?: number | null):AsyncResult {\n const request = createGetFiscalIntegrationFiscalDocumentInput(hardwareProfileId, functionalityProfileGroupId, fiscalIntegrationDocumentRetrievalCriteria, connectorType);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationNonFiscalDocumentInput(hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, fiscalIntegrationDocumentRetrievalCriteria?: FiscalIntegrationDocumentRetrievalCriteria | null, connectorType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationNonFiscalDocument', true, \n 'FiscalIntegrationDocumentClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationDocument'}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId, fiscalIntegrationDocumentRetrievalCriteria: fiscalIntegrationDocumentRetrievalCriteria, connectorType: connectorType });\n }\n\n export function getFiscalIntegrationNonFiscalDocumentAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, fiscalIntegrationDocumentRetrievalCriteria?: FiscalIntegrationDocumentRetrievalCriteria | null, connectorType?: number | null):AsyncResult {\n const request = createGetFiscalIntegrationNonFiscalDocumentInput(hardwareProfileId, functionalityProfileGroupId, fiscalIntegrationDocumentRetrievalCriteria, connectorType);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationFiscalServiceSetupDocumentInput(hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, connectorType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationFiscalServiceSetupDocument', true, \n 'FiscalIntegrationDocumentClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationDocument'}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId, connectorType: connectorType });\n }\n\n export function getFiscalIntegrationFiscalServiceSetupDocumentAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, connectorType?: number | null):AsyncResult {\n const request = createGetFiscalIntegrationFiscalServiceSetupDocumentInput(hardwareProfileId, functionalityProfileGroupId, connectorType);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationFiscalServiceReadDataDocumentInput(hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, connectorType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationFiscalServiceReadDataDocument', true, \n 'FiscalIntegrationDocumentClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationDocument'}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId, connectorType: connectorType });\n }\n\n export function getFiscalIntegrationFiscalServiceReadDataDocumentAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, connectorType?: number | null):AsyncResult {\n const request = createGetFiscalIntegrationFiscalServiceReadDataDocumentInput(hardwareProfileId, functionalityProfileGroupId, connectorType);\n return executeAction(request, context);\n }\n \n export function createProcessFiscalIntegrationFiscalServiceReadDataResultInput(hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, documentToProcess?: string | null, connectorType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('ProcessFiscalIntegrationFiscalServiceReadDataResult', true, '', '', { bypassCache: 'get', returnEntity: ''}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId, documentToProcess: documentToProcess, connectorType: connectorType });\n }\n\n export function processFiscalIntegrationFiscalServiceReadDataResultAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, documentToProcess?: string | null, connectorType?: number | null):AsyncResult {\n const request = createProcessFiscalIntegrationFiscalServiceReadDataResultInput(hardwareProfileId, functionalityProfileGroupId, documentToProcess, connectorType);\n return executeAction(request, context);\n }\n \n export function createSaveFiscalIntegrationRegistrationResultInput(hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, registrationResult?: FiscalIntegrationRegistrationResult | null, connectorType?: number | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('SaveFiscalIntegrationRegistrationResult', true, '', '', { bypassCache: 'get', returnEntity: ''}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId, registrationResult: registrationResult, connectorType: connectorType });\n }\n\n export function saveFiscalIntegrationRegistrationResultAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string | null, registrationResult?: FiscalIntegrationRegistrationResult | null, connectorType?: number | null):AsyncResult {\n const request = createSaveFiscalIntegrationRegistrationResultInput(hardwareProfileId, functionalityProfileGroupId, registrationResult, connectorType);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationRegistrationProcessInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationRegistrationProcess', true, \n 'FiscalIntegrationRegistrationProcessClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationRegistrationProcess'}, { });\n }\n\n export function getFiscalIntegrationRegistrationProcessAsync(context: IContext):AsyncResult {\n const request = createGetFiscalIntegrationRegistrationProcessInput();\n return executeAction(request, context);\n }\n \n export function createGetChannelSupportedFiscalIntegrationEventsByGroupInput(functionalityProfileGroupId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetChannelSupportedFiscalIntegrationEventsByGroup', true, \n 'FiscalIntegrationSupportedEventsClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationSupportedEvents'}, {functionalityProfileGroupId: functionalityProfileGroupId });\n }\n\n export function getChannelSupportedFiscalIntegrationEventsByGroupAsync(context: IContext, functionalityProfileGroupId?: string | null):AsyncResult {\n const request = createGetChannelSupportedFiscalIntegrationEventsByGroupInput(functionalityProfileGroupId);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationTechnicalProfilesInput(queryResultSettings: IQueryResultSettings, hardwareProfileId?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationTechnicalProfiles', true, \n 'FiscalIntegrationTechnicalProfileClass'\n , 'true', { bypassCache: 'none', returnEntity: 'FiscalIntegrationTechnicalProfile'}, {hardwareProfileId: hardwareProfileId });\n }\n\n export function getFiscalIntegrationTechnicalProfilesAsync(context: IContext, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetFiscalIntegrationTechnicalProfilesInput(context.queryResultSettings, hardwareProfileId);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationTechnicalProfilesByFunctionalityGroupIdsInput(queryResultSettings: IQueryResultSettings, hardwareProfileId?: string | null, functionalityProfileGroupId?: string[] | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationTechnicalProfilesByFunctionalityGroupIds', true, \n 'FiscalIntegrationTechnicalProfileClass'\n , 'true', { bypassCache: 'none', returnEntity: 'FiscalIntegrationTechnicalProfile'}, {hardwareProfileId: hardwareProfileId, functionalityProfileGroupId: functionalityProfileGroupId });\n }\n\n export function getFiscalIntegrationTechnicalProfilesByFunctionalityGroupIdsAsync(context: IContext, hardwareProfileId?: string | null, functionalityProfileGroupId?: string[] | null):AsyncResult {\n const request = createGetFiscalIntegrationTechnicalProfilesByFunctionalityGroupIdsInput(context.queryResultSettings, hardwareProfileId, functionalityProfileGroupId);\n return executeAction(request, context);\n }\n \n export function createGetFiscalRegistrationProcessSummaryInput(hardwareProfileId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalRegistrationProcessSummary', true, \n 'FiscalIntegrationFiscalRegistrationProcessSummaryClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationFiscalRegistrationProcessSummary'}, {hardwareProfileId: hardwareProfileId });\n }\n\n export function getFiscalRegistrationProcessSummaryAsync(context: IContext, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetFiscalRegistrationProcessSummaryInput(hardwareProfileId);\n return executeAction(request, context);\n }\n \n export function createBackupFiscalRegistrationProcessContextInput(terminalId: string | null, storeNumber: string | null, channelId: number, fiscalProcessCompleted: boolean, fiscalIntegrationSerializedContext?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('BackupFiscalRegistrationProcessContext', true, '', '', { bypassCache: 'get', returnEntity: ''}, {terminalId: terminalId, storeNumber: storeNumber, channelId: channelId, fiscalProcessCompleted: fiscalProcessCompleted, fiscalIntegrationSerializedContext: fiscalIntegrationSerializedContext });\n }\n\n export function backupFiscalRegistrationProcessContextAsync(context: IContext, terminalId: string | null, storeNumber: string | null, channelId: number, fiscalProcessCompleted: boolean, fiscalIntegrationSerializedContext?: string | null):AsyncResult {\n const request = createBackupFiscalRegistrationProcessContextInput(terminalId, storeNumber, channelId, fiscalProcessCompleted, fiscalIntegrationSerializedContext);\n return executeAction(request, context);\n }\n \n export function createGetActiveFiscalRegistrationProcessContextBackupInput(terminalId: string | null, storeNumber: string | null, channelId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetActiveFiscalRegistrationProcessContextBackup', true, '', 'false', { bypassCache: 'none', returnEntity: ''}, {terminalId: terminalId, storeNumber: storeNumber, channelId: channelId });\n }\n\n export function getActiveFiscalRegistrationProcessContextBackupAsync(context: IContext, terminalId: string | null, storeNumber: string | null, channelId: number):AsyncResult {\n const request = createGetActiveFiscalRegistrationProcessContextBackupInput(terminalId, storeNumber, channelId);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationTechnicalProfilesBySearchCriteriaInput(queryResultSettings: IQueryResultSettings, hardwareProfileId?: string | null, fiscalIntegrationTechnicalProfileSearchCriteria?: FiscalIntegrationTechnicalProfileSearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationTechnicalProfilesBySearchCriteria', true, \n 'FiscalIntegrationTechnicalProfileClass'\n , 'true', { bypassCache: 'none', returnEntity: 'FiscalIntegrationTechnicalProfile'}, {hardwareProfileId: hardwareProfileId, fiscalIntegrationTechnicalProfileSearchCriteria: fiscalIntegrationTechnicalProfileSearchCriteria });\n }\n\n export function getFiscalIntegrationTechnicalProfilesBySearchCriteriaAsync(context: IContext, hardwareProfileId?: string | null, fiscalIntegrationTechnicalProfileSearchCriteria?: FiscalIntegrationTechnicalProfileSearchCriteria | null):AsyncResult {\n const request = createGetFiscalIntegrationTechnicalProfilesBySearchCriteriaInput(context.queryResultSettings, hardwareProfileId, fiscalIntegrationTechnicalProfileSearchCriteria);\n return executeAction(request, context);\n }\n \n export function createGetFiscalIntegrationServiceStatusInput(fiscalIntegrationServiceInfo?: FiscalIntegrationServiceInfo | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetFiscalIntegrationServiceStatus', true, \n 'FiscalIntegrationServiceStatusClass'\n , 'false', { bypassCache: 'none', returnEntity: 'FiscalIntegrationServiceStatus'}, {fiscalIntegrationServiceInfo: fiscalIntegrationServiceInfo });\n }\n\n export function getFiscalIntegrationServiceStatusAsync(context: IContext, fiscalIntegrationServiceInfo?: FiscalIntegrationServiceInfo | null):AsyncResult {\n const request = createGetFiscalIntegrationServiceStatusInput(fiscalIntegrationServiceInfo);\n return executeAction(request, context);\n }\n \n export function createSubmitFiscalIntegrationDocumentInput(documentToSubmit?: string | null, fiscalIntegrationServiceInfo?: FiscalIntegrationServiceInfo | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('SubmitFiscalIntegrationDocument', true, \n 'FiscalIntegrationServiceCommunicationResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'FiscalIntegrationServiceCommunicationResult'}, {documentToSubmit: documentToSubmit, fiscalIntegrationServiceInfo: fiscalIntegrationServiceInfo });\n }\n\n export function submitFiscalIntegrationDocumentAsync(context: IContext, documentToSubmit?: string | null, fiscalIntegrationServiceInfo?: FiscalIntegrationServiceInfo | null):AsyncResult {\n const request = createSubmitFiscalIntegrationDocumentInput(documentToSubmit, fiscalIntegrationServiceInfo);\n return executeAction(request, context);\n }\n \n export function createGetFeatureStatesInput(queryResultSettings: IQueryResultSettings, featureNames?: string[] | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetFeatureStates', true, \n 'FeatureStateClass'\n , 'true', { bypassCache: 'none', returnEntity: 'FeatureState'}, {featureNames: featureNames });\n }\n\n export function getFeatureStatesAsync(context: IContext, featureNames?: string[] | null):AsyncResult {\n const request = createGetFeatureStatesInput(context.queryResultSettings, featureNames);\n return executeAction(request, context);\n }\n \n export function createGetLastFiscalIntegrationSequentialSignaturesInput(queryResultSettings: IQueryResultSettings, sequentialKeys?: string[] | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLastFiscalIntegrationSequentialSignatures', true, \n 'FiscalIntegrationSequentialSignatureDataClass'\n , 'true', { bypassCache: 'none', returnEntity: 'FiscalIntegrationSequentialSignatureData'}, {sequentialKeys: sequentialKeys });\n }\n\n export function getLastFiscalIntegrationSequentialSignaturesAsync(context: IContext, sequentialKeys?: string[] | null):AsyncResult {\n const request = createGetLastFiscalIntegrationSequentialSignaturesInput(context.queryResultSettings, sequentialKeys);\n return executeAction(request, context);\n }\n \n export function createCreateFiscalTransactionInput(functionalityProfileGroupId: string | null, registrationResult: FiscalIntegrationRegistrationResult | null, connectorType: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CreateFiscalTransaction', true, \n 'FiscalTransactionClass'\n , 'false', { bypassCache: 'get', returnEntity: 'FiscalTransaction'}, {functionalityProfileGroupId: functionalityProfileGroupId, registrationResult: registrationResult, connectorType: connectorType });\n }\n\n export function createFiscalTransactionAsync(context: IContext, functionalityProfileGroupId: string | null, registrationResult: FiscalIntegrationRegistrationResult | null, connectorType: number):AsyncResult {\n const request = createCreateFiscalTransactionInput(functionalityProfileGroupId, registrationResult, connectorType);\n return executeAction(request, context);\n }\n \n export function createGetEstimatedPickupTimeslotAvailabilitiesInput(queryResultSettings: IQueryResultSettings, searchCriteria?: PickupTimeslotAvailabilitySearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetEstimatedPickupTimeslotAvailabilities', true, \n 'PickupTimeslotAvailabilityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'PickupTimeslotAvailability'}, {searchCriteria: searchCriteria });\n }\n\n export function getEstimatedPickupTimeslotAvailabilitiesAsync(context: IContext, searchCriteria?: PickupTimeslotAvailabilitySearchCriteria | null):AsyncResult {\n const request = createGetEstimatedPickupTimeslotAvailabilitiesInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createCalculateSalesDocumentInput(salesDocument?: Cart | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CalculateSalesDocument', true, \n 'CartClass'\n , 'false', { bypassCache: 'get', returnEntity: 'Cart'}, {salesDocument: salesDocument });\n }\n\n export function calculateSalesDocumentAsync(context: IContext, salesDocument?: Cart | null):AsyncResult {\n const request = createCalculateSalesDocumentInput(salesDocument);\n return executeAction(request, context);\n }\n \n export function createSearchVendorsInput(queryResultSettings: IQueryResultSettings, searchCriteria?: VendorSearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchVendors', true, \n 'VendorClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Vendor'}, {searchCriteria: searchCriteria });\n }\n\n export function searchVendorsAsync(context: IContext, searchCriteria?: VendorSearchCriteria | null):AsyncResult {\n const request = createSearchVendorsInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createValidateVendorApprovedForItemInput(itemId?: string | null, vendorAccountNumber?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('ValidateVendorApprovedForItem', true, \n 'VendorValidationResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'VendorValidationResult'}, {itemId: itemId, vendorAccountNumber: vendorAccountNumber });\n }\n\n export function validateVendorApprovedForItemAsync(context: IContext, itemId?: string | null, vendorAccountNumber?: string | null):AsyncResult {\n const request = createValidateVendorApprovedForItemInput(itemId, vendorAccountNumber);\n return executeAction(request, context);\n }\n \n export function createGetButtonGridsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetButtonGrids', false, \n 'ButtonGridClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ButtonGrid'}, { });\n }\n\n export function getButtonGridsAsync(context: IContext):AsyncResult {\n const request = createGetButtonGridsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetButtonGridsByScreenSizeInput(queryResultSettings: IQueryResultSettings, height: number, width: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetButtonGridsByScreenSize', false, \n 'ButtonGridClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ButtonGrid'}, {height: height, width: width });\n }\n\n export function getButtonGridsByScreenSizeAsync(context: IContext, height: number, width: number):AsyncResult {\n const request = createGetButtonGridsByScreenSizeInput(context.queryResultSettings, height, width);\n return executeAction(request, context);\n }\n \n export function createGetOperationalInsightsConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetOperationalInsightsConfiguration', false, \n 'OperationalInsightsConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'OperationalInsightsConfiguration'}, { });\n }\n\n export function getOperationalInsightsConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetOperationalInsightsConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createGetCashDeclarationsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCashDeclarations', false, \n 'CashDeclarationClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CashDeclaration'}, { });\n }\n\n export function getCashDeclarationsAsync(context: IContext):AsyncResult {\n const request = createGetCashDeclarationsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCountryRegionsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCountryRegions', false, \n 'CountryRegionInfoClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CountryRegionInfo'}, { });\n }\n\n export function getCountryRegionsAsync(context: IContext):AsyncResult {\n const request = createGetCountryRegionsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCustomerGroupsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCustomerGroups', false, \n 'CustomerGroupClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CustomerGroup'}, { });\n }\n\n export function getCustomerGroupsAsync(context: IContext):AsyncResult {\n const request = createGetCustomerGroupsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetChannelDeliveryOptionConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetChannelDeliveryOptionConfiguration', false, \n 'ChannelDeliveryOptionConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ChannelDeliveryOptionConfiguration'}, { });\n }\n\n export function getChannelDeliveryOptionConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetChannelDeliveryOptionConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createGetChannelsByTypeInput(queryResultSettings: IQueryResultSettings, channelType?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetChannelsByType', false, \n 'ChannelIdentityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ChannelIdentity'}, {channelType: channelType });\n }\n\n export function getChannelsByTypeAsync(context: IContext, channelType?: string | null):AsyncResult {\n const request = createGetChannelsByTypeInput(context.queryResultSettings, channelType);\n return executeAction(request, context);\n }\n \n export function createGetChannelsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetChannels', false, \n 'ChannelIdentityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ChannelIdentity'}, { });\n }\n\n export function getChannelsAsync(context: IContext):AsyncResult {\n const request = createGetChannelsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchChannelsInput(queryResultSettings: IQueryResultSettings, searchCriteria?: ChannelSearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchChannels', true, \n 'ChannelIdentityClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ChannelIdentity'}, {searchCriteria: searchCriteria });\n }\n\n export function searchChannelsAsync(context: IContext, searchCriteria?: ChannelSearchCriteria | null):AsyncResult {\n const request = createSearchChannelsInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createGetEnvironmentConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetEnvironmentConfiguration', false, \n 'EnvironmentConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'EnvironmentConfiguration'}, { });\n }\n\n export function getEnvironmentConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetEnvironmentConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createGetSearchConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetSearchConfiguration', false, \n 'SearchConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'SearchConfiguration'}, { });\n }\n\n export function getSearchConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetSearchConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createGetExtensionPackageDefinitionsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetExtensionPackageDefinitions', false, \n 'ExtensionPackageDefinitionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ExtensionPackageDefinition'}, { });\n }\n\n export function getExtensionPackageDefinitionsAsync(context: IContext):AsyncResult {\n const request = createGetExtensionPackageDefinitionsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetExtensionProfileInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetExtensionProfile', false, \n 'ExtensionProfileClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ExtensionProfile'}, { });\n }\n\n export function getExtensionProfileAsync(context: IContext):AsyncResult {\n const request = createGetExtensionProfileInput();\n return executeAction(request, context);\n }\n \n export function createGetDeviceConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetDeviceConfiguration', false, \n 'DeviceConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'DeviceConfiguration'}, { });\n }\n\n export function getDeviceConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetDeviceConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createGetVisualProfileInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetVisualProfile', false, \n 'VisualProfileClass'\n , 'false', { bypassCache: 'none', returnEntity: 'VisualProfile'}, { });\n }\n\n export function getVisualProfileAsync(context: IContext):AsyncResult {\n const request = createGetVisualProfileInput();\n return executeAction(request, context);\n }\n \n export function createGetLanguagesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetLanguages', false, \n 'SupportedLanguageClass'\n , 'true', { bypassCache: 'none', returnEntity: 'SupportedLanguage'}, { });\n }\n\n export function getLanguagesAsync(context: IContext):AsyncResult {\n const request = createGetLanguagesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetAffiliationsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAffiliations', false, \n 'AffiliationClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Affiliation'}, { });\n }\n\n export function getAffiliationsAsync(context: IContext):AsyncResult {\n const request = createGetAffiliationsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetOperationPermissionsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetOperationPermissions', false, \n 'OperationPermissionClass'\n , 'true', { bypassCache: 'none', returnEntity: 'OperationPermission'}, { });\n }\n\n export function getOperationPermissionsAsync(context: IContext):AsyncResult {\n const request = createGetOperationPermissionsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetReasonCodesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReasonCodes', false, \n 'ReasonCodeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ReasonCode'}, { });\n }\n\n export function getReasonCodesAsync(context: IContext):AsyncResult {\n const request = createGetReasonCodesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetReturnOrderReasonCodesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetReturnOrderReasonCodes', false, \n 'ReasonCodeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ReasonCode'}, { });\n }\n\n export function getReturnOrderReasonCodesAsync(context: IContext):AsyncResult {\n const request = createGetReturnOrderReasonCodesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetSalesTaxGroupsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetSalesTaxGroups', false, \n 'SalesTaxGroupClass'\n , 'true', { bypassCache: 'none', returnEntity: 'SalesTaxGroup'}, { });\n }\n\n export function getSalesTaxGroupsAsync(context: IContext):AsyncResult {\n const request = createGetSalesTaxGroupsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetTenderTypesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetTenderTypes', false, \n 'TenderTypeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'TenderType'}, { });\n }\n\n export function getTenderTypesAsync(context: IContext):AsyncResult {\n const request = createGetTenderTypesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetUnitsOfMeasureInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetUnitsOfMeasure', false, \n 'UnitOfMeasureClass'\n , 'true', { bypassCache: 'none', returnEntity: 'UnitOfMeasure'}, { });\n }\n\n export function getUnitsOfMeasureAsync(context: IContext):AsyncResult {\n const request = createGetUnitsOfMeasureInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetDiscountCodesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetDiscountCodes', false, \n 'DiscountCodeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'DiscountCode'}, { });\n }\n\n export function getDiscountCodesAsync(context: IContext):AsyncResult {\n const request = createGetDiscountCodesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCurrenciesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCurrencies', false, \n 'CurrencyClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Currency'}, { });\n }\n\n export function getCurrenciesAsync(context: IContext):AsyncResult {\n const request = createGetCurrenciesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetCurrenciesAmountInput(queryResultSettings: IQueryResultSettings, currencyCode: string | null, amount: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCurrenciesAmount', false, \n 'CurrencyAmountClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CurrencyAmount'}, {currencyCode: currencyCode, amount: amount });\n }\n\n export function getCurrenciesAmountAsync(context: IContext, currencyCode: string | null, amount: number):AsyncResult {\n const request = createGetCurrenciesAmountInput(context.queryResultSettings, currencyCode, amount);\n return executeAction(request, context);\n }\n \n export function createGetCommissionSalesGroupsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetCommissionSalesGroups', false, \n 'CommissionSalesGroupClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CommissionSalesGroup'}, { });\n }\n\n export function getCommissionSalesGroupsAsync(context: IContext):AsyncResult {\n const request = createGetCommissionSalesGroupsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createSearchCommissionSalesGroupsInput(queryResultSettings: IQueryResultSettings, searchText?: string | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchCommissionSalesGroups', false, \n 'CommissionSalesGroupClass'\n , 'true', { bypassCache: 'none', returnEntity: 'CommissionSalesGroup'}, {searchText: searchText });\n }\n\n export function searchCommissionSalesGroupsAsync(context: IContext, searchText?: string | null):AsyncResult {\n const request = createSearchCommissionSalesGroupsInput(context.queryResultSettings, searchText);\n return executeAction(request, context);\n }\n \n export function createGetPaymentMerchantInformationInput(hardwareProfileId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetPaymentMerchantInformation', false, \n 'PaymentMerchantInformationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'PaymentMerchantInformation'}, {hardwareProfileId: hardwareProfileId });\n }\n\n export function getPaymentMerchantInformationAsync(context: IContext, hardwareProfileId?: string | null):AsyncResult {\n const request = createGetPaymentMerchantInformationInput(hardwareProfileId);\n return executeAction(request, context);\n }\n \n export function createGetPaymentPropertiesIfModifiedInput(hardwareProfileId?: string | null, merchantInformationHash?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetPaymentPropertiesIfModified', false, \n 'PaymentMerchantInformationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'PaymentMerchantInformation'}, {hardwareProfileId: hardwareProfileId, merchantInformationHash: merchantInformationHash });\n }\n\n export function getPaymentPropertiesIfModifiedAsync(context: IContext, hardwareProfileId?: string | null, merchantInformationHash?: string | null):AsyncResult {\n const request = createGetPaymentPropertiesIfModifiedInput(hardwareProfileId, merchantInformationHash);\n return executeAction(request, context);\n }\n \n export function createGetOnlineChannelPublishStatusInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetOnlineChannelPublishStatus', false, '', 'false', { bypassCache: 'none', returnEntity: ''}, { });\n }\n\n export function getOnlineChannelPublishStatusAsync(context: IContext):AsyncResult {\n const request = createGetOnlineChannelPublishStatusInput();\n return executeAction(request, context);\n }\n \n export function createSetOnlineChannelPublishStatusInput(publishingStatus: number, statusMessage?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('SetOnlineChannelPublishStatus', true, '', '', { bypassCache: 'get', returnEntity: ''}, {publishingStatus: publishingStatus, statusMessage: statusMessage });\n }\n\n export function setOnlineChannelPublishStatusAsync(context: IContext, publishingStatus: number, statusMessage?: string | null):AsyncResult {\n const request = createSetOnlineChannelPublishStatusInput(publishingStatus, statusMessage);\n return executeAction(request, context);\n }\n \n export function createGetInventoryConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetInventoryConfiguration', false, \n 'ChannelInventoryConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ChannelInventoryConfiguration'}, { });\n }\n\n export function getInventoryConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetInventoryConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createGetPurchaseConfigurationInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetPurchaseConfiguration', false, \n 'ChannelPurchaseConfigurationClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ChannelPurchaseConfiguration'}, { });\n }\n\n export function getPurchaseConfigurationAsync(context: IContext):AsyncResult {\n const request = createGetPurchaseConfigurationInput();\n return executeAction(request, context);\n }\n \n export function createSearchJournalNamesInput(queryResultSettings: IQueryResultSettings, searchCriteria?: InventoryJournalNameSearchCriteria | null): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('SearchJournalNames', true, \n 'InventoryJournalNameClass'\n , 'true', { bypassCache: 'none', returnEntity: 'InventoryJournalName'}, {searchCriteria: searchCriteria });\n }\n\n export function searchJournalNamesAsync(context: IContext, searchCriteria?: InventoryJournalNameSearchCriteria | null):AsyncResult {\n const request = createSearchJournalNamesInput(context.queryResultSettings, searchCriteria);\n return executeAction(request, context);\n }\n \n export function createGetAvailableDevicesInput(queryResultSettings: IQueryResultSettings, deviceType: number): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAvailableDevices', false, \n 'DeviceClass'\n , 'true', { bypassCache: 'none', returnEntity: 'Device'}, {deviceType: deviceType });\n }\n\n export function getAvailableDevicesAsync(context: IContext, deviceType: number):AsyncResult {\n const request = createGetAvailableDevicesInput(context.queryResultSettings, deviceType);\n return executeAction(request, context);\n }\n \n export function createGetUserDefinedSecretStringInput(secretName?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetUserDefinedSecretString', false, '', 'false', { bypassCache: 'none', returnEntity: ''}, {secretName: secretName });\n }\n\n export function getUserDefinedSecretStringAsync(context: IContext, secretName?: string | null):AsyncResult {\n const request = createGetUserDefinedSecretStringInput(secretName);\n return executeAction(request, context);\n }\n \n export function createGetUserDefinedSecretCertificateInput(secretName?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetUserDefinedSecretCertificate', false, \n 'UserDefinedSecretCertificateResultClass'\n , 'false', { bypassCache: 'none', returnEntity: 'UserDefinedSecretCertificateResult'}, {secretName: secretName });\n }\n\n export function getUserDefinedSecretCertificateAsync(context: IContext, secretName?: string | null):AsyncResult {\n const request = createGetUserDefinedSecretCertificateInput(secretName);\n return executeAction(request, context);\n }\n \n export function createGetImageBlobInput(imageId: number): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetImageBlob', false, \n 'MediaBlobClass'\n , 'false', { bypassCache: 'none', returnEntity: 'MediaBlob'}, {imageId: imageId });\n }\n\n export function getImageBlobAsync(context: IContext, imageId: number):AsyncResult {\n const request = createGetImageBlobInput(imageId);\n return executeAction(request, context);\n }\n \n export function createGetExtensibleEnumerationsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetExtensibleEnumerations', false, \n 'ExtensibleEnumerationContainerClass'\n , 'true', { bypassCache: 'none', returnEntity: 'ExtensibleEnumerationContainer'}, { });\n }\n\n export function getExtensibleEnumerationsAsync(context: IContext):AsyncResult {\n const request = createGetExtensibleEnumerationsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetAddressPurposesInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetAddressPurposes', false, \n 'AddressPurposeClass'\n , 'true', { bypassCache: 'none', returnEntity: 'AddressPurpose'}, { });\n }\n\n export function getAddressPurposesAsync(context: IContext):AsyncResult {\n const request = createGetAddressPurposesInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createGetReturnPolicyInput(): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('GetReturnPolicy', false, \n 'ReturnPolicyClass'\n , 'false', { bypassCache: 'none', returnEntity: 'ReturnPolicy'}, { });\n }\n\n export function getReturnPolicyAsync(context: IContext):AsyncResult {\n const request = createGetReturnPolicyInput();\n return executeAction(request, context);\n }\n \n export function createGetEmailReceiptSettingsInput(queryResultSettings: IQueryResultSettings): IDataServiceRequest {\n const query = storeQuery().resultSettings(queryResultSettings);\n return query.createDataServiceRequestForOperation('GetEmailReceiptSettings', false, \n 'EmailReceiptSettingsClass'\n , 'true', { bypassCache: 'none', returnEntity: 'EmailReceiptSettings'}, { });\n }\n\n export function getEmailReceiptSettingsAsync(context: IContext):AsyncResult {\n const request = createGetEmailReceiptSettingsInput(context.queryResultSettings);\n return executeAction(request, context);\n }\n \n export function createCheckFiscalIntegrationComplianceInput(hardwareProfileId?: string | null): IDataServiceRequest {\n const query = storeQuery();\n return query.createDataServiceRequestForOperation('CheckFiscalIntegrationCompliance', false, \n 'FiscalIntegrationComplianceResultClass'\n , 'false', { bypassCache: 'get', returnEntity: 'FiscalIntegrationComplianceResult'}, {hardwareProfileId: hardwareProfileId });\n }\n\n export function checkFiscalIntegrationComplianceAsync(context: IContext, hardwareProfileId?: string | null):AsyncResult {\n const request = createCheckFiscalIntegrationComplianceInput(hardwareProfileId);\n return executeAction(request, context);\n }\n \n ","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DataServiceRequest } from './DataServiceRequest';\nimport { IDataServiceOptions, IDataServiceQueryInternal, IDataServiceRequest, IQueryResultSettings } from './Interfaces';\n\n/**\n * Represents a data service query object.\n */\nexport class DataServiceQuery {\n private _query: IDataServiceQueryInternal;\n\n /**\n * Creates a new instance of DataServiceQuery.\n * @param {IDataServiceRequestFactory} dataServiceRequestFactory The data service request factory.\n * @param {string} [entitySet] The entity set name.\n * @param {string} [entityType] The entity type name.\n * @param {any} [returntype] The return type of query.\n * @param {any} [key] Entity key.\n */\n constructor(entitySet?: string, entityType?: string, returnType?: any, key?: any) {\n this._query = {\n entitySet,\n entityType,\n key,\n returnType,\n tokens: {},\n // by default all action will skip reading from cache before making execute call\n options: { bypassCache: 'get', returnEntity: entityType },\n resultSettings: { Paging: {}, Sorting: {} }\n };\n }\n\n /**\n * Query result settings.\n *\n * @param {string} value The value of query result settings.\n */\n public resultSettings(value: IQueryResultSettings): DataServiceQuery {\n if (!value) {\n value = {};\n }\n\n this._query.resultSettings = {};\n this._query.resultSettings.Paging = value.Paging || {};\n this._query.resultSettings.Sorting = value.Sorting || {};\n this._query.resultSettings.count = value.count;\n\n return this;\n }\n\n /**\n * Filter Clause.\n * @param {string} value The filter value.\n */\n public filter(value: string): DataServiceQuery {\n this._query.filterSettings = value;\n\n return this;\n }\n\n /**\n * Top clause\n * @param {string} value The number of top rows to select.\n */\n public top(value: number): DataServiceQuery {\n this._query.resultSettings.Paging.Top = value;\n\n return this;\n }\n\n /**\n * Skip clause\n * @param {string} value The number of rows to skip\n */\n public skip(value: number): DataServiceQuery {\n this._query.resultSettings.Paging.Skip = value;\n\n return this;\n }\n\n /**\n * Expand clause\n * @param {string} propertyName The property name to expand.\n */\n public expand(propertyName: string): DataServiceQuery {\n if (this._query.expands == null) {\n this._query.expands = [];\n }\n\n this._query.expands.push(propertyName);\n return this;\n }\n\n /**\n * Request number of total row available.\n */\n public inlineCount(): DataServiceQuery {\n this._query.inlineCount = true;\n\n return this;\n }\n\n /**\n * Order by clause.\n * @param {string} value The field name for ordering.\n */\n public orderBy(value: string): DataServiceQuery {\n if (!this._query.resultSettings.Sorting.Columns) {\n this._query.resultSettings.Sorting.Columns = [];\n }\n\n this._query.resultSettings.Sorting.Columns.push({ ColumnName: value });\n\n return this;\n }\n\n /**\n * Transforms the request into a create request.\n * @param {string} object The object.\n * @return {IDataServiceRequest} The data service request.\n */\n public create(object: any): IDataServiceRequest {\n this._query.action = 'Create';\n this._query.data = this._createODataParameters(object);\n this._query.options.bypassCache = 'none';\n return this._createRequest();\n }\n\n /**\n * Transforms the request into a read request.\n * @return {IDataServiceRequest} The data service request.\n */\n public read(): IDataServiceRequest {\n if (this._query.key || (this._query.entitySet === 'Customers' && this._query.key !== null && this._query.key !== undefined)) {\n this._query.action = 'Read';\n } else {\n this._query.action = 'ReadAll';\n this._query.isReturnTypeACollection = true;\n }\n\n this._query.options.bypassCache = 'none';\n return this._createRequest();\n }\n\n /**\n * Transforms the request into an update request.\n * @param {string} object The object.\n * @return {IDataServiceRequest} The data service request.\n */\n public update(object: any): IDataServiceRequest {\n this._query.action = 'Update';\n this._query.data = this._createODataParameters(object);\n\n return this._createRequest();\n }\n\n /**\n * Transforms the request into a delete request.\n * @return {DataServiceRequest} The data service request.\n */\n public delete(): IDataServiceRequest {\n this._query.action = 'Delete';\n\n return this._createRequest();\n }\n\n public setGetAllRecords(): void {\n this._query.resultSettings.Paging.Top = -1;\n }\n\n public isGetAllRecords(): boolean {\n return this._query.resultSettings.Paging.Top === -1;\n }\n\n public createDataServiceRequestForOperation(\n operationName: string,\n isAction: boolean,\n returnType: any,\n isReturnTypeACollection: string,\n options: IDataServiceOptions,\n data?: unknown\n ): IDataServiceRequest {\n this._query.returnType = returnType;\n this._query.isAction = isAction;\n this._query.isReturnTypeACollection = isReturnTypeACollection === 'true';\n this._query.action = operationName;\n this._query.data = this._createODataParameters(data);\n this._query.options = { ...{ bypassCache: 'get', returnEntity: 'CUSTOM-ENTITY' }, ...options };\n\n if (this._query.isReturnTypeACollection && !this._query.resultSettings.Paging.Top) {\n // for paginated requests, where we didn't specify page size, set to fetch all records\n this.setGetAllRecords();\n }\n\n return this._createRequest();\n }\n\n private _createODataParameters(data: unknown) {\n return data ? { parameters: data } : undefined;\n }\n\n private _createRequest(): IDataServiceRequest {\n return new DataServiceRequest(this._query);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-var-requires */\nimport { toJS } from 'mobx';\n\nimport { ApiVersion, EntityIdentifier, SortColumn } from './Entities/CommerceTypes.g';\n\nimport {\n BypassCache,\n CacheType,\n ICallerContext,\n IDataServiceQueryInternal,\n IDataServiceRequest,\n IDictionary,\n IPartialCookieContext\n} from './Interfaces';\nimport {\n modelManagersRetailServerRequestError,\n modelManagersRetailServerRequestFinished,\n modelManagersRetailServerRequestStarted,\n Tracer,\n Utils\n} from './logging';\n\nimport { ProxyError } from './exceptions';\nimport { ErrorParser } from './exceptions/ErrorParser';\nimport {\n convertToString,\n EMPTY,\n format,\n hasElements,\n isEmpty,\n isNullOrWhitespace,\n isObjectNotEmptyOrNull\n} from './extensions/StringExtensions';\n\nimport { IODataRequest, ODataHttpRequest } from './externals/DataJS.New';\nexport const ODATA_HAS_NEXT_PAGE_PROPERTY = '@odata.nextLink';\nexport const GET: string = 'GET';\nexport const POST: string = 'POST';\nexport const PATCH: string = 'PATCH';\nexport const DELETE: string = 'DELETE';\nexport const GET_FROM_RETURNIDENTIFIER: string = '___GET__FROM__RETURNIDENTIIER___';\nexport const ODATA_TOTAL_COUNT_PROPERTY = '@odata.count';\n\nlet serverWorkerNotUpdated = false;\nconst ApiTimeoutInMilliSecond = 10000;\nconst OPERATINGUNITNUMBER_HEADERNAME = 'OUN';\nconst AUTHORIZATION_HEADERNAME = 'Authorization';\nconst ACCEPT_LANGUAGE = 'Accept-Language';\nconst REQUEST_ID = 'RequestId';\nconst APPSESSION_ID = 'AppSessionId';\nconst USERSESSION_ID = 'UserSessionId';\nconst DEFAULT_HEADER: { [headerName: string]: string } = {\n Prefer: 'return=representation'\n};\nconst OBO_REQUEST = 'isOBORequest';\nconst GET_ACCOUNT_SELECTION_COOKIE = 'getAccountSelectionCookie';\nconst CUSTOMER_ACCOUNT_NUMBER = 'CAN';\n\nconst fetchCommerceModels = async () => {\n return import('./Entities/CommerceModels.g');\n};\n\nconst isServiceWorkerSupportedOnClient = () => {\n return typeof navigator !== 'undefined' && 'serviceWorker' in navigator;\n}\n\nconst shouldSkipSerializationFromSW = (initialData: any, resultType: any) => {\n if (process.env.NODE_ENV === 'test' || process.env.DEPLOYMENT_ENV !== 'WEBAPP') {\n return true;\n }\n\n if (!initialData || !initialData.requestContext || !initialData.requestContext.features.enable_service_worker) {\n console.log('service worker turned off, skipping sw serialization');\n return true;\n }\n\n if (typeof resultType !== 'string') {\n return true;\n }\n\n // service worker could be old or pending update version\n if (serverWorkerNotUpdated) {\n return true;\n }\n\n if (isServiceWorkerSupportedOnClient()) {\n return initialData.requestContext.features.disableRetailProxySW || initialData.requestContext.query['skip-rp-sw'];\n }\n\n return false;\n}\n\nconst initServerWorker = async () => {\n if (process.env.CURRENT_ENVIRONMENT !== 'node') {\n if (isServiceWorkerSupportedOnClient()) {\n const serviceWorker = await navigator.serviceWorker.ready;\n return serviceWorker;\n }\n }\n}\n\n/***\n * Parses the odata result returned from server.\n *\n * @param {any} data The result returned from server.\n * @param {any} resultType The entity type to parse the result as.\n */\nexport const parseOdataResult = async (data: any, resultType: any): Promise => {\n let serviceWorker;\n let Models;\n const initialData = typeof window !== 'undefined' && (window as any).___initialData___;\n const skipSerializationFromSW = shouldSkipSerializationFromSW(initialData, resultType);\n\n if (!skipSerializationFromSW) {\n serviceWorker = await initServerWorker();\n } else {\n // If service workder is skipped, load the commerce models object dynamically\n Models = await fetchCommerceModels();\n }\n\n if (!data) {\n return data;\n }\n\n if (!data.value) {\n if (typeof resultType === 'string') {\n if (process.env.CURRENT_ENVIRONMENT === 'node') {\n Models = require('./Entities/CommerceModels.g');\n return resultType ? new Models[resultType](data) : data;\n } else if (skipSerializationFromSW) {\n return resultType && Models[resultType] ? new Models[resultType](data) : data;\n } else {\n if (!resultType) {\n return data;\n }\n\n return getSerializedResponseFromServiceWorker(serviceWorker, resultType, data);\n }\n }\n\n return resultType ? new resultType(data) : data;\n }\n\n let resultSet = data.value;\n\n if (resultType) {\n if (Object.prototype.toString.call(resultSet) === '[object Array]') {\n if (typeof resultType === 'string') {\n // Include commercemodels in the bundle in the context of node only\n if (process.env.CURRENT_ENVIRONMENT === 'node') {\n Models = require('./Entities/CommerceModels.g');\n for (let i = 0; i < resultSet.length; i++) {\n resultSet[i] = new Models[resultType](resultSet[i]);\n }\n } else if (skipSerializationFromSW) {\n for (let i = 0; i < resultSet.length; i++) {\n resultSet[i] = new Models[resultType](resultSet[i]);\n }\n } else {\n resultSet = await getSerializedResponseFromServiceWorker(serviceWorker, resultType, resultSet);\n }\n } else {\n for (let i = 0; i < resultSet.length; i++) {\n resultSet[i] = new resultType(resultSet[i]);\n }\n }\n }\n }\n\n // hasNextPage only apply to array which is typeof 'object'\n typeof resultSet === 'object' ? (resultSet.hasNextPage = !(data[ODATA_HAS_NEXT_PAGE_PROPERTY] === undefined)) : null;\n return resultSet;\n}\n\n/**\n * @param serviceWorker serviceWorker instance\n * @param resultType CommerceModels type\n * @param data retail serve response to be serialized\n * @returns serialized CommerceModels object\n */\nconst getSerializedResponseFromServiceWorker = (serviceWorker: any, resultType: any, data: any | any[]) => {\n // Import commerce modesl dynamically and serialize, in case if the serialization response is not received\n // from service worker in time\n let timerId;\n const dynamicImportPromise = new Promise((resolve, reject) => {\n timerId = setTimeout(async () => {\n const Models = await fetchCommerceModels();\n serverWorkerNotUpdated = true;\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = resultType && Models[resultType] ? new Models[resultType](data[i]) : data[i];\n }\n\n resolve(data);\n } else {\n resolve(resultType && Models[resultType] ? new Models[resultType](data) : data);\n }\n }, 2000);\n });\n\n const serializePromise = new Promise((resolve, reject) => {\n const messageChannel = new MessageChannel();\n\n messageChannel.port1.onmessage = (e) => {\n resolve(e.data.serializedData);\n clearTimeout(timerId);\n };\n\n serviceWorker.active.postMessage({\n type: 'SERIALIZE_DATA',\n resultType,\n payload: data\n }, [messageChannel.port2]);\n });\n\n return Promise.race([serializePromise, dynamicImportPromise]);\n};\n\n/**\n * Represents a data service request object.\n */\nexport class DataServiceRequest implements IDataServiceRequest {\n private get batchRequestUri(): string {\n return this._callerContext.requestContext.apiSettings.baseUrl + '/$batch';\n }\n\n /**\n * Gets Locale for the current data service factory instance.\n */\n public get locale(): string {\n return this._callerContext.requestContext.locale;\n }\n\n /**\n * Sets Locale for the current data service factory instance.\n */\n public set locale(locale: string) {\n this._callerContext.requestContext.locale = locale;\n }\n\n /**\n * get cacheKeyFromInput.\n */\n public get cacheKeyFromInput(): string {\n return this._cacheKeyFromInput;\n }\n\n /**\n * get cacheKeyIdentifierFromReturnType.\n */\n public get cacheKeyIdentifierFromReturnType(): string {\n return this._cacheKeyIdentifierFromReturnType;\n }\n\n /**\n * get cacheObjectType.\n */\n public get cacheObjectType(): string {\n return this._cacheObjectType;\n }\n\n /**\n * get cacheKeyFromReturnType.\n */\n public get cacheKeyFromReturnType(): string[] {\n return this._cacheKeyFromReturnType;\n }\n\n /**\n * get totalCount.\n */\n public get totalCount(): number {\n return this._totalCount;\n }\n\n /**\n * get query.\n */\n public get query(): IDataServiceQueryInternal {\n return this._query;\n }\n\n /**\n * Gets query parameters for data service request.\n */\n public queryParams(): T {\n return this._query.data.parameters as T;\n }\n\n /**\n * Gets Odata properties\n */\n public get otherOdataProperties(): IDictionary {\n return this._otherOdata;\n }\n\n private _actionId: string;\n private _cacheObjectType: string;\n private _cacheKeyFromInput: string;\n private _cacheKeyFromReturnType: string[] = [];\n private _cacheKeyIdentifierFromReturnType: string;\n\n private _query: IDataServiceQueryInternal;\n private _callerContext: ICallerContext;\n private _requestUri: string;\n private _method: string;\n private _id: number;\n private _hasOperationName: boolean;\n private _totalCount: number;\n private _otherOdata: IDictionary;\n\n private static buildBatchRequest(batchRequestUri: string, requests: DataServiceRequest[]): IODataRequest {\n let requestId = 1;\n\n // Creates an empty batch request.\n const odataBatchRequest: IODataRequest = {\n requestUri: batchRequestUri,\n method: POST,\n data: { __batchRequests: [] }\n };\n\n const batchRequests = odataBatchRequest.data.__batchRequests;\n let changeRequests: IODataRequest[];\n\n requests.forEach(request => {\n request._id = requestId++;\n\n const odataRequest: IODataRequest = {\n requestUri: request._requestUri,\n method: request._method,\n data: DataServiceRequest.toJson(request._query.data),\n headers: { 'Content-ID': request.id(), Prefer: 'return=representation' }\n };\n\n if (request._method === GET) {\n batchRequests.push(odataRequest);\n } else {\n if (!changeRequests) {\n changeRequests = [];\n batchRequests.push({ __changeRequests: changeRequests });\n }\n changeRequests.push(odataRequest);\n }\n });\n\n return odataBatchRequest;\n }\n\n /**\n * Parse the batch responses.\n * @param {any[]} batchResponses The server responses.\n * @param {any[]} requests The request objects.\n * @param {any[]} responses The responses passed down to the success callback.\n */\n private static parseBatchResponses = async (batchResponses: any[], requests: any[], responses: any[], callerContext?: ICallerContext): Promise => {\n let errors: ProxyError[] = new Array();\n\n batchResponses.map(async response => {\n if (response.__changeResponses) {\n errors = errors.concat(await DataServiceRequest.parseBatchResponses(response.__changeResponses, requests, responses, callerContext));\n } else {\n if (!response.message) {\n const requestId = parseInt(response.headers['Content-ID'], 10);\n\n responses[requestId] = await parseOdataResult(response.data, requests[requestId - 1]._query.returnType);\n } else {\n errors = errors.concat(ErrorParser.parseErrorMessage(response, callerContext));\n }\n }\n });\n\n return errors;\n }\n\n /**\n * TODO - check if below function can be replaced with JSON.stringify.\n * Helper function to convert data into a stringified JSON object.\n * @param {any} parent The container of the element.\n * @param {any} data The data to be converted to a stringified JSON object.\n * @param {boolean} [modifyDataInPlace] Whether the object passed should be modified in place. If not, a clone is created instead.\n */\n private static toJson(data: any, parent?: any, modifyDataInPlace?: boolean): string {\n let clone = data;\n\n if (data === null) {\n return null;\n } else if (typeof data !== 'object') {\n // if data type is primitive type, no need to process further\n // as calling jquery extend or calling foreach prop on string type\n // will transform string to array of chars which will be incorrect result.\n return data;\n }\n\n if (data && data.parameters) {\n data = data.parameters;\n parent = null;\n } else {\n parent = data;\n }\n\n // clones the data object instead of changing it, if no modifications in place\n if (!modifyDataInPlace) {\n clone = { ...data };\n }\n\n for (const prop in clone) {\n if (clone.hasOwnProperty(prop)) {\n const property = clone[prop];\n\n // only non-undefined properties are added to the object\n if (typeof property !== 'undefined') {\n let value;\n if (property === null) {\n value = null;\n } else if (typeof property === 'object') {\n if (property instanceof Array) {\n value = DataServiceRequest.arrayToJson(property, parent, modifyDataInPlace);\n } else if (property instanceof Date) {\n value = DataServiceRequest.toDateTimeOffset(property);\n } else {\n // recursively stringifies objects\n value = DataServiceRequest.toJson(property, clone, modifyDataInPlace);\n }\n } else {\n value = property;\n }\n\n clone[prop] = value;\n }\n }\n }\n\n return clone;\n }\n\n /**\n * Helper function to convert array into a stringified JSON object following OData specifications.\n * @param {Array} array The data to be converted to a stringified JSON object.\n * @param {any} parent The container of the array.\n * @param {boolean} [modifyDataInPlace] Whether the object passed should be modified in place. If not, a clone is created instead.\n */\n private static arrayToJson(array: any[], parent: any, modifyDataInPlace?: boolean): any {\n const data = [];\n for (let i = 0; i < array.length; i++) {\n data[i] = DataServiceRequest.toJson(array[i], array, modifyDataInPlace);\n }\n\n // if array is not a top level data on an action\n return data;\n }\n\n /**\n * Add offset fields to Date object for serialization purposes.\n * @param {Date} dateTime The date.\n * @return {Date} The date with __edmType and __offset fields injected.\n */\n private static toDateTimeOffset(dateTime: Date): Date {\n if (!(dateTime as any).__edmType || !(dateTime as any).__offset) {\n const pad: (val: number) => string = (val: number) => (val < 10 ? '0' + val : val.toString());\n const sign: string = dateTime.getTimezoneOffset() > 0 ? '-' : '+';\n const offset: number = Math.abs(dateTime.getTimezoneOffset());\n const hours: string = pad(Math.floor(offset / 60));\n const minutes: string = pad(offset % 60);\n\n (dateTime as any).__edmType = 'Edm.DateTimeOffset';\n (dateTime as any).__offset = sign + hours + ':' + minutes;\n }\n\n return dateTime;\n }\n\n /**\n * Formats entity key(s) in request Uri.\n * @param {any} key The key dictionary.\n * @return {string} The formated string of the key(s).\n */\n private static formatKey(key: any): string {\n let result: string = EMPTY;\n\n if (key) {\n const formattedKey = [];\n let propertyName: string = EMPTY;\n\n for (const property in key) {\n if (key.hasOwnProperty(property)) {\n propertyName = property;\n if (typeof key[propertyName] === 'string') {\n formattedKey.push(propertyName + `='${key[propertyName]}'`);\n } else {\n formattedKey.push(propertyName + '=' + key[propertyName]);\n }\n }\n }\n\n if (formattedKey.length === 1) {\n if (typeof key[propertyName] === 'string') {\n result = `'${key[propertyName]}'`;\n } else {\n result = key[propertyName];\n }\n } else {\n result = formattedKey.join();\n }\n }\n\n return result;\n }\n\n /**\n * Formats function parameters in request Uri.\n * @param {any} parameters The parameter dictionary.\n * @return {string} The formated and encoded string of the parameters.\n */\n private static formatFunctionParameter(parameters: any): string {\n let result: string = EMPTY;\n\n if (parameters) {\n for (const parameter in parameters) {\n if (parameters.hasOwnProperty(parameter)) {\n const paramValue = parameters[parameter];\n\n if (!isEmpty(result)) {\n result += ',';\n }\n\n if (paramValue === undefined) {\n // handles undefined value\n continue;\n } else if (typeof paramValue === 'string') {\n // handles string type value\n result += parameter + `='${encodeURIComponent(paramValue)}'`;\n } else {\n // handles null and other types value\n result += parameter + '=' + encodeURIComponent(paramValue);\n }\n }\n }\n }\n\n return result;\n }\n\n // TODO - use node url api for url parsing\n private static addParameter(requestUri: string, key: string, value: any): string {\n if (value) {\n let parameterSeparator = '?';\n\n if (requestUri.indexOf(parameterSeparator) > 0) {\n parameterSeparator = '&';\n }\n\n return requestUri + parameterSeparator + key + '=' + value;\n } else {\n return requestUri;\n }\n }\n\n private static getActionIdFromInput(query: IDataServiceQueryInternal) {\n return `@msdyn365-commerce/retail-proxy/${query.entitySet}/${query.action}`;\n }\n\n private static getCacheObjectValueFromReturnType(returnType: any): string {\n // return type can be actual class itself like CategoryClass instead of string 'CategoryClass'\n const cacheObjectTypeValue = typeof returnType === 'function' ? returnType.name : returnType;\n return cacheObjectTypeValue.replace('Class', '');\n }\n\n private static buildCacheFromInput(query: IDataServiceQueryInternal, cacheKeyIdentifierFromReturnType: string): string {\n // TODO if return type have distinct primary key (and not a collection), cache key for action will be computed primary key\n\n let cacheKey = {};\n // if query have key like { RecordId: 56873008 }\n query.key && (cacheKey = { ...query.key });\n // parameters are input to function like query.createDataServiceRequestForOperation('GetCategories', true, CategoryClass, 'true', { channelId })\n // => {channelId} is parameters.\n query.data && query.data.parameters && (cacheKey = { ...cacheKey, ...(query.data.parameters as {}) });\n query.resultSettings &&\n (cacheKey = {\n ...cacheKey,\n ...query.resultSettings.Paging,\n ...query.resultSettings.Sorting\n });\n query.filterSettings && (cacheKey['filter'] = query.filterSettings);\n isObjectNotEmptyOrNull(query.tokens) && (cacheKey['token'] = query.tokens);\n // TODO - add OUN in cache key\n const cacheKeyValue =\n convertToString(cacheKey) ||\n (cacheKeyIdentifierFromReturnType ? GET_FROM_RETURNIDENTIFIER : `${query.entitySet}|${query.entityType}|NOKEY`);\n Tracer.Information(`{CacheKey - CacheValue} : ${cacheKey} - ${cacheKeyValue}`);\n return cacheKeyValue;\n }\n\n private static getDataCacheType(query: IDataServiceQueryInternal): CacheType {\n // cache all result in request cacheisObjectNotEmptyOrNull\n //\n // Follow following rule for app cache\n // -------------------------------------------------------------------------------------\n // scenario app cache\n // -------------------------------------------------------------------------------------\n // 1. if returnType is - true\n // a. Category\n // b. Product\n // c. OrgUnit\n // d. ProductCatalog\n // e. Warehouse\n if (query.entitySet === 'Carts' && query.action === 'GetMaxLoyaltyPointsToRedeemForTransactionBalance') {\n return 'none';\n }\n\n return query.options.bypassCache === 'get' || query.options.bypassCache === 'getAndPut' ? 'none' : 'request';\n }\n\n constructor(query: IDataServiceQueryInternal) {\n Tracer.Information('DataServiceRequest.constructor()');\n this._query = toJS(query, { recurseEverything: true });\n this._hasOperationName = false;\n\n switch (query.action) {\n case 'Read':\n case 'ReadAll':\n this._method = GET;\n break;\n\n case 'Create':\n this._method = POST;\n break;\n\n case 'Update':\n this._method = PATCH;\n break;\n\n case 'Delete':\n this._method = DELETE;\n break;\n\n default:\n if (query.isAction) {\n // Sets the HTTP method to be POST for actions\n this._method = POST;\n } else {\n // Sets the HTTP method to be GET for functions\n this._method = GET;\n }\n\n this._hasOperationName = true;\n }\n\n this._actionId = DataServiceRequest.getActionIdFromInput(query);\n\n this._cacheObjectType = DataServiceRequest.getCacheObjectValueFromReturnType(query.options.returnEntity);\n // TODO - handle Key when it is array like SHIFT case\n const entityIdentifier = this._cacheObjectType === 'SimpleProduct' ? 'Product' : this._cacheObjectType;\n this._cacheKeyIdentifierFromReturnType = EntityIdentifier[entityIdentifier] && EntityIdentifier[entityIdentifier].Key;\n\n this._cacheKeyFromInput = DataServiceRequest.buildCacheFromInput(this._query, this._cacheKeyIdentifierFromReturnType);\n }\n\n /**\n * Gets the Request Identifier.\n * Auto-generated unique identifier if executed in batch. Used to fetch the response from batch result array.\n */\n public id(): number {\n return this._id;\n }\n\n public getActionId = () => this._actionId;\n\n public getCacheObjectType = () => this._cacheObjectType;\n\n public getCacheKey = () => this._cacheKeyFromInput;\n\n public dataCacheType = () => DataServiceRequest.getDataCacheType(this._query);\n\n public shouldCacheOutput = () => true;\n\n public overrideCacheType = (bypassCache: BypassCache) => {\n bypassCache && (this._query.options.bypassCache = bypassCache);\n };\n\n /**\n * Executes the request.\n * @param {any} callerContext The caller context.\n * @return {IAsyncResult} The async result.\n */\n public execute(callerContext: ICallerContext): Promise {\n if (\n !callerContext.requestContext ||\n !callerContext.requestContext.apiSettings ||\n !callerContext.requestContext.apiSettings.oun ||\n !callerContext.requestContext.apiSettings.baseUrl\n ) {\n throw new Error(`CallerContext missing required request parameters - [${JSON.stringify(callerContext.requestContext)}]`);\n }\n\n if (!callerContext.requestContext.locale) {\n throw new Error(`CallerContext missing locale - [${JSON.stringify(callerContext.requestContext)}]`);\n }\n\n this._callerContext = callerContext;\n this._requestUri = this.getRequestUri();\n let result: Promise;\n const headers: { [headerName: string]: string } = this.buildQueryHeader();\n\n if (\n !this._query.isReturnTypeACollection ||\n (this._query.resultSettings &&\n this._query.resultSettings.Paging &&\n this._query.resultSettings.Paging.Top &&\n this._query.resultSettings.Paging.Top >= 0)\n ) {\n result = this.loadPage(headers);\n } else {\n result = this.getAllPages(headers, 0);\n }\n\n return result;\n }\n\n // Need to build batch handler ----------- PENDING\n /**\n * Executes the batch requests.\n * @param {DataServiceRequest[]} requests The collection of requests to execute.\n * @param {any} [callerContext] The caller context.\n * @return {IAsyncResult} The async result. Responses at index I correlates to request with identifier I.\n */\n public executeBatch(requests: DataServiceRequest[], callerContext?: ICallerContext): Promise {\n if (\n !callerContext.requestContext ||\n !callerContext.requestContext.apiSettings ||\n !callerContext.requestContext.apiSettings.oun ||\n !callerContext.requestContext.apiSettings.baseUrl\n ) {\n throw new Error(`CallerContext missing required request parameters - [${JSON.stringify(callerContext.requestContext)}]`);\n }\n\n if (!callerContext.requestContext.locale) {\n throw new Error(`CallerContext missing locale - [${JSON.stringify(callerContext.requestContext)}]`);\n }\n\n this._callerContext = callerContext;\n this._requestUri = this.getRequestUri();\n\n return new Promise((resolve, reject) => {\n ODataHttpRequest(\n DataServiceRequest.buildBatchRequest(this.batchRequestUri, requests),\n (data: any) => {\n const responses: any[] = new Array();\n DataServiceRequest.parseBatchResponses(data.__batchResponses, requests, responses, this._callerContext).then((errors: ProxyError[]) => {\n if (errors.length === 0) {\n Tracer.Information(this.batchRequestUri + ' success');\n resolve(responses);\n } else {\n Tracer.Errors(errors, this.batchRequestUri + ' failed.');\n reject(errors);\n }\n })\n },\n (error: any) => {\n Tracer.Error(this.batchRequestUri + ' failed');\n reject(ErrorParser.parseErrorMessage(error, this._callerContext));\n }\n );\n });\n }\n\n /**\n * Gets the Request Uri.\n */\n private getRequestUri(): string {\n let requestUri: string = this._callerContext.requestContext.apiSettings.baseUrl + 'Commerce';\n if (this._query.entitySet) {\n requestUri = `${requestUri}/${this._query.entitySet}`;\n\n if (this._query.key) {\n requestUri = `${requestUri}(${DataServiceRequest.formatKey(this._query.key)})`;\n } else if (this._query.entitySet === 'Customers' && this._query.key !== null && this._query.key !== undefined) {\n requestUri = `${requestUri}('')`;\n }\n }\n\n // Appends the action (POST) or function (GET) name to the Uri\n if (this._hasOperationName) {\n requestUri += '/' + this._query.action;\n\n // Construct OData function Url with parameters. [e.g. Func(), Func(param1='',param2='')]\n if (!this._query.isAction && this._query.data && this._query.data.parameters) {\n requestUri += '(' + DataServiceRequest.formatFunctionParameter(this._query.data.parameters) + ')';\n }\n }\n\n if (this._query.isReturnTypeACollection) {\n requestUri = DataServiceRequest.addParameter(\n requestUri,\n '$top',\n this._query.resultSettings && this._query.resultSettings.Paging\n ? this._query.resultSettings.Paging.Top\n : ApiTimeoutInMilliSecond\n ); // Config.defaultPageSize);\n requestUri = DataServiceRequest.addParameter(\n requestUri,\n '$skip',\n this._query.resultSettings && this._query.resultSettings.Paging ? this._query.resultSettings.Paging.Skip : 0\n );\n requestUri = DataServiceRequest.addParameter(requestUri, '$inlinecount', this._query.inlineCount ? 'allpages' : null);\n\n if (this._query.resultSettings.count) {\n requestUri = DataServiceRequest.addParameter(requestUri, '$count', 'true');\n }\n\n requestUri = DataServiceRequest.addParameter(\n requestUri,\n '$filter',\n this._query.filterSettings ? this._query.filterSettings : 0\n );\n\n if (this._query.resultSettings && this._query.resultSettings.Sorting && this._query.resultSettings.Sorting.Columns) {\n const orderByColumns = [];\n this._query.resultSettings.Sorting.Columns.forEach((column: SortColumn) => {\n if (!isNullOrWhitespace(column.ColumnName || EMPTY)) {\n orderByColumns.push(format('{0}%20{1}', column.ColumnName, column.IsDescending ? 'desc' : 'asc'));\n }\n });\n if (orderByColumns.length > 0) {\n requestUri = DataServiceRequest.addParameter(requestUri, '$orderby', orderByColumns.join(','));\n }\n }\n }\n\n if (this._query.expands && hasElements(this._query.expands)) {\n requestUri = DataServiceRequest.addParameter(requestUri, '$expand', this._query.expands.join());\n }\n\n if (!isNullOrWhitespace(ApiVersion)) {\n requestUri = DataServiceRequest.addParameter(requestUri, 'api-version', ApiVersion);\n }\n\n return requestUri;\n }\n\n /**\n * Executes paginated requests for all entities.\n * @param {AsyncResult{T}} asyncResult The async result.\n * @param {{ [headerName: string]: string }} headerName the headers for the request.\n * @param {number} skip The offset.\n * @param {Array} The array result.\n */\n private getAllPages(headers: { [headerName: string]: string }, skip: number, results?: T[]): Promise {\n skip = skip || 0;\n const top = 1000; // Config.defaultPageSize;\n this._query.resultSettings = this._query.resultSettings || {};\n this._query.resultSettings.Paging = this._query.resultSettings.Paging || {};\n this._query.resultSettings.Paging.Top = top;\n results = results || [];\n\n return this.loadPage(headers, skip)\n .then((loadPageResults: T) => {\n if (loadPageResults) {\n if (typeof (loadPageResults as any).length === 'number') {\n results = results.concat(loadPageResults);\n\n if ((loadPageResults as any).length < top) {\n // This page contains less items than top\n if ((loadPageResults as any).hasNextPage) {\n // This means the pagesize defined on server side is smaller than the top\n skip += (loadPageResults as any).length;\n return this.getAllPages(headers, skip, results); // Try to fetch the next page\n } else {\n // No more pages need to fetch\n return Promise.resolve((results as any) as T);\n }\n } else {\n // This page contains exact amount of item as the top, should not contain more\n skip += top;\n return this.getAllPages(headers, skip, results); // Try to fetch the next page\n }\n } else {\n // The pageResult is a single item\n results.push((loadPageResults as unknown) as T);\n return Promise.resolve((results as unknown) as T);\n }\n }\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Builds the header to be sent as part of the request.\n * @returns {{ [headerName: string]: string }} a key value pair collection of header names and header values.\n */\n private buildQueryHeader(): { [headerName: string]: string } {\n const headers: { [headerName: string]: string } = {};\n headers['from-keystone'] = 'true';\n\n // copy default values from default header\n for (const headerName in DEFAULT_HEADER) {\n if (DEFAULT_HEADER.hasOwnProperty(headerName)) {\n headers[headerName] = DEFAULT_HEADER[headerName];\n }\n }\n\n // Copy operating unit number if present for C2 (if an operation is done by a customer or by anonymous user) scenarios.\n if (!isNullOrWhitespace(this._callerContext.requestContext.apiSettings.oun)) {\n headers[OPERATINGUNITNUMBER_HEADERNAME] = this._callerContext.requestContext.apiSettings.oun;\n }\n\n // Add accept-language header to send user preferred locale to server.\n headers[ACCEPT_LANGUAGE] = this._callerContext.requestContext.locale;\n\n // Add custom AppInsights headers\n headers[REQUEST_ID] = this._callerContext.requestContext.operationId;\n\n // OBO request\n const { user, cookies } = this._callerContext.requestContext;\n if (user.hasOwnProperty(OBO_REQUEST)) {\n const isOBORequest = user[OBO_REQUEST];\n if (cookies.hasOwnProperty(GET_ACCOUNT_SELECTION_COOKIE)) {\n const accountSelectionCookie = cookies[GET_ACCOUNT_SELECTION_COOKIE];\n const accountSelectionCustomerId = accountSelectionCookie();\n if (!isNullOrWhitespace(accountSelectionCustomerId) && isOBORequest) {\n const accountSelectionCustomerIdParts: string[] = accountSelectionCustomerId.split(':');\n headers[CUSTOMER_ACCOUNT_NUMBER] = accountSelectionCustomerIdParts[1];\n } else if (isOBORequest) {\n headers[CUSTOMER_ACCOUNT_NUMBER] = '';\n }\n }\n }\n\n // add any tokens as part of the header\n for (const tokenName in this._query.tokens) {\n if (this._query.tokens.hasOwnProperty(tokenName)) {\n const tokenValue: string = this._query.tokens[tokenName];\n\n if (!isNullOrWhitespace(tokenValue)) {\n headers[tokenName] = tokenValue;\n }\n }\n }\n\n // Now check whether authentication token is present or not, if present it will be added into Authorization header.\n if (\n this._callerContext &&\n this._callerContext.requestContext.user &&\n !isNullOrWhitespace(this._callerContext.requestContext.user.token)\n ) {\n headers[AUTHORIZATION_HEADERNAME] = `id_token ${this._callerContext.requestContext.user.token}`;\n }\n\n // Check if an Bearer access token is being provided. If present it will be added into Authorization header\n if (\n this._callerContext &&\n this._callerContext.requestContext &&\n !isNullOrWhitespace(this._callerContext.requestContext.accessToken)\n ) {\n headers[AUTHORIZATION_HEADERNAME] = `Bearer ${this._callerContext.requestContext.accessToken}`;\n }\n\n // Add AppSessionId and UserSessionId to request header\n if (this._callerContext.requestContext[`cookies`]) {\n const cookieData: IPartialCookieContext = this._callerContext.requestContext[`cookies`];\n const appSessionCookie = cookieData.get('ai_session');\n const userSessionCookie = cookieData.get('ai_user');\n\n if (appSessionCookie && appSessionCookie.status === 'FOUND') {\n const appSessionId = appSessionCookie.value?.split('|')[0];\n headers[APPSESSION_ID] = appSessionId;\n }\n if (userSessionCookie && userSessionCookie.status === 'FOUND') {\n const userSessionId = userSessionCookie.value?.split('|')[0];\n headers[USERSESSION_ID] = userSessionId;\n }\n }\n\n return headers;\n }\n\n /**\n * Executes request for one page.\n * @param {AsyncResult} The async result.\n * @param {{ [headerName: string]: string }} headerName the headers for the request.\n */\n private loadPage(headers: { [headerName: string]: string }, skip?: number): Promise {\n if (skip) {\n this._query.resultSettings = this._query.resultSettings || {};\n this._query.resultSettings.Paging = this._query.resultSettings.Paging || {};\n this._query.resultSettings.Paging.Skip = skip;\n }\n\n const requestId = Utils.generateGuid();\n modelManagersRetailServerRequestStarted(requestId, this._requestUri);\n\n return new Promise((resolve, reject) => {\n // This is the pipe for all OData API calls.\n ODataHttpRequest(\n {\n requestUri: this.getRequestUri(),\n method: this._method,\n data: DataServiceRequest.toJson(this._query.data),\n headers\n },\n (data: any) => {\n modelManagersRetailServerRequestFinished(requestId, this._requestUri);\n parseOdataResult(data, this._query.returnType).then(resultSet => {\n if (data) {\n if (data[ODATA_TOTAL_COUNT_PROPERTY]) {\n this._totalCount = data[ODATA_TOTAL_COUNT_PROPERTY];\n }\n const otherOdata = DataServiceRequest.setMetadata(data);\n if (otherOdata) {\n this._otherOdata = otherOdata;\n }\n }\n\n if (this._cacheKeyIdentifierFromReturnType) {\n if (Object.prototype.toString.call(resultSet) === '[object Array]') {\n this._cacheKeyFromReturnType.concat(\n resultSet.map(result => result[this._cacheKeyIdentifierFromReturnType]).filter(Boolean)\n );\n } else if (typeof resultSet === 'object') {\n this._cacheKeyFromReturnType.push(resultSet[this._cacheKeyIdentifierFromReturnType]);\n }\n }\n\n resolve(resultSet);\n });\n },\n (error: any) => {\n modelManagersRetailServerRequestError(requestId, this._requestUri, error.message);\n reject(ErrorParser.parseErrorMessage(error, this._callerContext));\n }\n );\n });\n }\n\n /**\n * Sets all the Odata propeties from retail api on DataServiceRequest\n * @param data retail api call data\n */\n private static setMetadata(data: any): IDictionary | undefined {\n // Sets all the Odata properties on DataServiceRequest\n const odataList = Object.keys(data).filter(key => {\n if (key !== ODATA_TOTAL_COUNT_PROPERTY) {\n return key.indexOf('@odata') === 0;\n }\n });\n\n if (odataList.length > 0) {\n const odata = odataList.reduce((newData, key) => {\n const newKey = key.replace('@odata.', '');\n newData[newKey] = data[key];\n return newData;\n }, {});\n\n return odata;\n }\n return undefined;\n }\n}\n","\n \n /**\n * The matched retail server api version.\n */\n export const ApiVersion: string = \"7.3\";\n \n export const EntityIdentifier = {\n \n 'Category' : {\n 'Key': \n 'RecordId'\n },\n 'Cart' : {\n 'Key': \n 'Id'\n },\n 'Customer' : {\n 'Key': \n 'AccountNumber'\n },\n 'Employee' : {\n 'Key': \n 'StaffId'\n },\n 'Checklist' : {\n 'Key': \n 'RecordId'\n },\n 'SalesOrder' : {\n 'Key': \n 'Id'\n },\n 'Shift' : {\n 'Key': [ \n 'ShiftId',\n 'TerminalId' ] \n },\n 'StockCountJournal' : {\n 'Key': \n 'JournalId'\n },\n 'OrgUnit' : {\n 'Key': \n 'OrgUnitNumber'\n },\n 'Product' : {\n 'Key': \n 'RecordId'\n },\n 'ProductCatalog' : {\n 'Key': \n 'RecordId'\n },\n 'CommerceList' : {\n 'Key': \n 'Id'\n },\n 'ProductList' : {\n 'Key': \n 'Id'\n },\n 'Recommendation' : {\n 'Key': \n 'Id'\n },\n 'TransferOrder' : {\n 'Key': \n 'OrderId'\n },\n 'PurchaseOrder' : {\n 'Key': \n 'OrderId'\n },\n 'PickingList' : {\n 'Key': \n 'OrderId'\n },\n 'Warehouse' : {\n 'Key': \n 'InventLocation'\n },\n 'ScanResult' : {\n 'Key': \n 'ScannedText'\n },\n 'SalesOrderContextualOperationsMap' : {\n 'Key': \n 'Id'\n },\n 'InventoryInboundOutboundDocument' : {\n 'Key': \n 'WorkDocumentId'\n },\n 'BusinessPartner' : {\n 'Key': \n 'BusinessPartnerId'\n },\n 'BusinessPartnerUser' : {\n 'Key': \n 'B2BUserId'\n },\n 'SuspendedCart' : {\n 'Key': \n 'Id'\n } \n };\n \n \n /**\n * AutoExitMethodType enum type.\n */\n export enum AutoExitMethodType {\n \n /**\n * The Logoff member.\n */\n Logoff = 0,\n \n /**\n * The Lock member.\n */\n Lock = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * CardType enum type.\n */\n export enum CardType {\n \n /**\n * The InternationalCreditCard member.\n */\n InternationalCreditCard = 0,\n \n /**\n * The InternationalDebitCard member.\n */\n InternationalDebitCard = 1,\n \n /**\n * The LoyaltyCard member.\n */\n LoyaltyCard = 2,\n \n /**\n * The CorporateCard member.\n */\n CorporateCard = 3,\n \n /**\n * The CustomerCard member.\n */\n CustomerCard = 4,\n \n /**\n * The EmployeeCard member.\n */\n EmployeeCard = 5,\n \n /**\n * The SalespersonCard member.\n */\n SalespersonCard = 6,\n \n /**\n * The GiftCard member.\n */\n GiftCard = 7,\n \n /**\n * The Check member.\n */\n Check = 8,\n \n /**\n * The Wallet member.\n */\n Wallet = 9,\n \n /**\n * The FoodCard member.\n */\n FoodCard = 21,\n \n /**\n * The MealCard member.\n */\n MealCard = 22,\n \n /**\n * The FuelCard member.\n */\n FuelCard = 23,\n \n /**\n * The Unknown member.\n */\n Unknown = -1\n }\n \n /**\n * PublishingAction enum type.\n */\n export enum PublishingAction {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Publish member.\n */\n Publish = 1,\n \n /**\n * The Delete member.\n */\n Delete = 2,\n \n /**\n * The Expire member.\n */\n Expire = 3\n }\n \n /**\n * ListingPublishingActionStatus enum type.\n */\n export enum ListingPublishingActionStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Ready member.\n */\n Ready = 1,\n \n /**\n * The InProgress member.\n */\n InProgress = 2,\n \n /**\n * The Done member.\n */\n Done = 3,\n \n /**\n * The Failed member.\n */\n Failed = 4\n }\n \n /**\n * OnlineChannelPublishStatusType enum type.\n */\n export enum OnlineChannelPublishStatusType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Draft member.\n */\n Draft = 1,\n \n /**\n * The InProgress member.\n */\n InProgress = 2,\n \n /**\n * The Published member.\n */\n Published = 3,\n \n /**\n * The Failed member.\n */\n Failed = 4\n }\n \n /**\n * ReceiptTransactionType enum type.\n */\n export enum ReceiptTransactionType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Sale member.\n */\n Sale = 1,\n \n /**\n * The Return member.\n */\n Return = 2,\n \n /**\n * The Payment member.\n */\n Payment = 5,\n \n /**\n * The SalesOrder member.\n */\n SalesOrder = 6,\n \n /**\n * The Quote member.\n */\n Quote = 7,\n \n /**\n * The SuspendedTransaction member.\n */\n SuspendedTransaction = 9\n }\n \n /**\n * EmployeePriceOverrideType enum type.\n */\n export enum EmployeePriceOverrideType {\n \n /**\n * The HigherAndLower member.\n */\n HigherAndLower = 0,\n \n /**\n * The HigherOnly member.\n */\n HigherOnly = 1,\n \n /**\n * The LowerOnly member.\n */\n LowerOnly = 2,\n \n /**\n * The NotAllowed member.\n */\n NotAllowed = 3\n }\n \n /**\n * KeyInPriceRestriction enum type.\n */\n export enum KeyInPriceRestriction {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NewPrice member.\n */\n NewPrice = 1,\n \n /**\n * The HigherOrEqualPrice member.\n */\n HigherOrEqualPrice = 2,\n \n /**\n * The LowerOrEqualPrice member.\n */\n LowerOrEqualPrice = 3,\n \n /**\n * The NotAllowed member.\n */\n NotAllowed = 4\n }\n \n /**\n * KeyInQuantityRestriction enum type.\n */\n export enum KeyInQuantityRestriction {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Required member.\n */\n Required = 1,\n \n /**\n * The NotAllowed member.\n */\n NotAllowed = 2\n }\n \n /**\n * ProductDimensionType enum type.\n */\n export enum ProductDimensionType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Color member.\n */\n Color = 1,\n \n /**\n * The Configuration member.\n */\n Configuration = 2,\n \n /**\n * The Size member.\n */\n Size = 3,\n \n /**\n * The Style member.\n */\n Style = 4\n }\n \n /**\n * ProductType enum type.\n */\n export enum ProductType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The KitMaster member.\n */\n KitMaster = 1,\n \n /**\n * The KitVariant member.\n */\n KitVariant = 2,\n \n /**\n * The Master member.\n */\n Master = 3,\n \n /**\n * The Standalone member.\n */\n Standalone = 4,\n \n /**\n * The Variant member.\n */\n Variant = 5\n }\n \n /**\n * NumberSequenceSeedType enum type.\n */\n export enum NumberSequenceSeedType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ReceiptDefault member.\n */\n ReceiptDefault = 1,\n \n /**\n * The ReceiptSale member.\n */\n ReceiptSale = 2,\n \n /**\n * The ReceiptReturn member.\n */\n ReceiptReturn = 3,\n \n /**\n * The ReceiptSalesOrder member.\n */\n ReceiptSalesOrder = 4,\n \n /**\n * The ReceiptSalesInvoice member.\n */\n ReceiptSalesInvoice = 5,\n \n /**\n * The ReceiptPayment member.\n */\n ReceiptPayment = 6,\n \n /**\n * The BatchId member.\n */\n BatchId = 7,\n \n /**\n * The TransactionId member.\n */\n TransactionId = 8,\n \n /**\n * The ReceiptCustomerSalesOrder member.\n */\n ReceiptCustomerSalesOrder = 10,\n \n /**\n * The ReceiptCustomerQuote member.\n */\n ReceiptCustomerQuote = 11,\n \n /**\n * The ReceiptSuspendedTransaction member.\n */\n ReceiptSuspendedTransaction = 22\n }\n \n /**\n * ReasonCodeSourceType enum type.\n */\n export enum ReasonCodeSourceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The AddSalesperson member.\n */\n AddSalesperson = 1,\n \n /**\n * The EndOfTransaction member.\n */\n EndOfTransaction = 2,\n \n /**\n * The ItemDiscount member.\n */\n ItemDiscount = 3,\n \n /**\n * The ItemNotOnFile member.\n */\n ItemNotOnFile = 4,\n \n /**\n * The LineItemTaxChange member.\n */\n LineItemTaxChange = 5,\n \n /**\n * The Markup member.\n */\n Markup = 6,\n \n /**\n * The NegativeAdjustment member.\n */\n NegativeAdjustment = 7,\n \n /**\n * The NfcEContingencyModeEnabled member.\n */\n NfcEContingencyModeEnabled = 8,\n \n /**\n * The NfcEVoided member.\n */\n NfcEVoided = 9,\n \n /**\n * The OpenDrawer member.\n */\n OpenDrawer = 10,\n \n /**\n * The OverridePrice member.\n */\n OverridePrice = 11,\n \n /**\n * The ReturnItem member.\n */\n ReturnItem = 12,\n \n /**\n * The ReturnTransaction member.\n */\n ReturnTransaction = 13,\n \n /**\n * The SerialNumber member.\n */\n SerialNumber = 14,\n \n /**\n * The StartOfTransaction member.\n */\n StartOfTransaction = 15,\n \n /**\n * The TenderDeclaration member.\n */\n TenderDeclaration = 16,\n \n /**\n * The TotalDiscount member.\n */\n TotalDiscount = 17,\n \n /**\n * The TransactionTaxChange member.\n */\n TransactionTaxChange = 18,\n \n /**\n * The VoidItem member.\n */\n VoidItem = 19,\n \n /**\n * The VoidPayment member.\n */\n VoidPayment = 20,\n \n /**\n * The VoidTransaction member.\n */\n VoidTransaction = 21,\n \n /**\n * The OrderFulfillment member.\n */\n OrderFulfillment = 22,\n \n /**\n * The ManualCharge member.\n */\n ManualCharge = 23\n }\n \n /**\n * TriggerFunctionType enum type.\n */\n export enum TriggerFunctionType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Item member.\n */\n Item = 1,\n \n /**\n * The InfoCode member.\n */\n InfoCode = 2\n }\n \n /**\n * QueryType enum type.\n */\n export enum QueryType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NameAndDescription member.\n */\n NameAndDescription = 1,\n \n /**\n * The AotObject member.\n */\n AotObject = 2\n }\n \n /**\n * ChangeAction enum type.\n */\n export enum ChangeAction {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Insert member.\n */\n Insert = 1,\n \n /**\n * The Update member.\n */\n Update = 2,\n \n /**\n * The Delete member.\n */\n Delete = 3\n }\n \n /**\n * PeriodicDiscountOfferType enum type.\n */\n export enum PeriodicDiscountOfferType {\n \n /**\n * The MultipleBuy member.\n */\n MultipleBuy = 0,\n \n /**\n * The MixAndMatch member.\n */\n MixAndMatch = 1,\n \n /**\n * The Offer member.\n */\n Offer = 2,\n \n /**\n * The Promotion member.\n */\n Promotion = 3,\n \n /**\n * The Threshold member.\n */\n Threshold = 4,\n \n /**\n * The LeastExpensiveFavorRetailer member.\n */\n LeastExpensiveFavorRetailer = 5,\n \n /**\n * The OfferLineQuantityLimit member.\n */\n OfferLineQuantityLimit = 6,\n \n /**\n * The ShippingThreshold member.\n */\n ShippingThreshold = 7\n }\n \n /**\n * SearchFilterType enum type.\n */\n export enum SearchFilterType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Text member.\n */\n Text = 1\n }\n \n /**\n * InfoCodeActivity enum type.\n */\n export enum InfoCodeActivity {\n \n /**\n * The Transaction member.\n */\n Transaction = 0,\n \n /**\n * The OrderFulfillment member.\n */\n OrderFulfillment = 1\n }\n \n /**\n * SrsReportFileFormat enum type.\n */\n export enum SrsReportFileFormat {\n \n /**\n * The CSV member.\n */\n CSV = 0,\n \n /**\n * The Excel member.\n */\n Excel = 1,\n \n /**\n * The HTML4_0 member.\n */\n HTML4_0 = 2,\n \n /**\n * The Image member.\n */\n Image = 3,\n \n /**\n * The MHTML member.\n */\n MHTML = 4,\n \n /**\n * The PDF member.\n */\n PDF = 5,\n \n /**\n * The XML member.\n */\n XML = 6\n }\n \n /**\n * ShiftReconciliationLineStatus enum type.\n */\n export enum ShiftReconciliationLineStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Pending member.\n */\n Pending = 1,\n \n /**\n * The Reconciled member.\n */\n Reconciled = 2,\n \n /**\n * The Closed member.\n */\n Closed = 3\n }\n \n /**\n * ProductSearchServiceType enum type.\n */\n export enum ProductSearchServiceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ChannelDatabase member.\n */\n ChannelDatabase = 1,\n \n /**\n * The CommerceAzureSearchService member.\n */\n CommerceAzureSearchService = 2,\n \n /**\n * The CommerceBingSearchService member.\n */\n CommerceBingSearchService = 3\n }\n \n /**\n * SearchSuggestionType enum type.\n */\n export enum SearchSuggestionType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Keyword member.\n */\n Keyword = 1,\n \n /**\n * The Product member.\n */\n Product = 2,\n \n /**\n * The ScopedCategory member.\n */\n ScopedCategory = 4,\n \n /**\n * The Category member.\n */\n Category = 8,\n \n /**\n * The Customer member.\n */\n Customer = 16\n }\n \n /**\n * SalesStatus enum type.\n */\n export enum SalesStatus {\n \n /**\n * The Unknown member.\n */\n Unknown = 0,\n \n /**\n * The Created member.\n */\n Created = 1,\n \n /**\n * The Processing member.\n */\n Processing = 2,\n \n /**\n * The Delivered member.\n */\n Delivered = 3,\n \n /**\n * The Invoiced member.\n */\n Invoiced = 4,\n \n /**\n * The Confirmed member.\n */\n Confirmed = 5,\n \n /**\n * The Sent member.\n */\n Sent = 6,\n \n /**\n * The Canceled member.\n */\n Canceled = 7,\n \n /**\n * The Lost member.\n */\n Lost = 8\n }\n \n /**\n * EFTType enum type.\n */\n export enum EFTType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The External member.\n */\n External = 1,\n \n /**\n * The PaymentSDK member.\n */\n PaymentSDK = 2,\n \n /**\n * The DynamicsOnline member.\n */\n DynamicsOnline = 3\n }\n \n /**\n * FilterDeliveryModeOption enum type.\n */\n export enum FilterDeliveryModeOption {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The FilterOutNonCarrierDeliveryMode member.\n */\n FilterOutNonCarrierDeliveryMode = 1,\n \n /**\n * The DoNotFilterByChannel member.\n */\n DoNotFilterByChannel = 2,\n \n /**\n * The FilterOutNonPickupDeliveryMode member.\n */\n FilterOutNonPickupDeliveryMode = 4\n }\n \n /**\n * InventoryDocumentLineOperationResultMode enum type.\n */\n export enum InventoryDocumentLineOperationResultMode {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NoLines member.\n */\n NoLines = 1,\n \n /**\n * The AllLines member.\n */\n AllLines = 2\n }\n \n /**\n * InventoryDocumentStatus enum type.\n */\n export enum InventoryDocumentStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Paused member.\n */\n Paused = 1,\n \n /**\n * The InProgress member.\n */\n InProgress = 2,\n \n /**\n * The Committed member.\n */\n Committed = 3,\n \n /**\n * The ProcessSucceeded member.\n */\n ProcessSucceeded = 4,\n \n /**\n * The ProcessFailed member.\n */\n ProcessFailed = 5\n }\n \n /**\n * InventoryDocumentUpdateLinesActionType enum type.\n */\n export enum InventoryDocumentUpdateLinesActionType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ApplyQuantity member.\n */\n ApplyQuantity = 1,\n \n /**\n * The ApplyMaximumQuantity member.\n */\n ApplyMaximumQuantity = 2\n }\n \n /**\n * InventoryInboundOutboundDocumentOperationType enum type.\n */\n export enum InventoryInboundOutboundDocumentOperationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ReceivePurchaseOrder member.\n */\n ReceivePurchaseOrder = 1,\n \n /**\n * The ReceiveTransferOrder member.\n */\n ReceiveTransferOrder = 2,\n \n /**\n * The ShipTransferOrder member.\n */\n ShipTransferOrder = 3,\n \n /**\n * The CreateTransferOrder member.\n */\n CreateTransferOrder = 4,\n \n /**\n * The SaveInventoryAdjustment member.\n */\n SaveInventoryAdjustment = 5,\n \n /**\n * The PostInventoryAdjustment member.\n */\n PostInventoryAdjustment = 6,\n \n /**\n * The PostInventoryTransfer member.\n */\n PostInventoryTransfer = 7,\n \n /**\n * The SaveStockCounting member.\n */\n SaveStockCounting = 8,\n \n /**\n * The PostStockCounting member.\n */\n PostStockCounting = 9,\n \n /**\n * The CreateStockCounting member.\n */\n CreateStockCounting = 10,\n \n /**\n * The CreatePurchaseOrder member.\n */\n CreatePurchaseOrder = 11\n }\n \n /**\n * InventoryInboundOutboundSourceDocumentStatus enum type.\n */\n export enum InventoryInboundOutboundSourceDocumentStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Requested member.\n */\n Requested = 1,\n \n /**\n * The Shipped member.\n */\n Shipped = 2,\n \n /**\n * The PartiallyShipped member.\n */\n PartiallyShipped = 3,\n \n /**\n * The Received member.\n */\n Received = 4,\n \n /**\n * The PartiallyReceived member.\n */\n PartiallyReceived = 5,\n \n /**\n * The Cancelled member.\n */\n Cancelled = 6,\n \n /**\n * The Posted member.\n */\n Posted = 8,\n \n /**\n * The Committed member.\n */\n Committed = 9\n }\n \n /**\n * InventorySourceDocumentType enum type.\n */\n export enum InventorySourceDocumentType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The PurchaseOrder member.\n */\n PurchaseOrder = 1,\n \n /**\n * The TransferOrder member.\n */\n TransferOrder = 2,\n \n /**\n * The InventoryAdjustment member.\n */\n InventoryAdjustment = 3,\n \n /**\n * The InventoryTransfer member.\n */\n InventoryTransfer = 4,\n \n /**\n * The StockCounting member.\n */\n StockCounting = 5\n }\n \n /**\n * InventoryInboundOutboundDocumentState enum type.\n */\n export enum InventoryInboundOutboundDocumentState {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Active member.\n */\n Active = 1,\n \n /**\n * The Complete member.\n */\n Complete = 2,\n \n /**\n * The Draft member.\n */\n Draft = 3\n }\n \n /**\n * ReceiptNumberResetType enum type.\n */\n export enum ReceiptNumberResetType {\n \n /**\n * The SingleTime member.\n */\n SingleTime = 0,\n \n /**\n * The YearlyRecurrence member.\n */\n YearlyRecurrence = 1\n }\n \n /**\n * PeriodUnit enum type.\n */\n export enum PeriodUnit {\n \n /**\n * The Day member.\n */\n Day = 0,\n \n /**\n * The Week member.\n */\n Week = 1,\n \n /**\n * The Month member.\n */\n Month = 2,\n \n /**\n * The Year member.\n */\n Year = 3,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * WarrantyPriceRangeBaseType enum type.\n */\n export enum WarrantyPriceRangeBaseType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The BasePrice member.\n */\n BasePrice = 1,\n \n /**\n * The SellingPrice member.\n */\n SellingPrice = 2\n }\n \n /**\n * LogOnKeyboardType enum type.\n */\n export enum LogOnKeyboardType {\n \n /**\n * The OSKeyboard member.\n */\n OSKeyboard = 0,\n \n /**\n * The Numpad member.\n */\n Numpad = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * LogOnLayoutType enum type.\n */\n export enum LogOnLayoutType {\n \n /**\n * The Centered member.\n */\n Centered = 0,\n \n /**\n * The Right member.\n */\n Right = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * DeliveryModeTypeFilter enum type.\n */\n export enum DeliveryModeTypeFilter {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Shipping member.\n */\n Shipping = 1,\n \n /**\n * The Pickup member.\n */\n Pickup = 2\n }\n \n /**\n * InventoryDocumentValidationResultSeverity enum type.\n */\n export enum InventoryDocumentValidationResultSeverity {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Informational member.\n */\n Informational = 1,\n \n /**\n * The Warning member.\n */\n Warning = 2,\n \n /**\n * The Error member.\n */\n Error = 3\n }\n \n /**\n * InventoryDocumentOverreceivingErrors enum type.\n */\n export enum InventoryDocumentOverreceivingErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The QuantityExceededAllowed member.\n */\n QuantityExceededAllowed,\n \n /**\n * The QuantityExceededAllowedWithinOverreceivingTolerance member.\n */\n QuantityExceededAllowedWithinOverreceivingTolerance,\n \n /**\n * The QuantityExceededOverreceivingTolerance member.\n */\n QuantityExceededOverreceivingTolerance\n }\n \n /**\n * InventoryDocumentSerialNumberErrors enum type.\n */\n export enum InventoryDocumentSerialNumberErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The RequiredSerialNumberNotProvided member.\n */\n RequiredSerialNumberNotProvided,\n \n /**\n * The DuplicateSerialNumberIsNotAllowed member.\n */\n DuplicateSerialNumberIsNotAllowed,\n \n /**\n * The RequiredSerialNumberValidationNotProvided member.\n */\n RequiredSerialNumberValidationNotProvided,\n \n /**\n * The SerialNumberNotAvailable member.\n */\n SerialNumberNotAvailable\n }\n \n /**\n * EmployeeIdentityType enum type.\n */\n export enum EmployeeIdentityType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The CommerceIdentity member.\n */\n CommerceIdentity = 1,\n \n /**\n * The AadIdentity member.\n */\n AadIdentity = 2\n }\n \n /**\n * FulfillmentOperationType enum type.\n */\n export enum FulfillmentOperationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Pick member.\n */\n Pick = 1,\n \n /**\n * The Pack member.\n */\n Pack = 2,\n \n /**\n * The Ship member.\n */\n Ship = 3,\n \n /**\n * The Pickup member.\n */\n Pickup = 4\n }\n \n /**\n * PaymentStatus enum type.\n */\n export enum PaymentStatus {\n \n /**\n * The NotSubmitted member.\n */\n NotSubmitted = 0,\n \n /**\n * The Authorized member.\n */\n Authorized = 1,\n \n /**\n * The Declined member.\n */\n Declined = 2,\n \n /**\n * The Posted member.\n */\n Posted = 3,\n \n /**\n * The Paid member.\n */\n Paid = 4\n }\n \n /**\n * UserAlertSourceType enum type.\n */\n export enum UserAlertSourceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Inventory_SerialNumberMissing member.\n */\n Inventory_SerialNumberMissing = 1,\n \n /**\n * The Inventory_SerialNumberInsufficientStock member.\n */\n Inventory_SerialNumberInsufficientStock = 2\n }\n \n /**\n * CustomerOrderMode enum type.\n */\n export enum CustomerOrderMode {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The CustomerOrderCreateOrEdit member.\n */\n CustomerOrderCreateOrEdit = 1,\n \n /**\n * The OrderRecalled member.\n */\n OrderRecalled = 2,\n \n /**\n * The Pickup member.\n */\n Pickup = 3,\n \n /**\n * The Return member.\n */\n Return = 4,\n \n /**\n * The Cancellation member.\n */\n Cancellation = 5,\n \n /**\n * The QuoteCreateOrEdit member.\n */\n QuoteCreateOrEdit = 6\n }\n \n /**\n * InventoryValidationErrors enum type.\n */\n export enum InventoryValidationErrors {\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryAvailableQuantitiesRecordsExceedLimit member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryAvailableQuantitiesRecordsExceedLimit,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ShipAllNotAllowedForAdvancedWarehouse member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ShipAllNotAllowedForAdvancedWarehouse,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_PurchaseOrderUnderDeliveryNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_PurchaseOrderUnderDeliveryNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ClosePurchaseLineNotAllowedWhenReceiveNowQuantityIsZero member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ClosePurchaseLineNotAllowedWhenReceiveNowQuantityIsZero,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ClosePurchaseOrderLineNotAllowWhenReceiveQuantityUnderTolerance member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ClosePurchaseOrderLineNotAllowWhenReceiveQuantityUnderTolerance,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_LineNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_LineNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_CloseTransferLineNotAllowedWhenShipNowQuantityIsZero member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_CloseTransferLineNotAllowedWhenShipNowQuantityIsZero,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ShipAllForAdvancedWarehouseWithoutIssueLocation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ShipAllForAdvancedWarehouseWithoutIssueLocation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ProductBehaviorMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_ProductBehaviorMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_StockCountJournal_JournalNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_StockCountJournal_JournalNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_NoLineToCommit member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_NoLineToCommit,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_Journal_Name_Search_Criteria_Not_Valid member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_Journal_Name_Search_Criteria_Not_Valid,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_Movement_Journal_Location_Dimension_Missing_For_Product member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_Movement_Journal_Location_Dimension_Missing_For_Product,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_UpdateEmptyLinesNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_UpdateEmptyLinesNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_SearchCriteriaContainsWarehouseLocationId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_SearchCriteriaContainsWarehouseLocationId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_DefaultIssueLocationNotFoundForWarehouse member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_DefaultIssueLocationNotFoundForWarehouse,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_DefaultReceiptLocationNotFoundForWarehouse member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_DefaultReceiptLocationNotFoundForWarehouse,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventorySourceDocumentMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventorySourceDocumentMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_CommitDocumentFailToDeserialize member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_CommitDocumentFailToDeserialize,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_LineCannotBeDeleted member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocument_LineCannotBeDeleted,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_ReceiverNotAllowedForInboundSearchCriteria member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_ReceiverNotAllowedForInboundSearchCriteria,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_SenderNotAllowedForOutboundSearchCriteria member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_SenderNotAllowedForOutboundSearchCriteria,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_FilterCannotContainTransferFromAndShipFromAtTheSameTime member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_FilterCannotContainTransferFromAndShipFromAtTheSameTime,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_CannotSearchPurchaseOrderByFilterTransferFrom member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_CannotSearchPurchaseOrderByFilterTransferFrom,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_CannotSearchTransferOrderByFilterShipFrom member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_CannotSearchTransferOrderByFilterShipFrom,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_NotValidStockCountJournal member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_NotValidStockCountJournal,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_SerialNumberLinesFailedToDownload member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_SerialNumberLinesFailedToDownload,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeliveryModeTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeliveryModeTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Inventory_CannotReturnMultipleVendors member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Inventory_CannotReturnMultipleVendors\n }\n \n /**\n * InventoryJournalPosAdjustmentType enum type.\n */\n export enum InventoryJournalPosAdjustmentType {\n \n /**\n * The In member.\n */\n In = 0,\n \n /**\n * The Out member.\n */\n Out = 1\n }\n \n /**\n * ProductDataValidationErrors enum type.\n */\n export enum ProductDataValidationErrors {\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HavingMultipleCategoriesNotSupportedInRemoteSearch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HavingMultipleCategoriesNotSupportedInRemoteSearch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HavingMultipleSearchTypesIsNotSupportedInRemoteSearch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HavingMultipleSearchTypesIsNotSupportedInRemoteSearch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductSerialNumberIsTooLong member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductSerialNumberIsTooLong,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NullItemIdNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NullItemIdNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MoreThanOneProductsForSearchVariantPriceRange member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MoreThanOneProductsForSearchVariantPriceRange,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductIsNotMasterForSearchVariantPriceRange member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductIsNotMasterForSearchVariantPriceRange,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidProductSearchCriteria member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidProductSearchCriteria,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CategoryAttributeTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CategoryAttributeTypeNotSupported\n }\n \n /**\n * AddressOperationType enum type.\n */\n export enum AddressOperationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Create member.\n */\n Create = 1,\n \n /**\n * The Update member.\n */\n Update = 2,\n \n /**\n * The Deactivate member.\n */\n Deactivate = 3\n }\n \n /**\n * AddressType enum type.\n */\n export enum AddressType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Invoice member.\n */\n Invoice = 1,\n \n /**\n * The Delivery member.\n */\n Delivery = 2,\n \n /**\n * The AltDlv member.\n */\n AltDlv = 3,\n \n /**\n * The SWIFT member.\n */\n SWIFT = 4,\n \n /**\n * The Payment member.\n */\n Payment = 5,\n \n /**\n * The Service member.\n */\n Service = 6,\n \n /**\n * The Home member.\n */\n Home = 7,\n \n /**\n * The Other member.\n */\n Other = 8,\n \n /**\n * The Business member.\n */\n Business = 9,\n \n /**\n * The RemitTo member.\n */\n RemitTo = 10,\n \n /**\n * The ShipCarrierThirdPartyShipping member.\n */\n ShipCarrierThirdPartyShipping = 11,\n \n /**\n * The Statement member.\n */\n Statement = 12,\n \n /**\n * The FixedAsset member.\n */\n FixedAsset = 15,\n \n /**\n * The Onetime member.\n */\n Onetime = 16,\n \n /**\n * The Recruit member.\n */\n Recruit = 17,\n \n /**\n * The SMS member.\n */\n SMS = 18,\n \n /**\n * The Lading_W member.\n */\n Lading_W = 101,\n \n /**\n * The Unlading_W member.\n */\n Unlading_W = 102,\n \n /**\n * The Consignment_IN member.\n */\n Consignment_IN = 103\n }\n \n /**\n * AttributeDataType enum type.\n */\n export enum AttributeDataType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Currency member.\n */\n Currency = 1,\n \n /**\n * The DateTime member.\n */\n DateTime = 2,\n \n /**\n * The Decimal member.\n */\n Decimal = 3,\n \n /**\n * The Integer member.\n */\n Integer = 4,\n \n /**\n * The Text member.\n */\n Text = 5,\n \n /**\n * The TrueFalse member.\n */\n TrueFalse = 6,\n \n /**\n * The Video member.\n */\n Video = 40,\n \n /**\n * The Image member.\n */\n Image = 41\n }\n \n /**\n * BarcodeEntryMethodType enum type.\n */\n export enum BarcodeEntryMethodType {\n \n /**\n * The SingleScanned member.\n */\n SingleScanned = 0,\n \n /**\n * The MultipleScanned member.\n */\n MultipleScanned = 1,\n \n /**\n * The ManuallyEntered member.\n */\n ManuallyEntered = 2,\n \n /**\n * The Selected member.\n */\n Selected = 3\n }\n \n /**\n * BarcodeMaskType enum type.\n */\n export enum BarcodeMaskType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Item member.\n */\n Item = 1,\n \n /**\n * The Customer member.\n */\n Customer = 2,\n \n /**\n * The Employee member.\n */\n Employee = 3,\n \n /**\n * The Coupon member.\n */\n Coupon = 4,\n \n /**\n * The DataEntry member.\n */\n DataEntry = 5,\n \n /**\n * The Salesperson member.\n */\n Salesperson = 6,\n \n /**\n * The Pharmacy member.\n */\n Pharmacy = 7,\n \n /**\n * The DiscountCode member.\n */\n DiscountCode = 8,\n \n /**\n * The GiftCard member.\n */\n GiftCard = 9,\n \n /**\n * The LoyaltyCard member.\n */\n LoyaltyCard = 10\n }\n \n /**\n * TransactionStatus enum type.\n */\n export enum TransactionStatus {\n \n /**\n * The Normal member.\n */\n Normal = 0,\n \n /**\n * The Voided member.\n */\n Voided = 1,\n \n /**\n * The Posted member.\n */\n Posted = 2,\n \n /**\n * The Concluded member.\n */\n Concluded = 3,\n \n /**\n * The Canceled member.\n */\n Canceled = 4,\n \n /**\n * The OnHold member.\n */\n OnHold = 5,\n \n /**\n * The Training member.\n */\n Training = 6,\n \n /**\n * The Aborted member.\n */\n Aborted = 7\n }\n \n /**\n * GiftCardOperationType enum type.\n */\n export enum GiftCardOperationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Issue member.\n */\n Issue = 1,\n \n /**\n * The AddTo member.\n */\n AddTo = 2,\n \n /**\n * The CashOut member.\n */\n CashOut = 3\n }\n \n /**\n * RetailGiftCardType enum type.\n */\n export enum RetailGiftCardType {\n \n /**\n * The Unknown member.\n */\n Unknown = 0,\n \n /**\n * The InternalGiftCard member.\n */\n InternalGiftCard = 1,\n \n /**\n * The ExternalGiftCard member.\n */\n ExternalGiftCard = 2\n }\n \n /**\n * PriceMethod enum type.\n */\n export enum PriceMethod {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Fixed member.\n */\n Fixed = 1,\n \n /**\n * The AmountOff member.\n */\n AmountOff = 2,\n \n /**\n * The PercentOff member.\n */\n PercentOff = 3\n }\n \n /**\n * ConcurrencyMode enum type.\n */\n export enum ConcurrencyMode {\n \n /**\n * The Exclusive member.\n */\n Exclusive = 0,\n \n /**\n * The BestPrice member.\n */\n BestPrice = 1,\n \n /**\n * The Compounded member.\n */\n Compounded = 2,\n \n /**\n * The AlwaysApply member.\n */\n AlwaysApply = 3,\n \n /**\n * The HighestCombinedPricingPriority member.\n */\n HighestCombinedPricingPriority = 4\n }\n \n /**\n * SalesAgreementLineType enum type.\n */\n export enum SalesAgreementLineType {\n \n /**\n * The ProductQuantity member.\n */\n ProductQuantity = 0,\n \n /**\n * The ProductVolume member.\n */\n ProductVolume = 1,\n \n /**\n * The ProductCategory member.\n */\n ProductCategory = 2,\n \n /**\n * The ProductRootCategory member.\n */\n ProductRootCategory = 3\n }\n \n /**\n * DiscountLineType enum type.\n */\n export enum DiscountLineType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The CustomerDiscount member.\n */\n CustomerDiscount = 1,\n \n /**\n * The PeriodicDiscount member.\n */\n PeriodicDiscount = 2,\n \n /**\n * The ManualDiscount member.\n */\n ManualDiscount = 3,\n \n /**\n * The LoyaltyDiscount member.\n */\n LoyaltyDiscount = 4,\n \n /**\n * The TenderTypeDiscount member.\n */\n TenderTypeDiscount = 5\n }\n \n /**\n * ManualDiscountType enum type.\n */\n export enum ManualDiscountType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The LineDiscountAmount member.\n */\n LineDiscountAmount = 1,\n \n /**\n * The LineDiscountPercent member.\n */\n LineDiscountPercent = 2,\n \n /**\n * The TotalDiscountAmount member.\n */\n TotalDiscountAmount = 3,\n \n /**\n * The TotalDiscountPercent member.\n */\n TotalDiscountPercent = 4\n }\n \n /**\n * CustomerDiscountType enum type.\n */\n export enum CustomerDiscountType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The LineDiscount member.\n */\n LineDiscount = 1,\n \n /**\n * The MultilineDiscount member.\n */\n MultilineDiscount = 2,\n \n /**\n * The TotalDiscount member.\n */\n TotalDiscount = 3\n }\n \n /**\n * ReasonCodeInputType enum type.\n */\n export enum ReasonCodeInputType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The SubCode member.\n */\n SubCode = 1,\n \n /**\n * The Date member.\n */\n Date = 2,\n \n /**\n * The Numeric member.\n */\n Numeric = 3,\n \n /**\n * The Item member.\n */\n Item = 4,\n \n /**\n * The Customer member.\n */\n Customer = 5,\n \n /**\n * The Staff member.\n */\n Staff = 6,\n \n /**\n * The Text member.\n */\n Text = 9,\n \n /**\n * The SubCodeButtons member.\n */\n SubCodeButtons = 10,\n \n /**\n * The AgeLimit member.\n */\n AgeLimit = 11,\n \n /**\n * The CompositeSubCodes member.\n */\n CompositeSubCodes = 12\n }\n \n /**\n * ReasonCodeLineType enum type.\n */\n export enum ReasonCodeLineType {\n \n /**\n * The Header member.\n */\n Header = 0,\n \n /**\n * The Sales member.\n */\n Sales = 1,\n \n /**\n * The Payment member.\n */\n Payment = 2,\n \n /**\n * The IncomeExpense member.\n */\n IncomeExpense = 3,\n \n /**\n * The NoSale member.\n */\n NoSale = 4,\n \n /**\n * The Affiliation member.\n */\n Affiliation = 5,\n \n /**\n * The Fiscal member.\n */\n Fiscal = 6\n }\n \n /**\n * ChargeModule enum type.\n */\n export enum ChargeModule {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Sales member.\n */\n Sales = 1,\n \n /**\n * The Retail member.\n */\n Retail = 3\n }\n \n /**\n * ChargeType enum type.\n */\n export enum ChargeType {\n \n /**\n * The ManualCharge member.\n */\n ManualCharge = 0,\n \n /**\n * The PriceCharge member.\n */\n PriceCharge = 1,\n \n /**\n * The AutoCharge member.\n */\n AutoCharge = 2\n }\n \n /**\n * ChargeMethod enum type.\n */\n export enum ChargeMethod {\n \n /**\n * The Fixed member.\n */\n Fixed = 0,\n \n /**\n * The Pieces member.\n */\n Pieces = 1,\n \n /**\n * The Percent member.\n */\n Percent = 2,\n \n /**\n * The InterCompanyPercent member.\n */\n InterCompanyPercent = 3,\n \n /**\n * The External member.\n */\n External = 4,\n \n /**\n * The Proportional member.\n */\n Proportional = 5\n }\n \n /**\n * CashType enum type.\n */\n export enum CashType {\n \n /**\n * The Coin member.\n */\n Coin = 0,\n \n /**\n * The Note member.\n */\n Note = 1\n }\n \n /**\n * IncomeExpenseAccountType enum type.\n */\n export enum IncomeExpenseAccountType {\n \n /**\n * The Income member.\n */\n Income = 0,\n \n /**\n * The Expense member.\n */\n Expense = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * TenderLineStatus enum type.\n */\n export enum TenderLineStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NotProcessed member.\n */\n NotProcessed = 1,\n \n /**\n * The PendingCommit member.\n */\n PendingCommit = 2,\n \n /**\n * The Voided member.\n */\n Voided = 3,\n \n /**\n * The Committed member.\n */\n Committed = 4,\n \n /**\n * The Historical member.\n */\n Historical = 5\n }\n \n /**\n * TenderLineVoidStatus enum type.\n */\n export enum TenderLineVoidStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NormalVoid member.\n */\n NormalVoid = 1,\n \n /**\n * The ForceVoided member.\n */\n ForceVoided = 2,\n \n /**\n * The ForceVoidReconciled member.\n */\n ForceVoidReconciled = 3\n }\n \n /**\n * PaymentProcessingType enum type.\n */\n export enum PaymentProcessingType {\n \n /**\n * The Immediate member.\n */\n Immediate = 0,\n \n /**\n * The Deferred member.\n */\n Deferred = 1,\n \n /**\n * The LinkedRefund member.\n */\n LinkedRefund = 2,\n \n /**\n * The Recalled member.\n */\n Recalled = 3\n }\n \n /**\n * CreditCardProcessorStatus enum type.\n */\n export enum CreditCardProcessorStatus {\n \n /**\n * The NA member.\n */\n NA = 0,\n \n /**\n * The Approved member.\n */\n Approved = 1,\n \n /**\n * The Declined member.\n */\n Declined = 2,\n \n /**\n * The Error member.\n */\n Error = 3\n }\n \n /**\n * ContactInformationType enum type.\n */\n export enum ContactInformationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Phone member.\n */\n Phone = 1,\n \n /**\n * The Email member.\n */\n Email = 2,\n \n /**\n * The Url member.\n */\n Url = 3,\n \n /**\n * The Telex member.\n */\n Telex = 4,\n \n /**\n * The Fax member.\n */\n Fax = 5,\n \n /**\n * The CellularPhone member.\n */\n CellularPhone = 6\n }\n \n /**\n * CommerceEntityDataLevel enum type.\n */\n export enum CommerceEntityDataLevel {\n \n /**\n * The Identity member.\n */\n Identity = 0,\n \n /**\n * The Minimal member.\n */\n Minimal = 1,\n \n /**\n * The Standard member.\n */\n Standard = 2,\n \n /**\n * The Extended member.\n */\n Extended = 3,\n \n /**\n * The Complete member.\n */\n Complete = 4\n }\n \n /**\n * ProductPropertyType enum type.\n */\n export enum ProductPropertyType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Currency member.\n */\n Currency = 1,\n \n /**\n * The DateTime member.\n */\n DateTime = 2,\n \n /**\n * The Decimal member.\n */\n Decimal = 3,\n \n /**\n * The Integer member.\n */\n Integer = 4,\n \n /**\n * The Text member.\n */\n Text = 5,\n \n /**\n * The Boolean member.\n */\n Boolean = 6,\n \n /**\n * The Video member.\n */\n Video = 40,\n \n /**\n * The Image member.\n */\n Image = 41\n }\n \n /**\n * AttributeGroupType enum type.\n */\n export enum AttributeGroupType {\n \n /**\n * The Default member.\n */\n Default = 0,\n \n /**\n * The Specification member.\n */\n Specification = 1\n }\n \n /**\n * ProductSource enum type.\n */\n export enum ProductSource {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Local member.\n */\n Local = 1,\n \n /**\n * The Remote member.\n */\n Remote = 2\n }\n \n /**\n * RoundingMethod enum type.\n */\n export enum RoundingMethod {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Nearest member.\n */\n Nearest = 1,\n \n /**\n * The Up member.\n */\n Up = 2,\n \n /**\n * The Down member.\n */\n Down = 3\n }\n \n /**\n * LineMultilineDiscountOnItem enum type.\n */\n export enum LineMultilineDiscountOnItem {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Line member.\n */\n Line = 1,\n \n /**\n * The Multiline member.\n */\n Multiline = 2,\n \n /**\n * The Both member.\n */\n Both = 3\n }\n \n /**\n * LoyaltyRewardPointEntryType enum type.\n */\n export enum LoyaltyRewardPointEntryType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Earn member.\n */\n Earn = 1,\n \n /**\n * The Redeem member.\n */\n Redeem = 2,\n \n /**\n * The ReturnEarned member.\n */\n ReturnEarned = 3,\n \n /**\n * The Adjust member.\n */\n Adjust = 4,\n \n /**\n * The Refund member.\n */\n Refund = 5\n }\n \n /**\n * LoyaltyRewardPointType enum type.\n */\n export enum LoyaltyRewardPointType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Quantity member.\n */\n Quantity = 1,\n \n /**\n * The Amount member.\n */\n Amount = 2\n }\n \n /**\n * TransactionType enum type.\n */\n export enum TransactionType {\n \n /**\n * The LogOff member.\n */\n LogOff = 0,\n \n /**\n * The LogOn member.\n */\n LogOn = 1,\n \n /**\n * The Sales member.\n */\n Sales = 2,\n \n /**\n * The Payment member.\n */\n Payment = 3,\n \n /**\n * The RemoveTender member.\n */\n RemoveTender = 4,\n \n /**\n * The FloatEntry member.\n */\n FloatEntry = 5,\n \n /**\n * The ChangeTender member.\n */\n ChangeTender = 6,\n \n /**\n * The TenderDeclaration member.\n */\n TenderDeclaration = 7,\n \n /**\n * The OpenDrawer member.\n */\n OpenDrawer = 9,\n \n /**\n * The SalesOrder member.\n */\n SalesOrder = 14,\n \n /**\n * The SalesInvoice member.\n */\n SalesInvoice = 15,\n \n /**\n * The BankDrop member.\n */\n BankDrop = 16,\n \n /**\n * The SafeDrop member.\n */\n SafeDrop = 17,\n \n /**\n * The IncomeExpense member.\n */\n IncomeExpense = 18,\n \n /**\n * The CustomerOrder member.\n */\n CustomerOrder = 19,\n \n /**\n * The StartingAmount member.\n */\n StartingAmount = 20,\n \n /**\n * The SuspendShift member.\n */\n SuspendShift = 21,\n \n /**\n * The BlindCloseShift member.\n */\n BlindCloseShift = 22,\n \n /**\n * The CloseShift member.\n */\n CloseShift = 23,\n \n /**\n * The PrintX member.\n */\n PrintX = 24,\n \n /**\n * The PrintZ member.\n */\n PrintZ = 25,\n \n /**\n * The PendingSalesOrder member.\n */\n PendingSalesOrder = 27,\n \n /**\n * The KitDisassembly member.\n */\n KitDisassembly = 28,\n \n /**\n * The AsyncCustomerQuote member.\n */\n AsyncCustomerQuote = 31,\n \n /**\n * The AsyncCustomerOrder member.\n */\n AsyncCustomerOrder = 33,\n \n /**\n * The ForceDeleteShift member.\n */\n ForceDeleteShift = 34,\n \n /**\n * The GiftCardInquiry member.\n */\n GiftCardInquiry = 35,\n \n /**\n * The SuspendedTransaction member.\n */\n SuspendedTransaction = 36,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * CashManagementTransactionContext enum type.\n */\n export enum CashManagementTransactionContext {\n \n /**\n * The Unknown member.\n */\n Unknown = 0,\n \n /**\n * The Shift member.\n */\n Shift = 1,\n \n /**\n * The Safe member.\n */\n Safe = 2,\n \n /**\n * The Bank member.\n */\n Bank = 3\n }\n \n /**\n * CustomerTimelineItemEntityType enum type.\n */\n export enum CustomerTimelineItemEntityType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Activity member.\n */\n Activity = 1,\n \n /**\n * The Note member.\n */\n Note = 2,\n \n /**\n * The UnifiedActivity member.\n */\n UnifiedActivity = 3\n }\n \n /**\n * EmployeePermissionsAllowPrintingReceiptCopy enum type.\n */\n export enum EmployeePermissionsAllowPrintingReceiptCopy {\n \n /**\n * The Always member.\n */\n Always = 0,\n \n /**\n * The OnlyOnce member.\n */\n OnlyOnce = 1,\n \n /**\n * The OnlyOnceHqAvailable member.\n */\n OnlyOnceHqAvailable = 2,\n \n /**\n * The Never member.\n */\n Never = 3\n }\n \n /**\n * AddressFormatLineType enum type.\n */\n export enum AddressFormatLineType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ZipCode member.\n */\n ZipCode = 1,\n \n /**\n * The City member.\n */\n City = 2,\n \n /**\n * The County member.\n */\n County = 3,\n \n /**\n * The State member.\n */\n State = 4,\n \n /**\n * The CountryRegion member.\n */\n CountryRegion = 5,\n \n /**\n * The StreetName member.\n */\n StreetName = 6,\n \n /**\n * The District member.\n */\n District = 7,\n \n /**\n * The StreetNumber member.\n */\n StreetNumber = 8,\n \n /**\n * The BuildingCompliment member.\n */\n BuildingCompliment = 9,\n \n /**\n * The Postbox member.\n */\n Postbox = 10,\n \n /**\n * The House_RU member.\n */\n House_RU = 21,\n \n /**\n * The Flat_RU member.\n */\n Flat_RU = 22,\n \n /**\n * The CountryOKSMCode_RU member.\n */\n CountryOKSMCode_RU = 23\n }\n \n /**\n * StatementMethod enum type.\n */\n export enum StatementMethod {\n \n /**\n * The Staff member.\n */\n Staff = 0,\n \n /**\n * The PosTerminal member.\n */\n PosTerminal = 1,\n \n /**\n * The Total member.\n */\n Total = 2,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * SalesRepPromptType enum type.\n */\n export enum SalesRepPromptType {\n \n /**\n * The NoPrompt member.\n */\n NoPrompt = 0,\n \n /**\n * The PromptOnCartCreation member.\n */\n PromptOnCartCreation = 1,\n \n /**\n * The PromptOnCartLineCreation member.\n */\n PromptOnCartLineCreation = 2,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * RetailProductSearchType enum type.\n */\n export enum RetailProductSearchType {\n \n /**\n * The MatchAnySearchTerms member.\n */\n MatchAnySearchTerms = 0,\n \n /**\n * The MatchAllSearchTerms member.\n */\n MatchAllSearchTerms = 1\n }\n \n /**\n * RetailDenominationsToDisplay enum type.\n */\n export enum RetailDenominationsToDisplay {\n \n /**\n * The GreaterOrEqualToAmountDue member.\n */\n GreaterOrEqualToAmountDue = 0,\n \n /**\n * The AllDenominations member.\n */\n AllDenominations = 1\n }\n \n /**\n * EmployeeLogonType enum type.\n */\n export enum EmployeeLogonType {\n \n /**\n * The RetailIdentityProvider member.\n */\n RetailIdentityProvider = 0,\n \n /**\n * The AzureActiveDirectory member.\n */\n AzureActiveDirectory = 1,\n \n /**\n * The AzureActiveDirectorySingleSignOn member.\n */\n AzureActiveDirectorySingleSignOn = 2\n }\n \n /**\n * RetailCustomerSearchMode enum type.\n */\n export enum RetailCustomerSearchMode {\n \n /**\n * The Local member.\n */\n Local = 0,\n \n /**\n * The Remote member.\n */\n Remote = 1\n }\n \n /**\n * RequirePaymentForFulfillment enum type.\n */\n export enum RequirePaymentForFulfillment {\n \n /**\n * The AllowPayLater member.\n */\n AllowPayLater = 0,\n \n /**\n * The CardRequired member.\n */\n CardRequired = 1\n }\n \n /**\n * CardNotPresentProcessingConfiguration enum type.\n */\n export enum CardNotPresentProcessingConfiguration {\n \n /**\n * The UseHardwareStation member.\n */\n UseHardwareStation = 0,\n \n /**\n * The UseCommerceEngine member.\n */\n UseCommerceEngine = 1\n }\n \n /**\n * ChangeDueBehavior enum type.\n */\n export enum ChangeDueBehavior {\n \n /**\n * The ShowAlways member.\n */\n ShowAlways = 0,\n \n /**\n * The SkipWhenZero member.\n */\n SkipWhenZero = 1\n }\n \n /**\n * FontSchemeType enum type.\n */\n export enum FontSchemeType {\n \n /**\n * The Standard member.\n */\n Standard = 0,\n \n /**\n * The Large member.\n */\n Large = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * DeviceActivationStatus enum type.\n */\n export enum DeviceActivationStatus {\n \n /**\n * The Pending member.\n */\n Pending = 0,\n \n /**\n * The Activated member.\n */\n Activated = 1,\n \n /**\n * The Deactivated member.\n */\n Deactivated = 2,\n \n /**\n * The Disabled member.\n */\n Disabled = 3,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * DeviceType enum type.\n */\n export enum DeviceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The OPOS member.\n */\n OPOS = 1,\n \n /**\n * The WindowsPrinter member.\n */\n WindowsPrinter = 2,\n \n /**\n * The Network member.\n */\n Network = 3\n }\n \n /**\n * DualDisplayType enum type.\n */\n export enum DualDisplayType {\n \n /**\n * The Logo member.\n */\n Logo = 0,\n \n /**\n * The ImageRotator member.\n */\n ImageRotator = 1,\n \n /**\n * The WebBrowser member.\n */\n WebBrowser = 2,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * FiscalRegisterType enum type.\n */\n export enum FiscalRegisterType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Manufacturer member.\n */\n Manufacturer = 1\n }\n \n /**\n * PrinterLogotype enum type.\n */\n export enum PrinterLogotype {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Download member.\n */\n Download = 1,\n \n /**\n * The EpsonFlash member.\n */\n EpsonFlash = 2\n }\n \n /**\n * PrinterLogoAlignmentType enum type.\n */\n export enum PrinterLogoAlignmentType {\n \n /**\n * The Left member.\n */\n Left = 0,\n \n /**\n * The Center member.\n */\n Center = 1,\n \n /**\n * The Right member.\n */\n Right = 2,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * FiscalIntegrationConnectorType enum type.\n */\n export enum FiscalIntegrationConnectorType {\n \n /**\n * The Local member.\n */\n Local = 0,\n \n /**\n * The External member.\n */\n External = 1,\n \n /**\n * The Internal member.\n */\n Internal = 2\n }\n \n /**\n * FiscalIntegrationConnectorLocation enum type.\n */\n export enum FiscalIntegrationConnectorLocation {\n \n /**\n * The HardwareStation member.\n */\n HardwareStation = 0,\n \n /**\n * The Pos member.\n */\n Pos = 1\n }\n \n /**\n * ReceiptType enum type.\n */\n export enum ReceiptType {\n \n /**\n * The Unknown member.\n */\n Unknown = 0,\n \n /**\n * The SalesReceipt member.\n */\n SalesReceipt = 1,\n \n /**\n * The CardReceiptForShop member.\n */\n CardReceiptForShop = 2,\n \n /**\n * The CardReceiptForCustomer member.\n */\n CardReceiptForCustomer = 3,\n \n /**\n * The CardReceiptForShopReturn member.\n */\n CardReceiptForShopReturn = 4,\n \n /**\n * The CardReceiptForCustomerReturn member.\n */\n CardReceiptForCustomerReturn = 5,\n \n /**\n * The CustomerAccountReceiptForShop member.\n */\n CustomerAccountReceiptForShop = 7,\n \n /**\n * The CustomerAccountReceiptForCustomer member.\n */\n CustomerAccountReceiptForCustomer = 8,\n \n /**\n * The CustomerAccountReceiptForShopReturn member.\n */\n CustomerAccountReceiptForShopReturn = 9,\n \n /**\n * The CustomerAccountReceiptForCustomerReturn member.\n */\n CustomerAccountReceiptForCustomerReturn = 10,\n \n /**\n * The CustomerAccountDeposit member.\n */\n CustomerAccountDeposit = 14,\n \n /**\n * The CreditMemo member.\n */\n CreditMemo = 15,\n \n /**\n * The SalesOrderReceipt member.\n */\n SalesOrderReceipt = 18,\n \n /**\n * The GiftCertificate member.\n */\n GiftCertificate = 20,\n \n /**\n * The QuotationReceipt member.\n */\n QuotationReceipt = 21,\n \n /**\n * The PackingSlip member.\n */\n PackingSlip = 22,\n \n /**\n * The PickupReceipt member.\n */\n PickupReceipt = 23,\n \n /**\n * The XReport member.\n */\n XReport = 24,\n \n /**\n * The ZReport member.\n */\n ZReport = 25,\n \n /**\n * The SafeDrop member.\n */\n SafeDrop = 26,\n \n /**\n * The BankDrop member.\n */\n BankDrop = 27,\n \n /**\n * The TenderDeclaration member.\n */\n TenderDeclaration = 28,\n \n /**\n * The RemoveTender member.\n */\n RemoveTender = 29,\n \n /**\n * The FloatEntry member.\n */\n FloatEntry = 30,\n \n /**\n * The StartingAmount member.\n */\n StartingAmount = 31,\n \n /**\n * The OrderSummaryReceipt member.\n */\n OrderSummaryReceipt = 32,\n \n /**\n * The GiftReceipt member.\n */\n GiftReceipt = 33,\n \n /**\n * The ReturnLabel member.\n */\n ReturnLabel = 34,\n \n /**\n * The EFDocDANFESimplified member.\n */\n EFDocDANFESimplified = 35,\n \n /**\n * The EFDocDANFEDetailed member.\n */\n EFDocDANFEDetailed = 36,\n \n /**\n * The PickingList member.\n */\n PickingList = 37,\n \n /**\n * The OpenDrawer member.\n */\n OpenDrawer = 38,\n \n /**\n * The SuspendedTransaction member.\n */\n SuspendedTransaction = 39,\n \n /**\n * The GiftCardInquiry member.\n */\n GiftCardInquiry = 40,\n \n /**\n * The CardTerminationReceiptForShop member.\n */\n CardTerminationReceiptForShop = 41,\n \n /**\n * The CardTerminationReceiptForCustomer member.\n */\n CardTerminationReceiptForCustomer = 42,\n \n /**\n * The TransferPackingSlip member.\n */\n TransferPackingSlip = 43,\n \n /**\n * The EFDocDanfeModel55 member.\n */\n EFDocDanfeModel55 = 44,\n \n /**\n * The InventoryAdjustment member.\n */\n InventoryAdjustment = 45,\n \n /**\n * The InventoryTransfer member.\n */\n InventoryTransfer = 46,\n \n /**\n * The CfeDetailed member.\n */\n CfeDetailed = 47,\n \n /**\n * The CfeSimplified member.\n */\n CfeSimplified = 48,\n \n /**\n * The CfeCancelled member.\n */\n CfeCancelled = 49,\n \n /**\n * The CustomReceipt1 member.\n */\n CustomReceipt1 = 101,\n \n /**\n * The CustomReceipt2 member.\n */\n CustomReceipt2 = 102,\n \n /**\n * The CustomReceipt3 member.\n */\n CustomReceipt3 = 103,\n \n /**\n * The CustomReceipt4 member.\n */\n CustomReceipt4 = 104,\n \n /**\n * The CustomReceipt5 member.\n */\n CustomReceipt5 = 105,\n \n /**\n * The CustomReceipt6 member.\n */\n CustomReceipt6 = 106,\n \n /**\n * The CustomReceipt7 member.\n */\n CustomReceipt7 = 107,\n \n /**\n * The CustomReceipt8 member.\n */\n CustomReceipt8 = 108,\n \n /**\n * The CustomReceipt9 member.\n */\n CustomReceipt9 = 109,\n \n /**\n * The CustomReceipt10 member.\n */\n CustomReceipt10 = 110,\n \n /**\n * The CustomReceipt11 member.\n */\n CustomReceipt11 = 111,\n \n /**\n * The CustomReceipt12 member.\n */\n CustomReceipt12 = 112,\n \n /**\n * The CustomReceipt13 member.\n */\n CustomReceipt13 = 113,\n \n /**\n * The CustomReceipt14 member.\n */\n CustomReceipt14 = 114,\n \n /**\n * The CustomReceipt15 member.\n */\n CustomReceipt15 = 115,\n \n /**\n * The CustomReceipt16 member.\n */\n CustomReceipt16 = 116,\n \n /**\n * The CustomReceipt17 member.\n */\n CustomReceipt17 = 117,\n \n /**\n * The CustomReceipt18 member.\n */\n CustomReceipt18 = 118,\n \n /**\n * The CustomReceipt19 member.\n */\n CustomReceipt19 = 119,\n \n /**\n * The CustomReceipt20 member.\n */\n CustomReceipt20 = 120\n }\n \n /**\n * PrintBehavior enum type.\n */\n export enum PrintBehavior {\n \n /**\n * The Always member.\n */\n Always = 0,\n \n /**\n * The Never member.\n */\n Never = 1,\n \n /**\n * The Prompt member.\n */\n Prompt = 2,\n \n /**\n * The AsRequired member.\n */\n AsRequired = 3\n }\n \n /**\n * DistanceUnit enum type.\n */\n export enum DistanceUnit {\n \n /**\n * The Miles member.\n */\n Miles = 0,\n \n /**\n * The Kilometers member.\n */\n Kilometers = 1\n }\n \n /**\n * StockCountStatus enum type.\n */\n export enum StockCountStatus {\n \n /**\n * The Unchanged member.\n */\n Unchanged = 0,\n \n /**\n * The PendingUpdate member.\n */\n PendingUpdate = 1\n }\n \n /**\n * RecommendedElementType enum type.\n */\n export enum RecommendedElementType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Product member.\n */\n Product = 1,\n \n /**\n * The Content member.\n */\n Content = 2\n }\n \n /**\n * CommerceListInvitationStatus enum type.\n */\n export enum CommerceListInvitationStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Pending member.\n */\n Pending = 1,\n \n /**\n * The Accepted member.\n */\n Accepted = 2\n }\n \n /**\n * CommerceListInvitationType enum type.\n */\n export enum CommerceListInvitationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Public member.\n */\n Public = 1,\n \n /**\n * The Email member.\n */\n Email = 2\n }\n \n /**\n * SearchLocation enum type.\n */\n export enum SearchLocation {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Local member.\n */\n Local = 1,\n \n /**\n * The Remote member.\n */\n Remote = 2,\n \n /**\n * The All member.\n */\n All = 3\n }\n \n /**\n * OrderSearchType enum type.\n */\n export enum OrderSearchType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The SalesOrder member.\n */\n SalesOrder = 1,\n \n /**\n * The SalesTransaction member.\n */\n SalesTransaction = 2,\n \n /**\n * The ConsolidateOrder member.\n */\n ConsolidateOrder = 3\n }\n \n /**\n * SalesTransactionType enum type.\n */\n export enum SalesTransactionType {\n \n /**\n * The Sales member.\n */\n Sales = 2,\n \n /**\n * The CustomerAccountDeposit member.\n */\n CustomerAccountDeposit = 3,\n \n /**\n * The SalesInvoice member.\n */\n SalesInvoice = 15,\n \n /**\n * The IncomeExpense member.\n */\n IncomeExpense = 18,\n \n /**\n * The CustomerOrder member.\n */\n CustomerOrder = 19,\n \n /**\n * The PendingSalesOrder member.\n */\n PendingSalesOrder = 27,\n \n /**\n * The AsyncCustomerQuote member.\n */\n AsyncCustomerQuote = 31,\n \n /**\n * The AsyncCustomerOrder member.\n */\n AsyncCustomerOrder = 33,\n \n /**\n * The SuspendedTransaction member.\n */\n SuspendedTransaction = 36,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * CustomerRefinerSource enum type.\n */\n export enum CustomerRefinerSource {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Attribute member.\n */\n Attribute = 1,\n \n /**\n * The CustomerSearchField member.\n */\n CustomerSearchField = 2\n }\n \n /**\n * PriceSourceType enum type.\n */\n export enum PriceSourceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The BasePrice member.\n */\n BasePrice = 1,\n \n /**\n * The TradeAgreement member.\n */\n TradeAgreement = 2,\n \n /**\n * The PriceAdjustment member.\n */\n PriceAdjustment = 3,\n \n /**\n * The SalesAgreement member.\n */\n SalesAgreement = 4\n }\n \n /**\n * RetailAffiliationType enum type.\n */\n export enum RetailAffiliationType {\n \n /**\n * The General member.\n */\n General = 0,\n \n /**\n * The Loyalty member.\n */\n Loyalty = 1,\n \n /**\n * The Unknown member.\n */\n Unknown = -1\n }\n \n /**\n * InventoryDocumentLineOriginType enum type.\n */\n export enum InventoryDocumentLineOriginType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Headquarters member.\n */\n Headquarters = 1,\n \n /**\n * The Channel member.\n */\n Channel = 2\n }\n \n /**\n * InventorySerialNumberLineStatus enum type.\n */\n export enum InventorySerialNumberLineStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NotRegistered member.\n */\n NotRegistered = 1,\n \n /**\n * The Registering member.\n */\n Registering = 2,\n \n /**\n * The Registered member.\n */\n Registered = 3\n }\n \n /**\n * InventorySourceDocumentLineStatus enum type.\n */\n export enum InventorySourceDocumentLineStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Deleted member.\n */\n Deleted = 1,\n \n /**\n * The ReadOnly member.\n */\n ReadOnly = 2\n }\n \n /**\n * RetailOperation enum type.\n */\n export enum RetailOperation {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ItemSale member.\n */\n ItemSale = 100,\n \n /**\n * The PriceCheck member.\n */\n PriceCheck = 101,\n \n /**\n * The VoidItem member.\n */\n VoidItem = 102,\n \n /**\n * The ItemComment member.\n */\n ItemComment = 103,\n \n /**\n * The PriceOverride member.\n */\n PriceOverride = 104,\n \n /**\n * The SetQuantity member.\n */\n SetQuantity = 105,\n \n /**\n * The ClearQuantity member.\n */\n ClearQuantity = 106,\n \n /**\n * The ItemSearch member.\n */\n ItemSearch = 108,\n \n /**\n * The ReturnItem member.\n */\n ReturnItem = 109,\n \n /**\n * The WeighItem member.\n */\n WeighItem = 110,\n \n /**\n * The LinkedItemsAdd member.\n */\n LinkedItemsAdd = 112,\n \n /**\n * The SetDimensions member.\n */\n SetDimensions = 113,\n \n /**\n * The ReturnTransaction member.\n */\n ReturnTransaction = 114,\n \n /**\n * The ShowJournal member.\n */\n ShowJournal = 115,\n \n /**\n * The SetCostPrice member.\n */\n SetCostPrice = 116,\n \n /**\n * The LoyaltyRequest member.\n */\n LoyaltyRequest = 117,\n \n /**\n * The ProcessInput member.\n */\n ProcessInput = 118,\n \n /**\n * The SalespersonBarcode member.\n */\n SalespersonBarcode = 119,\n \n /**\n * The SalespersonCard member.\n */\n SalespersonCard = 120,\n \n /**\n * The SalespersonClear member.\n */\n SalespersonClear = 121,\n \n /**\n * The InvoiceComment member.\n */\n InvoiceComment = 122,\n \n /**\n * The ChangeUnitOfMeasure member.\n */\n ChangeUnitOfMeasure = 123,\n \n /**\n * The ItemSaleMultiple member.\n */\n ItemSaleMultiple = 124,\n \n /**\n * The RFIDSale member.\n */\n RFIDSale = 125,\n \n /**\n * The SalesHistory member.\n */\n SalesHistory = 126,\n \n /**\n * The OverrideTaxTransaction member.\n */\n OverrideTaxTransaction = 127,\n \n /**\n * The OverrideTaxTransactionList member.\n */\n OverrideTaxTransactionList = 128,\n \n /**\n * The OverrideTaxLine member.\n */\n OverrideTaxLine = 129,\n \n /**\n * The OverrideTaxLineList member.\n */\n OverrideTaxLineList = 130,\n \n /**\n * The PackSlip member.\n */\n PackSlip = 131,\n \n /**\n * The DepositOverride member.\n */\n DepositOverride = 132,\n \n /**\n * The BuyWarranty member.\n */\n BuyWarranty = 133,\n \n /**\n * The AddAffiliation member.\n */\n AddAffiliation = 134,\n \n /**\n * The AddAffiliationFromList member.\n */\n AddAffiliationFromList = 135,\n \n /**\n * The AddSerialNumber member.\n */\n AddSerialNumber = 136,\n \n /**\n * The AddAffiliationToCustomer member.\n */\n AddAffiliationToCustomer = 137,\n \n /**\n * The RemoveAffiliationFromCustomer member.\n */\n RemoveAffiliationFromCustomer = 138,\n \n /**\n * The ConcludeTransaction member.\n */\n ConcludeTransaction = 139,\n \n /**\n * The AddLineCharge member.\n */\n AddLineCharge = 140,\n \n /**\n * The AddHeaderCharge member.\n */\n AddHeaderCharge = 141,\n \n /**\n * The ManageCharges member.\n */\n ManageCharges = 142,\n \n /**\n * The RecalculateCharges member.\n */\n RecalculateCharges = 143,\n \n /**\n * The AddWarrantyToAnExistingTransaction member.\n */\n AddWarrantyToAnExistingTransaction = 144,\n \n /**\n * The PayCash member.\n */\n PayCash = 200,\n \n /**\n * The PayCard member.\n */\n PayCard = 201,\n \n /**\n * The PayCustomerAccount member.\n */\n PayCustomerAccount = 202,\n \n /**\n * The PayCurrency member.\n */\n PayCurrency = 203,\n \n /**\n * The PayCheck member.\n */\n PayCheck = 204,\n \n /**\n * The PayCashQuick member.\n */\n PayCashQuick = 206,\n \n /**\n * The PayLoyalty member.\n */\n PayLoyalty = 207,\n \n /**\n * The PayCorporateCard member.\n */\n PayCorporateCard = 208,\n \n /**\n * The ChangeBack member.\n */\n ChangeBack = 210,\n \n /**\n * The VoidPayment member.\n */\n VoidPayment = 211,\n \n /**\n * The FleetCardInfo member.\n */\n FleetCardInfo = 212,\n \n /**\n * The PayCreditMemo member.\n */\n PayCreditMemo = 213,\n \n /**\n * The PayGiftCertificate member.\n */\n PayGiftCertificate = 214,\n \n /**\n * The CashOutGiftCard member.\n */\n CashOutGiftCard = 215,\n \n /**\n * The PayCardExact member.\n */\n PayCardExact = 216,\n \n /**\n * The PayCheckExact member.\n */\n PayCheckExact = 217,\n \n /**\n * The PayCustomerAccountExact member.\n */\n PayCustomerAccountExact = 218,\n \n /**\n * The PayGiftCardExact member.\n */\n PayGiftCardExact = 219,\n \n /**\n * The PayLoyaltyCardExact member.\n */\n PayLoyaltyCardExact = 220,\n \n /**\n * The LineDiscountAmount member.\n */\n LineDiscountAmount = 300,\n \n /**\n * The LineDiscountPercent member.\n */\n LineDiscountPercent = 301,\n \n /**\n * The TotalDiscountAmount member.\n */\n TotalDiscountAmount = 302,\n \n /**\n * The TotalDiscountPercent member.\n */\n TotalDiscountPercent = 303,\n \n /**\n * The DiscountCodeBarcode member.\n */\n DiscountCodeBarcode = 304,\n \n /**\n * The CalculateFullDiscounts member.\n */\n CalculateFullDiscounts = 310,\n \n /**\n * The RemovePeriodicDiscountsFromTransaction member.\n */\n RemovePeriodicDiscountsFromTransaction = 311,\n \n /**\n * The RecalculatePeriodicDiscounts member.\n */\n RecalculatePeriodicDiscounts = 312,\n \n /**\n * The PopupMenu member.\n */\n PopupMenu = 400,\n \n /**\n * The Submenu member.\n */\n Submenu = 401,\n \n /**\n * The VoidTransaction member.\n */\n VoidTransaction = 500,\n \n /**\n * The TransactionComment member.\n */\n TransactionComment = 501,\n \n /**\n * The SalesPerson member.\n */\n SalesPerson = 502,\n \n /**\n * The SuspendTransaction member.\n */\n SuspendTransaction = 503,\n \n /**\n * The RecallTransaction member.\n */\n RecallTransaction = 504,\n \n /**\n * The RecallUnconcludedTransaction member.\n */\n RecallUnconcludedTransaction = 505,\n \n /**\n * The CardSwipe member.\n */\n CardSwipe = 506,\n \n /**\n * The PharmacyPrescriptionAdd member.\n */\n PharmacyPrescriptionAdd = 507,\n \n /**\n * The PharmacyPrescriptionCancel member.\n */\n PharmacyPrescriptionCancel = 508,\n \n /**\n * The PharmacyPrescriptionPaid member.\n */\n PharmacyPrescriptionPaid = 509,\n \n /**\n * The PharmacyPrescriptions member.\n */\n PharmacyPrescriptions = 510,\n \n /**\n * The IssueCreditMemo member.\n */\n IssueCreditMemo = 511,\n \n /**\n * The IssueGiftCertificate member.\n */\n IssueGiftCertificate = 512,\n \n /**\n * The DisplayTotal member.\n */\n DisplayTotal = 513,\n \n /**\n * The RecallSalesOrder member.\n */\n RecallSalesOrder = 515,\n \n /**\n * The SalesInvoice member.\n */\n SalesInvoice = 516,\n \n /**\n * The IncomeAccounts member.\n */\n IncomeAccounts = 517,\n \n /**\n * The ExpenseAccounts member.\n */\n ExpenseAccounts = 518,\n \n /**\n * The AddToGiftCard member.\n */\n AddToGiftCard = 519,\n \n /**\n * The GiftCardBalance member.\n */\n GiftCardBalance = 520,\n \n /**\n * The LoyaltyCardPointsBalance member.\n */\n LoyaltyCardPointsBalance = 521,\n \n /**\n * The CashChangerRegisterAmount member.\n */\n CashChangerRegisterAmount = 550,\n \n /**\n * The CashChangerReset member.\n */\n CashChangerReset = 551,\n \n /**\n * The CashChangerRegret member.\n */\n CashChangerRegret = 552,\n \n /**\n * The CashChangerExit member.\n */\n CashChangerExit = 553,\n \n /**\n * The CashChangerChange member.\n */\n CashChangerChange = 554,\n \n /**\n * The CashChangerLogOn member.\n */\n CashChangerLogOn = 555,\n \n /**\n * The CashChangerInit member.\n */\n CashChangerInit = 556,\n \n /**\n * The SetCustomer member.\n */\n SetCustomer = 600,\n \n /**\n * The CustomerSearch member.\n */\n CustomerSearch = 602,\n \n /**\n * The CustomerClear member.\n */\n CustomerClear = 603,\n \n /**\n * The CustomerCard member.\n */\n CustomerCard = 604,\n \n /**\n * The CustomerTransactions member.\n */\n CustomerTransactions = 609,\n \n /**\n * The CustomerTransactionsReport member.\n */\n CustomerTransactionsReport = 610,\n \n /**\n * The CustomerBalanceReport member.\n */\n CustomerBalanceReport = 611,\n \n /**\n * The CustomerAdd member.\n */\n CustomerAdd = 612,\n \n /**\n * The CustomerBarcode member.\n */\n CustomerBarcode = 613,\n \n /**\n * The EditCustomerOrder member.\n */\n EditCustomerOrder = 614,\n \n /**\n * The EditQuotation member.\n */\n EditQuotation = 615,\n \n /**\n * The CreateCustomerOrder member.\n */\n CreateCustomerOrder = 620,\n \n /**\n * The CreateQuotation member.\n */\n CreateQuotation = 621,\n \n /**\n * The Search member.\n */\n Search = 622,\n \n /**\n * The CustomerEdit member.\n */\n CustomerEdit = 623,\n \n /**\n * The LoyaltyIssueCard member.\n */\n LoyaltyIssueCard = 625,\n \n /**\n * The RecalculateCustomerOrder member.\n */\n RecalculateCustomerOrder = 627,\n \n /**\n * The ShipSelectedProducts member.\n */\n ShipSelectedProducts = 629,\n \n /**\n * The ShipAllProducts member.\n */\n ShipAllProducts = 630,\n \n /**\n * The PickupSelectedProducts member.\n */\n PickupSelectedProducts = 631,\n \n /**\n * The PickupAllProducts member.\n */\n PickupAllProducts = 632,\n \n /**\n * The SetQuotationExpirationDate member.\n */\n SetQuotationExpirationDate = 633,\n \n /**\n * The PaymentsHistory member.\n */\n PaymentsHistory = 634,\n \n /**\n * The ReturnChargesOverride member.\n */\n ReturnChargesOverride = 635,\n \n /**\n * The CreateRetailTransaction member.\n */\n CreateRetailTransaction = 636,\n \n /**\n * The SetCommissionSalesGroupOnTransaction member.\n */\n SetCommissionSalesGroupOnTransaction = 637,\n \n /**\n * The SetCommissionSalesGroupOnLine member.\n */\n SetCommissionSalesGroupOnLine = 638,\n \n /**\n * The ClearCommissionSalesGroupOnTransaction member.\n */\n ClearCommissionSalesGroupOnTransaction = 639,\n \n /**\n * The ClearCommissionSalesGroupOnLine member.\n */\n ClearCommissionSalesGroupOnLine = 640,\n \n /**\n * The CarryoutSelectedProducts member.\n */\n CarryoutSelectedProducts = 641,\n \n /**\n * The CarryoutAllProducts member.\n */\n CarryoutAllProducts = 642,\n \n /**\n * The AddCoupons member.\n */\n AddCoupons = 643,\n \n /**\n * The RemoveCoupons member.\n */\n RemoveCoupons = 644,\n \n /**\n * The ViewAllDiscounts member.\n */\n ViewAllDiscounts = 645,\n \n /**\n * The ViewAvailableDiscounts member.\n */\n ViewAvailableDiscounts = 646,\n \n /**\n * The ChangeDeliveryMode member.\n */\n ChangeDeliveryMode = 647,\n \n /**\n * The CancelOrder member.\n */\n CancelOrder = 648,\n \n /**\n * The CreatePickingList member.\n */\n CreatePickingList = 649,\n \n /**\n * The PrintPackingSlip member.\n */\n PrintPackingSlip = 650,\n \n /**\n * The EditFulfillmentLine member.\n */\n EditFulfillmentLine = 651,\n \n /**\n * The AcceptFulfillmentLine member.\n */\n AcceptFulfillmentLine = 652,\n \n /**\n * The RejectFulfillmentLine member.\n */\n RejectFulfillmentLine = 653,\n \n /**\n * The PickFulfillmentLine member.\n */\n PickFulfillmentLine = 654,\n \n /**\n * The PackFulfillmentLine member.\n */\n PackFulfillmentLine = 655,\n \n /**\n * The ShipFulfillmentLine member.\n */\n ShipFulfillmentLine = 656,\n \n /**\n * The PickupFulfillmentLine member.\n */\n PickupFulfillmentLine = 657,\n \n /**\n * The ChangePickupLines member.\n */\n ChangePickupLines = 658,\n \n /**\n * The LogOn member.\n */\n LogOn = 700,\n \n /**\n * The LogOff member.\n */\n LogOff = 701,\n \n /**\n * The ChangeUser member.\n */\n ChangeUser = 702,\n \n /**\n * The LockTerminal member.\n */\n LockTerminal = 703,\n \n /**\n * The LogOffForce member.\n */\n LogOffForce = 704,\n \n /**\n * The EmployeeCard member.\n */\n EmployeeCard = 705,\n \n /**\n * The EmployeeBarcode member.\n */\n EmployeeBarcode = 706,\n \n /**\n * The ActivateDevice member.\n */\n ActivateDevice = 707,\n \n /**\n * The DeactivateDevice member.\n */\n DeactivateDevice = 708,\n \n /**\n * The ChangeHardwareStation member.\n */\n ChangeHardwareStation = 709,\n \n /**\n * The PairHardwareStation member.\n */\n PairHardwareStation = 710,\n \n /**\n * The MassActivateDevice member.\n */\n MassActivateDevice = 711,\n \n /**\n * The ViewMyClientBook member.\n */\n ViewMyClientBook = 712,\n \n /**\n * The ViewStoreClientBooks member.\n */\n ViewStoreClientBooks = 713,\n \n /**\n * The AddCustomerToClientBook member.\n */\n AddCustomerToClientBook = 714,\n \n /**\n * The RemoveCustomersFromClientBook member.\n */\n RemoveCustomersFromClientBook = 715,\n \n /**\n * The ReassignClientBookCustomers member.\n */\n ReassignClientBookCustomers = 716,\n \n /**\n * The HealthCheck member.\n */\n HealthCheck = 717,\n \n /**\n * The NegativeAdjustment member.\n */\n NegativeAdjustment = 800,\n \n /**\n * The InventoryLookup member.\n */\n InventoryLookup = 801,\n \n /**\n * The StockCount member.\n */\n StockCount = 802,\n \n /**\n * The PickingAndReceiving member.\n */\n PickingAndReceiving = 803,\n \n /**\n * The InboundInventory member.\n */\n InboundInventory = 804,\n \n /**\n * The OutboundInventory member.\n */\n OutboundInventory = 805,\n \n /**\n * The InventoryAdjustment member.\n */\n InventoryAdjustment = 806,\n \n /**\n * The InventoryMovement member.\n */\n InventoryMovement = 807,\n \n /**\n * The PostStockCounting member.\n */\n PostStockCounting = 808,\n \n /**\n * The ApplicationExit member.\n */\n ApplicationExit = 900,\n \n /**\n * The PrintTaxFree member.\n */\n PrintTaxFree = 906,\n \n /**\n * The PrintPreviousSlip member.\n */\n PrintPreviousSlip = 907,\n \n /**\n * The PrintPreviousInvoice member.\n */\n PrintPreviousInvoice = 908,\n \n /**\n * The UploadPrinterLogo member.\n */\n UploadPrinterLogo = 909,\n \n /**\n * The RestartComputer member.\n */\n RestartComputer = 910,\n \n /**\n * The ShutdownComputer member.\n */\n ShutdownComputer = 911,\n \n /**\n * The DesignModeEnable member.\n */\n DesignModeEnable = 912,\n \n /**\n * The DesignModeDisable member.\n */\n DesignModeDisable = 913,\n \n /**\n * The MinimizePOSWindow member.\n */\n MinimizePOSWindow = 914,\n \n /**\n * The BlankOperation member.\n */\n BlankOperation = 915,\n \n /**\n * The WindowsWorkflowOperation member.\n */\n WindowsWorkflowOperation = 916,\n \n /**\n * The DatabaseConnectionStatus member.\n */\n DatabaseConnectionStatus = 917,\n \n /**\n * The ShowBlindClosedShifts member.\n */\n ShowBlindClosedShifts = 918,\n \n /**\n * The ExtendedLogOn member.\n */\n ExtendedLogOn = 919,\n \n /**\n * The TimeRegistration member.\n */\n TimeRegistration = 920,\n \n /**\n * The ViewTimeClockEntries member.\n */\n ViewTimeClockEntries = 921,\n \n /**\n * The ViewProductDetails member.\n */\n ViewProductDetails = 922,\n \n /**\n * The ViewOrderFulfillmentLines member.\n */\n ViewOrderFulfillmentLines = 928,\n \n /**\n * The OpenDrawer member.\n */\n OpenDrawer = 1000,\n \n /**\n * The ViewReport member.\n */\n ViewReport = 1003,\n \n /**\n * The TenderDeclaration member.\n */\n TenderDeclaration = 1052,\n \n /**\n * The BlindCloseShift member.\n */\n BlindCloseShift = 1053,\n \n /**\n * The SuspendShift member.\n */\n SuspendShift = 1054,\n \n /**\n * The CloseShift member.\n */\n CloseShift = 1055,\n \n /**\n * The PrintX member.\n */\n PrintX = 1056,\n \n /**\n * The PrintZ member.\n */\n PrintZ = 1057,\n \n /**\n * The PrintFiscalX member.\n */\n PrintFiscalX = 1058,\n \n /**\n * The PrintFiscalZ member.\n */\n PrintFiscalZ = 1059,\n \n /**\n * The CustomerAccountDeposit member.\n */\n CustomerAccountDeposit = 1100,\n \n /**\n * The DeclareStartAmount member.\n */\n DeclareStartAmount = 1200,\n \n /**\n * The FloatEntry member.\n */\n FloatEntry = 1201,\n \n /**\n * The TenderRemoval member.\n */\n TenderRemoval = 1210,\n \n /**\n * The SafeDrop member.\n */\n SafeDrop = 1211,\n \n /**\n * The BankDrop member.\n */\n BankDrop = 1212,\n \n /**\n * The ShippingAddressSearch member.\n */\n ShippingAddressSearch = 1213,\n \n /**\n * The ShippingAddressAdd member.\n */\n ShippingAddressAdd = 1214,\n \n /**\n * The ChangePassword member.\n */\n ChangePassword = 1215,\n \n /**\n * The ResetPassword member.\n */\n ResetPassword = 1216,\n \n /**\n * The KitDisassembly member.\n */\n KitDisassembly = 1217,\n \n /**\n * The ForceUnlockPeripheral member.\n */\n ForceUnlockPeripheral = 1218,\n \n /**\n * The OpenURL member.\n */\n OpenURL = 1219,\n \n /**\n * The ManageSafe member.\n */\n ManageSafe = 1220,\n \n /**\n * The VoidSuspendedTransactions member.\n */\n VoidSuspendedTransactions = 1221,\n \n /**\n * The SkipFiscalRegistration member.\n */\n SkipFiscalRegistration = 1300,\n \n /**\n * The MarkFiscalEventRegistered member.\n */\n MarkFiscalEventRegistered = 1301,\n \n /**\n * The CompleteFiscalRegistrationProcess member.\n */\n CompleteFiscalRegistrationProcess = 1302,\n \n /**\n * The SkipHealthCheckError member.\n */\n SkipHealthCheckError = 1303,\n \n /**\n * The PostponeFiscalRegistration member.\n */\n PostponeFiscalRegistration = 1304,\n \n /**\n * The ManageChecklistsAndTasks member.\n */\n ManageChecklistsAndTasks = 1400,\n \n /**\n * The Invalid member.\n */\n Invalid = 65535\n }\n \n /**\n * RefinerType enum type.\n */\n export enum RefinerType {\n \n /**\n * The SingleSelect member.\n */\n SingleSelect = 0,\n \n /**\n * The MultiSelect member.\n */\n MultiSelect = 1,\n \n /**\n * The FreeText member.\n */\n FreeText = 2\n }\n \n /**\n * DisplayTemplate enum type.\n */\n export enum DisplayTemplate {\n \n /**\n * The List member.\n */\n List = 0,\n \n /**\n * The Slider member.\n */\n Slider = 1,\n \n /**\n * The SliderWithBars member.\n */\n SliderWithBars = 2,\n \n /**\n * The Range member.\n */\n Range = 3,\n \n /**\n * The TextBox member.\n */\n TextBox = 4\n }\n \n /**\n * ClientBookRefinerSource enum type.\n */\n export enum ClientBookRefinerSource {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Attribute member.\n */\n Attribute = 1,\n \n /**\n * The CustomerSearchKeyword member.\n */\n CustomerSearchKeyword = 2,\n \n /**\n * The StaffId member.\n */\n StaffId = 3\n }\n \n /**\n * ProductRefinerSource enum type.\n */\n export enum ProductRefinerSource {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Attribute member.\n */\n Attribute = 1,\n \n /**\n * The Category member.\n */\n Category = 2,\n \n /**\n * The Price member.\n */\n Price = 3,\n \n /**\n * The Rating member.\n */\n Rating = 4\n }\n \n /**\n * LoyaltyCardTenderType enum type.\n */\n export enum LoyaltyCardTenderType {\n \n /**\n * The AsCardTender member.\n */\n AsCardTender = 0,\n \n /**\n * The AsContactTender member.\n */\n AsContactTender = 1,\n \n /**\n * The NoTender member.\n */\n NoTender = 2,\n \n /**\n * The Blocked member.\n */\n Blocked = 3\n }\n \n /**\n * ReleasedProductType enum type.\n */\n export enum ReleasedProductType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Item member.\n */\n Item = 1,\n \n /**\n * The Service member.\n */\n Service = 2\n }\n \n /**\n * RetailChannelType enum type.\n */\n export enum RetailChannelType {\n \n /**\n * The RetailStore member.\n */\n RetailStore = 0,\n \n /**\n * The OnlineStore member.\n */\n OnlineStore = 1,\n \n /**\n * The OnlineMarketplace member.\n */\n OnlineMarketplace = 2,\n \n /**\n * The SharePointOnlineStore member.\n */\n SharePointOnlineStore = 3,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * LogOnConfiguration enum type.\n */\n export enum LogOnConfiguration {\n \n /**\n * The LocalDatabase member.\n */\n LocalDatabase = 0,\n \n /**\n * The RealTimeService member.\n */\n RealTimeService = 1\n }\n \n /**\n * TransactionServiceAuthenticationType enum type.\n */\n export enum TransactionServiceAuthenticationType {\n \n /**\n * The CertificateAuthentication member.\n */\n CertificateAuthentication = 0,\n \n /**\n * The ServiceToServiceAuthentication member.\n */\n ServiceToServiceAuthentication = 1,\n \n /**\n * The AdfsServiceToServiceClientSecretAuthentication member.\n */\n AdfsServiceToServiceClientSecretAuthentication = 2,\n \n /**\n * The ServiceToServiceClientCertificateAuthentication member.\n */\n ServiceToServiceClientCertificateAuthentication = 3,\n \n /**\n * The AdfsServiceToServiceClientCertificateAuthentication member.\n */\n AdfsServiceToServiceClientCertificateAuthentication = 4\n }\n \n /**\n * IncludePersonalDataInGuestOrderLookupPolicy enum type.\n */\n export enum IncludePersonalDataInGuestOrderLookupPolicy {\n \n /**\n * The Never member.\n */\n Never = 0,\n \n /**\n * The GuestOrdersOnly member.\n */\n GuestOrdersOnly = 1,\n \n /**\n * The AllOrders member.\n */\n AllOrders = 2\n }\n \n /**\n * RetailAddressBookType enum type.\n */\n export enum RetailAddressBookType {\n \n /**\n * The Customer member.\n */\n Customer = 0,\n \n /**\n * The Employee member.\n */\n Employee = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * InventAvailabilityCalculationMode enum type.\n */\n export enum InventAvailabilityCalculationMode {\n \n /**\n * The RealTimeService member.\n */\n RealTimeService = 0,\n \n /**\n * The Channel member.\n */\n Channel = 1\n }\n \n /**\n * InventoryAvailabilityClientDisplayMode enum type.\n */\n export enum InventoryAvailabilityClientDisplayMode {\n \n /**\n * The Raw member.\n */\n Raw = 0,\n \n /**\n * The Buffered member.\n */\n Buffered = 1,\n \n /**\n * The None member.\n */\n None = 2,\n \n /**\n * The Unknown member.\n */\n Unknown = -1\n }\n \n /**\n * EmployeeActivityType enum type.\n */\n export enum EmployeeActivityType {\n \n /**\n * The ClockIn member.\n */\n ClockIn = 0,\n \n /**\n * The JobStop member.\n */\n JobStop = 1,\n \n /**\n * The JobStart member.\n */\n JobStart = 2,\n \n /**\n * The TeamStop member.\n */\n TeamStop = 3,\n \n /**\n * The TeamStart member.\n */\n TeamStart = 4,\n \n /**\n * The BreakFlowStart member.\n */\n BreakFlowStart = 5,\n \n /**\n * The BreakCancelOne member.\n */\n BreakCancelOne = 6,\n \n /**\n * The BreakCancelAll member.\n */\n BreakCancelAll = 7,\n \n /**\n * The BreakFlowStop member.\n */\n BreakFlowStop = 8,\n \n /**\n * The FinishQuantity member.\n */\n FinishQuantity = 9,\n \n /**\n * The ClockOut member.\n */\n ClockOut = 10,\n \n /**\n * The EventCode member.\n */\n EventCode = 11,\n \n /**\n * The BreakFromWork member.\n */\n BreakFromWork = 12,\n \n /**\n * The BreakForLunch member.\n */\n BreakForLunch = 13,\n \n /**\n * The Logbook member.\n */\n Logbook = 14,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * DeliveryPreferenceType enum type.\n */\n export enum DeliveryPreferenceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ShipToAddress member.\n */\n ShipToAddress = 1,\n \n /**\n * The PickupFromStore member.\n */\n PickupFromStore = 2,\n \n /**\n * The ElectronicDelivery member.\n */\n ElectronicDelivery = 3,\n \n /**\n * The DeliverItemsIndividually member.\n */\n DeliverItemsIndividually = 4\n }\n \n /**\n * LayoutType enum type.\n */\n export enum LayoutType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The ModernPosCompact member.\n */\n ModernPosCompact = 1,\n \n /**\n * The ModernPosFull member.\n */\n ModernPosFull = 2,\n \n /**\n * The Epos member.\n */\n Epos = 3\n }\n \n /**\n * SalesInvoiceType enum type.\n */\n export enum SalesInvoiceType {\n \n /**\n * The Journal member.\n */\n Journal = 0,\n \n /**\n * The DEL_Quotation member.\n */\n DEL_Quotation = 1,\n \n /**\n * The Subscription member.\n */\n Subscription = 2,\n \n /**\n * The Sales member.\n */\n Sales = 3,\n \n /**\n * The ReturnItem member.\n */\n ReturnItem = 4,\n \n /**\n * The DEL_Blanket member.\n */\n DEL_Blanket = 5,\n \n /**\n * The ItemReq member.\n */\n ItemReq = 6\n }\n \n /**\n * InvoiceType enum type.\n */\n export enum InvoiceType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The SalesOrderInvoice member.\n */\n SalesOrderInvoice = 1,\n \n /**\n * The FreeTextInvoice member.\n */\n FreeTextInvoice = 2,\n \n /**\n * The ProjectInvoice member.\n */\n ProjectInvoice = 3,\n \n /**\n * The CreditNoteInvoice member.\n */\n CreditNoteInvoice = 4,\n \n /**\n * The FreeTextCreditNoteInvoice member.\n */\n FreeTextCreditNoteInvoice = 5,\n \n /**\n * The ProjectCreditNoteInvoice member.\n */\n ProjectCreditNoteInvoice = 6\n }\n \n /**\n * InvoicePaidStatus enum type.\n */\n export enum InvoicePaidStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Unpaid member.\n */\n Unpaid = 1,\n \n /**\n * The PartiallyPaid member.\n */\n PartiallyPaid = 2,\n \n /**\n * The Paid member.\n */\n Paid = 3\n }\n \n /**\n * TaxOverrideType enum type.\n */\n export enum TaxOverrideType {\n \n /**\n * The ItemSalesTaxGroup member.\n */\n ItemSalesTaxGroup = 0,\n \n /**\n * The SalesTaxGroup member.\n */\n SalesTaxGroup = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * TaxOverrideBy enum type.\n */\n export enum TaxOverrideBy {\n \n /**\n * The Line member.\n */\n Line = 0,\n \n /**\n * The Cart member.\n */\n Cart = 1,\n \n /**\n * The None member.\n */\n None = -1\n }\n \n /**\n * ReasonCodeInputRequiredType enum type.\n */\n export enum ReasonCodeInputRequiredType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Always member.\n */\n Always = 1,\n \n /**\n * The Positive member.\n */\n Positive = 2,\n \n /**\n * The Negative member.\n */\n Negative = 3\n }\n \n /**\n * RecordingValueType enum type.\n */\n export enum RecordingValueType {\n \n /**\n * The Preferred member.\n */\n Preferred = 0,\n \n /**\n * The Example member.\n */\n Example = 1\n }\n \n /**\n * UserActionType enum type.\n */\n export enum UserActionType {\n \n /**\n * The Input member.\n */\n Input = 1,\n \n /**\n * The Output member.\n */\n Output = 16,\n \n /**\n * The Validation member.\n */\n Validation = 256\n }\n \n /**\n * ArtifactType enum type.\n */\n export enum ArtifactType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Ax7Bpm member.\n */\n Ax7Bpm = 1,\n \n /**\n * The Visio member.\n */\n Visio = 2,\n \n /**\n * The TaskGuide member.\n */\n TaskGuide = 3,\n \n /**\n * The Ax6Bpm member.\n */\n Ax6Bpm = 4,\n \n /**\n * The TaskGuideResources member.\n */\n TaskGuideResources = 5,\n \n /**\n * The TaskXml member.\n */\n TaskXml = 6,\n \n /**\n * The VideoWma member.\n */\n VideoWma = 7,\n \n /**\n * The ProcessXml member.\n */\n ProcessXml = 8,\n \n /**\n * The Trace member.\n */\n Trace = 9,\n \n /**\n * The RapidStartXml member.\n */\n RapidStartXml = 10,\n \n /**\n * The UserDrawing member.\n */\n UserDrawing = 100\n }\n \n /**\n * FrameworkAccess enum type.\n */\n export enum FrameworkAccess {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Global member.\n */\n Global = 1,\n \n /**\n * The Corporate member.\n */\n Corporate = 2,\n \n /**\n * The Private member.\n */\n Private = 3,\n \n /**\n * The BoxPackage member.\n */\n BoxPackage = 4\n }\n \n /**\n * MetadataControl enum type.\n */\n export enum MetadataControl {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The SingleValue member.\n */\n SingleValue = 1,\n \n /**\n * The MultiValue member.\n */\n MultiValue = 2,\n \n /**\n * The Tags member.\n */\n Tags = 3,\n \n /**\n * The Links member.\n */\n Links = 4,\n \n /**\n * The ComboBox member.\n */\n ComboBox = 5,\n \n /**\n * The MultiSelect member.\n */\n MultiSelect = 6\n }\n \n /**\n * FiscalIntegrationRegistrationStatus enum type.\n */\n export enum FiscalIntegrationRegistrationStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Completed member.\n */\n Completed = 1,\n \n /**\n * The Skipped member.\n */\n Skipped = 2,\n \n /**\n * The MarkedAsRegistered member.\n */\n MarkedAsRegistered = 3,\n \n /**\n * The AutoSkipped member.\n */\n AutoSkipped = 4,\n \n /**\n * The Postponed member.\n */\n Postponed = 5\n }\n \n /**\n * CustomerOrderOperation enum type.\n */\n export enum CustomerOrderOperation {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Edit member.\n */\n Edit = 1,\n \n /**\n * The Cancel member.\n */\n Cancel = 2,\n \n /**\n * The PickUpFromStore member.\n */\n PickUpFromStore = 3,\n \n /**\n * The CreatePickingList member.\n */\n CreatePickingList = 4,\n \n /**\n * The CreatePackingSlip member.\n */\n CreatePackingSlip = 5,\n \n /**\n * The PrintPackingSlip member.\n */\n PrintPackingSlip = 6,\n \n /**\n * The Return member.\n */\n Return = 7,\n \n /**\n * The RejectFulfillmentLine member.\n */\n RejectFulfillmentLine = 8,\n \n /**\n * The AcceptFulfillmentLine member.\n */\n AcceptFulfillmentLine = 9,\n \n /**\n * The PackFulfillmentLine member.\n */\n PackFulfillmentLine = 10,\n \n /**\n * The ShipFulfillmentLine member.\n */\n ShipFulfillmentLine = 11,\n \n /**\n * The PickFulfillmentLine member.\n */\n PickFulfillmentLine = 12\n }\n \n /**\n * BusinessPartnerOperationType enum type.\n */\n export enum BusinessPartnerOperationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The CreateProspect member.\n */\n CreateProspect = 1,\n \n /**\n * The AddUser member.\n */\n AddUser = 2,\n \n /**\n * The DeleteUser member.\n */\n DeleteUser = 3,\n \n /**\n * The EditUser member.\n */\n EditUser = 4,\n \n /**\n * The AccountStatement member.\n */\n AccountStatement = 5,\n \n /**\n * The InvoiceRequest member.\n */\n InvoiceRequest = 6\n }\n \n /**\n * BusinessPartnerOperationStatus enum type.\n */\n export enum BusinessPartnerOperationStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Processed member.\n */\n Processed = 1,\n \n /**\n * The Error member.\n */\n Error = 2\n }\n \n /**\n * CartType enum type.\n */\n export enum CartType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Shopping member.\n */\n Shopping = 1,\n \n /**\n * The Checkout member.\n */\n Checkout = 2,\n \n /**\n * The CustomerOrder member.\n */\n CustomerOrder = 3,\n \n /**\n * The IncomeExpense member.\n */\n IncomeExpense = 4,\n \n /**\n * The AccountDeposit member.\n */\n AccountDeposit = 5\n }\n \n /**\n * CartStatus enum type.\n */\n export enum CartStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Created member.\n */\n Created = 1,\n \n /**\n * The Suspended member.\n */\n Suspended = 2,\n \n /**\n * The Voided member.\n */\n Voided = 3\n }\n \n /**\n * PeriodicDiscountsCalculateScope enum type.\n */\n export enum PeriodicDiscountsCalculateScope {\n \n /**\n * The All member.\n */\n All = 0,\n \n /**\n * The None member.\n */\n None = 1,\n \n /**\n * The CouponDiscountsOnly member.\n */\n CouponDiscountsOnly = 2\n }\n \n /**\n * CustomerType enum type.\n */\n export enum CustomerType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Person member.\n */\n Person = 1,\n \n /**\n * The Organization member.\n */\n Organization = 2\n }\n \n /**\n * ContactInfoType enum type.\n */\n export enum ContactInfoType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Phone member.\n */\n Phone = 1,\n \n /**\n * The Email member.\n */\n Email = 2,\n \n /**\n * The Url member.\n */\n Url = 3,\n \n /**\n * The Telex member.\n */\n Telex = 4,\n \n /**\n * The Fax member.\n */\n Fax = 5\n }\n \n /**\n * ChecklistStatus enum type.\n */\n export enum ChecklistStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NotStarted member.\n */\n NotStarted = 1,\n \n /**\n * The InProgress member.\n */\n InProgress = 2,\n \n /**\n * The Completed member.\n */\n Completed = 3\n }\n \n /**\n * ChecklistTaskDeepLinkType enum type.\n */\n export enum ChecklistTaskDeepLinkType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Display member.\n */\n Display = 1,\n \n /**\n * The Output member.\n */\n Output = 2,\n \n /**\n * The Action member.\n */\n Action = 3,\n \n /**\n * The Url member.\n */\n Url = 4,\n \n /**\n * The PosOperation member.\n */\n PosOperation = 5,\n \n /**\n * The CustomerAccount member.\n */\n CustomerAccount = 6,\n \n /**\n * The PosOperationWithParameters member.\n */\n PosOperationWithParameters = 7\n }\n \n /**\n * ChecklistTaskStatus enum type.\n */\n export enum ChecklistTaskStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The NotStarted member.\n */\n NotStarted = 1,\n \n /**\n * The InProgress member.\n */\n InProgress = 2,\n \n /**\n * The Completed member.\n */\n Completed = 3\n }\n \n /**\n * DocumentStatus enum type.\n */\n export enum DocumentStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Quotation member.\n */\n Quotation = 1,\n \n /**\n * The PurchaseOrder member.\n */\n PurchaseOrder = 2,\n \n /**\n * The Confirmation member.\n */\n Confirmation = 3,\n \n /**\n * The PickingList member.\n */\n PickingList = 4,\n \n /**\n * The PackingSlip member.\n */\n PackingSlip = 5,\n \n /**\n * The ReceiptsList member.\n */\n ReceiptsList = 6,\n \n /**\n * The Invoice member.\n */\n Invoice = 7,\n \n /**\n * The ApproveJournal member.\n */\n ApproveJournal = 8,\n \n /**\n * The ProjectInvoice member.\n */\n ProjectInvoice = 9,\n \n /**\n * The ProjectPackingSlip member.\n */\n ProjectPackingSlip = 10,\n \n /**\n * The CRMQuotation member.\n */\n CRMQuotation = 11,\n \n /**\n * The Lost member.\n */\n Lost = 12,\n \n /**\n * The Canceled member.\n */\n Canceled = 13,\n \n /**\n * The FreeTextInvoice member.\n */\n FreeTextInvoice = 14,\n \n /**\n * The RFQ member.\n */\n RFQ = 15,\n \n /**\n * The RFQAccept member.\n */\n RFQAccept = 16,\n \n /**\n * The RFQReject member.\n */\n RFQReject = 17,\n \n /**\n * The PurchaseRequest member.\n */\n PurchaseRequest = 18,\n \n /**\n * The RFQResend member.\n */\n RFQResend = 19\n }\n \n /**\n * CustomerOrderType enum type.\n */\n export enum CustomerOrderType {\n \n /**\n * The SalesOrder member.\n */\n SalesOrder = 0,\n \n /**\n * The Quote member.\n */\n Quote = 1\n }\n \n /**\n * LineDiscountCalculationType enum type.\n */\n export enum LineDiscountCalculationType {\n \n /**\n * The Line member.\n */\n Line = 0,\n \n /**\n * The Multiline member.\n */\n Multiline = 1,\n \n /**\n * The MaxLineMultiline member.\n */\n MaxLineMultiline = 2,\n \n /**\n * The MinLineMultiline member.\n */\n MinLineMultiline = 3,\n \n /**\n * The LinePlusMultiline member.\n */\n LinePlusMultiline = 4,\n \n /**\n * The LineMultiplyMultiline member.\n */\n LineMultiplyMultiline = 5\n }\n \n /**\n * TaxCalculationType enum type.\n */\n export enum TaxCalculationType {\n \n /**\n * The Regular member.\n */\n Regular = 0,\n \n /**\n * The GTE member.\n */\n GTE = 1\n }\n \n /**\n * ShiftStatus enum type.\n */\n export enum ShiftStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Open member.\n */\n Open = 1,\n \n /**\n * The Closed member.\n */\n Closed = 2,\n \n /**\n * The BlindClosed member.\n */\n BlindClosed = 3,\n \n /**\n * The Suspended member.\n */\n Suspended = 4,\n \n /**\n * The Invalid member.\n */\n Invalid = 5\n }\n \n /**\n * TaxRegistrationType enum type.\n */\n export enum TaxRegistrationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The INN member.\n */\n INN = 1,\n \n /**\n * The KPP member.\n */\n KPP = 2,\n \n /**\n * The OKPO member.\n */\n OKPO = 3,\n \n /**\n * The OKDP member.\n */\n OKDP = 4,\n \n /**\n * The OKATO member.\n */\n OKATO = 5,\n \n /**\n * The OGRN member.\n */\n OGRN = 6,\n \n /**\n * The SNILS member.\n */\n SNILS = 7,\n \n /**\n * The CIFTS member.\n */\n CIFTS = 8,\n \n /**\n * The UID member.\n */\n UID = 9,\n \n /**\n * The TaxId member.\n */\n TaxId = 10,\n \n /**\n * The BranchId member.\n */\n BranchId = 11,\n \n /**\n * The CommercialRegisterCZ member.\n */\n CommercialRegisterCZ = 12,\n \n /**\n * The CustomsCustomerId member.\n */\n CustomsCustomerId = 14,\n \n /**\n * The Passport member.\n */\n Passport = 15,\n \n /**\n * The OfficialIdDoc member.\n */\n OfficialIdDoc = 16,\n \n /**\n * The ResidenceCertificate member.\n */\n ResidenceCertificate = 17,\n \n /**\n * The OtherIdDoc member.\n */\n OtherIdDoc = 18,\n \n /**\n * The NotCensused member.\n */\n NotCensused = 19,\n \n /**\n * The BusinessPremiseId member.\n */\n BusinessPremiseId = 20,\n \n /**\n * The LotteryCode member.\n */\n LotteryCode = 21\n }\n \n /**\n * CommerceListType enum type.\n */\n export enum CommerceListType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The WishList member.\n */\n WishList = 1\n }\n \n /**\n * ProductListType enum type.\n */\n export enum ProductListType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The OrderTemplate member.\n */\n OrderTemplate = 1,\n \n /**\n * The QuickOrder member.\n */\n QuickOrder = 2,\n \n /**\n * The WishList member.\n */\n WishList = 3\n }\n \n /**\n * RecommendationType enum type.\n */\n export enum RecommendationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Editorial member.\n */\n Editorial = 1,\n \n /**\n * The New member.\n */\n New = 2,\n \n /**\n * The Trending member.\n */\n Trending = 3,\n \n /**\n * The Bestselling member.\n */\n Bestselling = 4,\n \n /**\n * The Cart member.\n */\n Cart = 5,\n \n /**\n * The PeopleAlsoBuy member.\n */\n PeopleAlsoBuy = 6,\n \n /**\n * The Picks member.\n */\n Picks = 7,\n \n /**\n * The ShopSimilarLooks member.\n */\n ShopSimilarLooks = 8,\n \n /**\n * The ShopSimilarDescriptions member.\n */\n ShopSimilarDescriptions = 9\n }\n \n /**\n * PurchaseTransferOrderType enum type.\n */\n export enum PurchaseTransferOrderType {\n \n /**\n * The Unknown member.\n */\n Unknown = 0,\n \n /**\n * The PurchaseOrder member.\n */\n PurchaseOrder = 1,\n \n /**\n * The TransferIn member.\n */\n TransferIn = 2,\n \n /**\n * The TransferOut member.\n */\n TransferOut = 3,\n \n /**\n * The TransferOrder member.\n */\n TransferOrder = 4,\n \n /**\n * The PickingList member.\n */\n PickingList = 5\n }\n \n /**\n * BusinessPartnerUserStatus enum type.\n */\n export enum BusinessPartnerUserStatus {\n \n /**\n * The Pending member.\n */\n Pending = 0,\n \n /**\n * The Active member.\n */\n Active = 1,\n \n /**\n * The Removed member.\n */\n Removed = 2\n }\n \n /**\n * ElectronicAddressType enum type.\n */\n export enum ElectronicAddressType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Email member.\n */\n Email = 1\n }\n \n /**\n * DownloadSessionStatus enum type.\n */\n export enum DownloadSessionStatus {\n \n /**\n * The Started member.\n */\n Started = 0,\n \n /**\n * The Available member.\n */\n Available = 1,\n \n /**\n * The Requested member.\n */\n Requested = 2,\n \n /**\n * The Downloaded member.\n */\n Downloaded = 3,\n \n /**\n * The Applied member.\n */\n Applied = 4,\n \n /**\n * The Canceled member.\n */\n Canceled = 5,\n \n /**\n * The CreateFailed member.\n */\n CreateFailed = 6,\n \n /**\n * The DownloadFailed member.\n */\n DownloadFailed = 7,\n \n /**\n * The ApplyFailed member.\n */\n ApplyFailed = 8\n }\n \n /**\n * HardwareStationType enum type.\n */\n export enum HardwareStationType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Shared member.\n */\n Shared = 1,\n \n /**\n * The Dedicated member.\n */\n Dedicated = 2\n }\n \n /**\n * AuditEventUploadType enum type.\n */\n export enum AuditEventUploadType {\n \n /**\n * The Async member.\n */\n Async = 0,\n \n /**\n * The RealTime member.\n */\n RealTime = 1\n }\n \n /**\n * AuditEventType enum type.\n */\n export enum AuditEventType {\n \n /**\n * The Unknown member.\n */\n Unknown = 0,\n \n /**\n * The UserLogOn member.\n */\n UserLogOn = 1,\n \n /**\n * The UserLogOff member.\n */\n UserLogOff = 2,\n \n /**\n * The ManagerOverride member.\n */\n ManagerOverride = 3,\n \n /**\n * The ItemVoid member.\n */\n ItemVoid = 4,\n \n /**\n * The TransactionVoid member.\n */\n TransactionVoid = 5,\n \n /**\n * The PrintReceiptCopy member.\n */\n PrintReceiptCopy = 6,\n \n /**\n * The PriceCheck member.\n */\n PriceCheck = 7,\n \n /**\n * The TaxOverride member.\n */\n TaxOverride = 8,\n \n /**\n * The QuantityCorrection member.\n */\n QuantityCorrection = 9,\n \n /**\n * The PurgeTransactionsData member.\n */\n PurgeTransactionsData = 10\n }\n \n /**\n * AuditLogTraceLevel enum type.\n */\n export enum AuditLogTraceLevel {\n \n /**\n * The Trace member.\n */\n Trace = 0,\n \n /**\n * The Debug member.\n */\n Debug = 1,\n \n /**\n * The Error member.\n */\n Error = 2\n }\n \n /**\n * FiscalIntegrationEventType enum type.\n */\n export enum FiscalIntegrationEventType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Sale member.\n */\n Sale = 1,\n \n /**\n * The PrintReceiptCopy member.\n */\n PrintReceiptCopy = 2,\n \n /**\n * The ZReport member.\n */\n ZReport = 3,\n \n /**\n * The XReport member.\n */\n XReport = 4,\n \n /**\n * The CloseShift member.\n */\n CloseShift = 5,\n \n /**\n * The BankDrop member.\n */\n BankDrop = 6,\n \n /**\n * The TenderDeclaration member.\n */\n TenderDeclaration = 7,\n \n /**\n * The RemoveTender member.\n */\n RemoveTender = 8,\n \n /**\n * The FloatEntry member.\n */\n FloatEntry = 9,\n \n /**\n * The SafeDrop member.\n */\n SafeDrop = 10,\n \n /**\n * The StartingAmount member.\n */\n StartingAmount = 11,\n \n /**\n * The PackingSlip member.\n */\n PackingSlip = 12,\n \n /**\n * The GiftReceipt member.\n */\n GiftReceipt = 13,\n \n /**\n * The CustomerAccountDeposit member.\n */\n CustomerAccountDeposit = 14,\n \n /**\n * The CreditMemo member.\n */\n CreditMemo = 15,\n \n /**\n * The EditCustomerOrder member.\n */\n EditCustomerOrder = 16,\n \n /**\n * The CreateCustomerOrder member.\n */\n CreateCustomerOrder = 17,\n \n /**\n * The DepositOverride member.\n */\n DepositOverride = 18,\n \n /**\n * The FiscalXReport member.\n */\n FiscalXReport = 19,\n \n /**\n * The FiscalZReport member.\n */\n FiscalZReport = 20,\n \n /**\n * The AuditEvent member.\n */\n AuditEvent = 21,\n \n /**\n * The OpenDrawer member.\n */\n OpenDrawer = 22,\n \n /**\n * The CancelCustomerOrder member.\n */\n CancelCustomerOrder = 23,\n \n /**\n * The BeginSale member.\n */\n BeginSale = 24,\n \n /**\n * The PreSale member.\n */\n PreSale = 25,\n \n /**\n * The IncomeAccounts member.\n */\n IncomeAccounts = 26,\n \n /**\n * The ExpenseAccounts member.\n */\n ExpenseAccounts = 27,\n \n /**\n * The VoidTransaction member.\n */\n VoidTransaction = 28,\n \n /**\n * The SuspendTransaction member.\n */\n SuspendTransaction = 29,\n \n /**\n * The RecallTransaction member.\n */\n RecallTransaction = 30\n }\n \n /**\n * FiscalIntegrationDocumentGenerationResultType enum type.\n */\n export enum FiscalIntegrationDocumentGenerationResultType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Succeeded member.\n */\n Succeeded = 1,\n \n /**\n * The NotSupported member.\n */\n NotSupported = 2,\n \n /**\n * The NotRequired member.\n */\n NotRequired = 3,\n \n /**\n * The Failed member.\n */\n Failed = 4\n }\n \n /**\n * FiscalIntegrationRegistrationProcessMode enum type.\n */\n export enum FiscalIntegrationRegistrationProcessMode {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Disabled member.\n */\n Disabled = 1,\n \n /**\n * The Excepted member.\n */\n Excepted = 2,\n \n /**\n * The Full member.\n */\n Full = 3\n }\n \n /**\n * FiscalIntegrationServiceCommunicationResultType enum type.\n */\n export enum FiscalIntegrationServiceCommunicationResultType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Succeeded member.\n */\n Succeeded = 1,\n \n /**\n * The Failed member.\n */\n Failed = 2\n }\n \n /**\n * FiscalIntegrationServiceFailureType enum type.\n */\n export enum FiscalIntegrationServiceFailureType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Busy member.\n */\n Busy = 1,\n \n /**\n * The NotAvailable member.\n */\n NotAvailable = 2,\n \n /**\n * The SubmissionFailed member.\n */\n SubmissionFailed = 3,\n \n /**\n * The Other member.\n */\n Other = 4,\n \n /**\n * The BadResponse member.\n */\n BadResponse = 5,\n \n /**\n * The Timeout member.\n */\n Timeout = 6\n }\n \n /**\n * PickupTimeslotAvailabilitySearchOption enum type.\n */\n export enum PickupTimeslotAvailabilitySearchOption {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The DailyGroupingTimeslotOnly member.\n */\n DailyGroupingTimeslotOnly = 1,\n \n /**\n * The All member.\n */\n All = 2\n }\n \n /**\n * VendorValidationResultLevel enum type.\n */\n export enum VendorValidationResultLevel {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Approved member.\n */\n Approved = 1,\n \n /**\n * The ApprovedWithWarning member.\n */\n ApprovedWithWarning = 2,\n \n /**\n * The NotApproved member.\n */\n NotApproved = 3\n }\n \n /**\n * AttachedServiceStatus enum type.\n */\n export enum AttachedServiceStatus {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Disabled member.\n */\n Disabled = 1,\n \n /**\n * The InProgress member.\n */\n InProgress = 2,\n \n /**\n * The Enabled member.\n */\n Enabled = 3,\n \n /**\n * The Submitted member.\n */\n Submitted = 4\n }\n \n /**\n * ReceiptEmailBehavior enum type.\n */\n export enum ReceiptEmailBehavior {\n \n /**\n * The DoNotEmail member.\n */\n DoNotEmail = 0,\n \n /**\n * The PromptUser member.\n */\n PromptUser = 1,\n \n /**\n * The AlwaysEmail member.\n */\n AlwaysEmail = 2\n }\n \n /**\n * CartLineQuantityLimitsErrors enum type.\n */\n export enum CartLineQuantityLimitsErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AddingItem_ExceedsMaximumQuantity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AddingItem_ExceedsMaximumQuantity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdatingItem_ExceedsMaximumQuantity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdatingItem_ExceedsMaximumQuantity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemQuantityExceedsMaximum member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemQuantityExceedsMaximum,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemQuantityLessThanMinimum member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemQuantityLessThanMinimum,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemQuantityViolatesMultiplicityOfConfiguredNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemQuantityViolatesMultiplicityOfConfiguredNumber,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemQuantityExceedsMaximumAndViolatesMultiplicityOfConfiguredNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemQuantityExceedsMaximumAndViolatesMultiplicityOfConfiguredNumber,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemQuantityLessThanMinimumAndViolatesMultiplicityOfConfiguredNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemQuantityLessThanMinimumAndViolatesMultiplicityOfConfiguredNumber\n }\n \n /**\n * CommunicationErrors enum type.\n */\n export enum CommunicationErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HeadquarterCommunicationFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HeadquarterCommunicationFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HeadquarterResponseParsingError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HeadquarterResponseParsingError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AggregateCommunicationError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AggregateCommunicationError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExternalProviderError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExternalProviderError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HeadquarterTransactionServiceMethodCallFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HeadquarterTransactionServiceMethodCallFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransactionServiceTimeOut member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransactionServiceTimeOut,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransactionServiceException member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransactionServiceException,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransactionServiceAuthenticationFailedFault member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransactionServiceAuthenticationFailedFault,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransactionServiceForbiddenFault member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransactionServiceForbiddenFault,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransactionServiceSenderFault member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransactionServiceSenderFault,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidS2SClientId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidS2SClientId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidS2SSecret member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidS2SSecret,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidS2STenant member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidS2STenant,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidS2SApplicationName member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidS2SApplicationName,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransactionServiceLoyaltySenderFault member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransactionServiceLoyaltySenderFault\n }\n \n /**\n * ConfigurationErrors enum type.\n */\n export enum ConfigurationErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConfigurationSettingNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConfigurationSettingNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidConfigurationKeyFormat member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidConfigurationKeyFormat,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ApplicationCompositionFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ApplicationCompositionFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidChannelConfiguration member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidChannelConfiguration,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidPipelineConfiguration member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidPipelineConfiguration,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidProviderConfiguration member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidProviderConfiguration,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindDeliveryOptions member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindDeliveryOptions,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindDeliveryPreferences member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindDeliveryPreferences,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindConfigForTenderType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindConfigForTenderType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConnectionIsNotOverridden member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConnectionIsNotOverridden,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConnectionStringNotProvided member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConnectionStringNotProvided,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentConnectorNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentConnectorNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeviceConfigurationNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeviceConfigurationNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HardwareProfileNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HardwareProfileNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LayoutNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LayoutNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_VersionedEdmResourceFileNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_VersionedEdmResourceFileNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RetailServerConfigurationNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RetailServerConfigurationNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RetailServerCertificateNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RetailServerCertificateNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RealtimeServiceCertificateNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RealtimeServiceCertificateNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RealtimeServiceInvalidConfiguration member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RealtimeServiceInvalidConfiguration,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ActivatedDeviceMissingTokenIssueDatetime member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ActivatedDeviceMissingTokenIssueDatetime,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LCSLibrariesNotConfigured member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LCSLibrariesNotConfigured,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnknownRequestResponsePair member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnknownRequestResponsePair,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductRecommendationsDisabled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductRecommendationsDisabled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveRecommendationServiceCredentials member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveRecommendationServiceCredentials,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CommerceIssuerNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CommerceIssuerNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SecretProviderNotAvailable member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SecretProviderNotAvailable,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SecretNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SecretNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SecretProviderRetrievalFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SecretProviderRetrievalFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidProfilesConfiguration member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidProfilesConfiguration,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExtensionSettingsMustStartWithExtPrefix member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExtensionSettingsMustStartWithExtPrefix,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConfigurationSettingValueIncorrectFormat member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConfigurationSettingValueIncorrectFormat,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequestWasNotHandled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequestWasNotHandled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_FiscalService_NotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_FiscalService_NotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidConfigurationExtensionsSection member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidConfigurationExtensionsSection,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CompositionComponentExportingError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CompositionComponentExportingError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_VisualProfileNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_VisualProfileNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DuplicatedExtensionConfigurationKey member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DuplicatedExtensionConfigurationKey,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NextRequestHandlerNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NextRequestHandlerNotFound\n }\n \n /**\n * DataValidationErrors enum type.\n */\n export enum DataValidationErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The RegexAttribute_ValidationError member.\n */\n RegexAttribute_ValidationError,\n \n /**\n * The RequiredAttribute_ValidationError member.\n */\n RequiredAttribute_ValidationError,\n \n /**\n * The StringLengthAttribute_ValidationError member.\n */\n StringLengthAttribute_ValidationError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AuthenticationGrantTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AuthenticationGrantTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard member.\n */\n Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LoyaltyCardNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LoyaltyCardNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductMasterPageRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductMasterPageRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequiredValueNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequiredValueNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesLineNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesLineNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RemoteProductsNotSupportedWithCurrentTransactionType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RemoteProductsNotSupportedWithCurrentTransactionType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountIsBlocked member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountIsBlocked,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerInvoiceAccountIsBlocked member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerInvoiceAccountIsBlocked,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductIsNotActive member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductIsNotActive,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductIsBlocked member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductIsBlocked,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ValueOutOfRange member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ValueOutOfRange,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ObjectNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ObjectNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DuplicateObject member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DuplicateObject,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidFormat member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidFormat,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MissingStockCountTransactions member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MissingStockCountTransactions,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MissingParameter member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MissingParameter,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidProductDimensionCombinations member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidProductDimensionCombinations,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_EmployeeDiscountExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_EmployeeDiscountExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_EmployeeDetailsNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_EmployeeDetailsNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_BarcodeNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_BarcodeNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExistingCustomerAlreadyMappedToExternalIdentity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExistingCustomerAlreadyMappedToExternalIdentity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnsupportedLanguage member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnsupportedLanguage,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnknownRequest member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnknownRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnSupportedType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnSupportedType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AggregateValidationError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AggregateValidationError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IdMismatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IdMismatch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidRequest member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleEmployeeLineDiscountsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleEmployeeLineDiscountsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleEmployeeTotalDiscountsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleEmployeeTotalDiscountsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TotalDiscountsNotAllowedForMixSalesAndReturn member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TotalDiscountsNotAllowedForMixSalesAndReturn,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseAccountsInSameCart member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseAccountsInSameCart,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowDiscounts member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowDiscounts,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowSalesLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowSalesLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowCustomer member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowCustomer,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowGiftCardLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowGiftCardLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseLineDoesNotAllowSettingTransactionStatus member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseLineDoesNotAllowSettingTransactionStatus,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowAffiliation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncomeExpenseCartDoesNotAllowAffiliation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InsufficientQuantityAvailable member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InsufficientQuantityAvailable,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidUnitOfMeasure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidUnitOfMeasure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnitOfMeasureConversionNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnitOfMeasureConversionNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryMode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryMode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeliveryModeMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeliveryModeMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindDeliveryOptions member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindDeliveryOptions,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidEmailAddress member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidEmailAddress,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryPreferenceType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryPreferenceType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidShippingAddress member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidShippingAddress,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCountryRegion member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCountryRegion,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidStateProvince member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidStateProvince,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCounty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCounty,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidDistrict member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidDistrict,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidZipPostalCode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidZipPostalCode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidAddress member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidAddress,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidShippingDate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidShippingDate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DiscountAmountInvalidated member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DiscountAmountInvalidated,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidPriceEncountered member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidPriceEncountered,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemDiscontinuedFromChannel member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemDiscontinuedFromChannel,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DiscontinuedProductsRemovedFromCart member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DiscontinuedProductsRemovedFromCart,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GrossWeightForItemNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GrossWeightForItemNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ListingIdNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ListingIdNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequiredReasonCodesMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequiredReasonCodesMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReasonCodeLinesReasonCodeIdDuplicated member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReasonCodeLinesReasonCodeIdDuplicated,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CartNotActive member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CartNotActive,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidStatus member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidStatus,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_VoidTransactionContainsTenderedLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_VoidTransactionContainsTenderedLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeForVoidProducts member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeForVoidProducts,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CartContainsProductsForReturn member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CartContainsProductsForReturn,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidReceiptTemplate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidReceiptTemplate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidReceiptItem member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidReceiptItem,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemIdBarcodeMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemIdBarcodeMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleItemsForItemId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleItemsForItemId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeChange member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeChange,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeForReturnTransaction member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeForReturnTransaction,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeForAddCartLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCustomerOrderModeForAddCartLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotAddProductHavingRefundChargeAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotAddProductHavingRefundChargeAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotChangeCustomerIdWhenEditingCustomerOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotChangeCustomerIdWhenEditingCustomerOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_QuoteMustNotHaveAnyPayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_QuoteMustNotHaveAnyPayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_QuoteMustHaveValidQuotationExpiryDate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_QuoteMustHaveValidQuotationExpiryDate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_QuoteMustNotHaveDepositOverride member.\n */\n Microsoft_Dynamics_Commerce_Runtime_QuoteMustNotHaveDepositOverride,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DepositMustBeGreaterThanZero member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DepositMustBeGreaterThanZero,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMustNotBeGreaterThanTotalAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMustNotBeGreaterThanTotalAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMustNotBeGreaterThanMaximumOverrideAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMustNotBeGreaterThanMaximumOverrideAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidPickupDepositOverrideAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidPickupDepositOverrideAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OrderWasNotCreatedWithDepositOverride member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OrderWasNotCreatedWithDepositOverride,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMayNotBeChanged member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMayNotBeChanged,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMayNotBeCleared member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DepositOverrideMayNotBeCleared,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AmountDueMustBePaidBeforeCheckout member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AmountDueMustBePaidBeforeCheckout,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DiscountMustBeCalculatedBeforeCheckout member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DiscountMustBeCalculatedBeforeCheckout,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TotalsMustBeCalculatedBeforeCheckout member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TotalsMustBeCalculatedBeforeCheckout,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncorrectPaymentAmountSign member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncorrectPaymentAmountSign,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMaximumAmountPerLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMaximumAmountPerLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMinimumAmountPerLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMinimumAmountPerLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMaximumAmountPerTransaction member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMaximumAmountPerTransaction,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMinimumAmountPerTransaction member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentExceedsMinimumAmountPerTransaction,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChangebackIsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChangebackIsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OvertenderAmountExceedsMaximumAllowedValue member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OvertenderAmountExceedsMaximumAllowedValue,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_BalanceAmountExceedsMaximumAllowedValue member.\n */\n Microsoft_Dynamics_Commerce_Runtime_BalanceAmountExceedsMaximumAllowedValue,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentMustBeUsedToFinalizeTransaction member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentMustBeUsedToFinalizeTransaction,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindListing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindListing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindEmployeeActivityBreakCategory member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindEmployeeActivityBreakCategory,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToFindVariant member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToFindVariant,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidStoreNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidStoreNumber,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesLineMustHavePickupDeliveryMode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesLineMustHavePickupDeliveryMode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToPickupMoreThanQtyRemaining member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToPickupMoreThanQtyRemaining,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryCharge member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryCharge,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CurrencyConversionFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CurrencyConversionFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CurrencyChannelOrderMismatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CurrencyChannelOrderMismatch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CurrencyNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CurrencyNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCancellationCharge member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCancellationCharge,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChargeNotConfiguredOnHeadquarters member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChargeNotConfiguredOnHeadquarters,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShippingChargeRefundCannotBePositive member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShippingChargeRefundCannotBePositive,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShippingChargeRefundIsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShippingChargeRefundIsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesGroupItemGroupIntersectionInvalid member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesGroupItemGroupIntersectionInvalid,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotApplyHeaderChargesWhenShippingRefundAppliedOnCartLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotApplyHeaderChargesWhenShippingRefundAppliedOnCartLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotApplyRefundChargeOnProductForSale member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotApplyRefundChargeOnProductForSale,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PickupModeOfDeliveryNotConfiguredOnHeadquarters member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PickupModeOfDeliveryNotConfiguredOnHeadquarters,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SerialNumberMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SerialNumberMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SerialNumberCannotBeChanged member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SerialNumberCannotBeChanged,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SerialNumberMissingInCustomerOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SerialNumberMissingInCustomerOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SerializedQuantityGreaterThanOne member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SerializedQuantityGreaterThanOne,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleCreditCardPaymentNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleCreditCardPaymentNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCardExpirationDate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCardExpirationDate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PurchaseTransferOrderMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PurchaseTransferOrderMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotAllLinesSaved member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotAllLinesSaved,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PurchaseTransferOrderRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PurchaseTransferOrderRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesMustHaveQuantityGreaterThanZero member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesMustHaveQuantityGreaterThanZero,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReturnsMustHaveQuantityLesserThanZero member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReturnsMustHaveQuantityLesserThanZero,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotReturnMoreThanPurchased member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotReturnMoreThanPurchased,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotReturnMoreThanInvoicedMinusReturned member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotReturnMoreThanInvoicedMinusReturned,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotReturnMultipleTransactions member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotReturnMultipleTransactions,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PropertyUpdateNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PropertyUpdateNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardDiscountNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardDiscountNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LoadingActiveCartFromAnotherTerminalNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LoadingActiveCartFromAnotherTerminalNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShiftAlreadyOpenOnDifferentTerminal member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShiftAlreadyOpenOnDifferentTerminal,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TerminalHasAnOpenShift member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TerminalHasAnOpenShift,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CashDrawerHasAnOpenShift member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CashDrawerHasAnOpenShift,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShiftStartingAmountNotEntered member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShiftStartingAmountNotEntered,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShiftTenderDeclarationAmountNotEntered member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShiftTenderDeclarationAmountNotEntered,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShiftHasUnreconciledLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShiftHasUnreconciledLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReconciliationLineStatusMustBePending member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReconciliationLineStatusMustBePending,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MoreThanOneTenderTypeForTenderTypeId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MoreThanOneTenderTypeForTenderTypeId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TimeClockNotEnabled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TimeClockNotEnabled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ViewTimeClockNotEnabled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ViewTimeClockNotEnabled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneOperationWithAGiftCard member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneOperationWithAGiftCard,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardUnlockFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardUnlockFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardLineVoidReversalNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardLineVoidReversalNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesInvoiceLineVoidReversalNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesInvoiceLineVoidReversalNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotSuspendCartWithActiveTenderLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotSuspendCartWithActiveTenderLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotSuspendCartWithActiveGiftCardSalesLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotSuspendCartWithActiveGiftCardSalesLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotUpdateUnitOfMeasureOnPriceOverriddenLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotUpdateUnitOfMeasureOnPriceOverriddenLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SettleInvoiceFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SettleInvoiceFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TerminalNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TerminalNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidQuantity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidQuantity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemQuantityExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemQuantityExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoPriceOverrideForReturns member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoPriceOverrideForReturns,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoPriceOverrideForGiftCards member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoPriceOverrideForGiftCards,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoPriceOverrideForInvoiceLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoPriceOverrideForInvoiceLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotAddNonProductItemToCustomerOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotAddNonProductItemToCustomerOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReturnItemPriceExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReturnItemPriceExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReturnTransactionTotalExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReturnTransactionTotalExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShiftNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShiftNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShiftValidationError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShiftValidationError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CredentialIdentifierAlreadyInUse member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CredentialIdentifierAlreadyInUse,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CreditVoucherNull member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CreditVoucherNull,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CartNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CartNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositMultipleCartLinesNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositMultipleCartLinesNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountNumberIsNotSet member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountNumberIsNotSet,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotPayForCustomerAccountDepositWithCustomerAccountPaymentMethod member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotPayForCustomerAccountDepositWithCustomerAccountPaymentMethod,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositCannotBeNegative member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositCannotBeNegative,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositCannotBeVoided member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositCannotBeVoided,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OfflineDatabaseChunkFileNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OfflineDatabaseChunkFileNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChannelIsNotPublished member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChannelIsNotPublished,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidOperation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidOperation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MaxCountingDifferenceExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MaxCountingDifferenceExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_EmployeeNotAllowedManageSharedShift member.\n */\n Microsoft_Dynamics_Commerce_Runtime_EmployeeNotAllowedManageSharedShift,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidBagNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidBagNumber,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoPrintersReturned member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoPrintersReturned,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_EnteringPriceNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_EnteringPriceNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MustKeyInEqualHigherPrice member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MustKeyInEqualHigherPrice,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MustKeyInEqualLowerPrice member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MustKeyInEqualLowerPrice,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MustKeyInNewPrice member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MustKeyInNewPrice,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConflictingClaimsPresentOnUserContext member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConflictingClaimsPresentOnUserContext,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCartSalesLineAdd member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCartSalesLineAdd,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCartSalesLineUpdate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCartSalesLineUpdate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCartState member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCartState,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidProduct member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidProduct,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConflictingCartLineOperation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConflictingCartLineOperation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCartLinesAggregateError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCartLinesAggregateError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCartInventoryLocationId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCartInventoryLocationId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateOfReadOnlyCart member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateOfReadOnlyCart,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerOrDirectoryPartyNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerOrDirectoryPartyNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotUpdateCustomerAndLoyaltyCardAtTheSameTime member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotUpdateCustomerAndLoyaltyCardAtTheSameTime,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ConflictLoyaltyCardCustomerAndTransactionCustomer member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ConflictLoyaltyCardCustomerAndTransactionCustomer,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCashBackAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCashBackAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PreValidationForAsyncAddressFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PreValidationForAsyncAddressFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ZeroPriceIsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ZeroPriceIsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OperationNotAllowedOnLinkedProduct member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OperationNotAllowedOnLinkedProduct,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountMismatchBetweenTransactionAndDepositLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountMismatchBetweenTransactionAndDepositLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositLineDoesNotAllowSettingTransactionStatus member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositLineDoesNotAllowSettingTransactionStatus,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositLinesNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountDepositLinesNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReturnLineNumberNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReturnLineNumberNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerNameExceedsMaximumLength member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerNameExceedsMaximumLength,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerPhoneNumberExceedsMaximumLength member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerPhoneNumberExceedsMaximumLength,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerEmailExceedsMaximumLength member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerEmailExceedsMaximumLength,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidShiftStatusChange member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidShiftStatusChange,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AmountExceedsMaximumAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AmountExceedsMaximumAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PrintXZReportNotConfigured member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PrintXZReportNotConfigured,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ColumnsNameBadFormat member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ColumnsNameBadFormat,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SelectedValuesDidNotMatchExactlyOneProduct member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SelectedValuesDidNotMatchExactlyOneProduct,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ProductNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ProductNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DiscountNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DiscountNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_FailedToRecallTransaction member.\n */\n Microsoft_Dynamics_Commerce_Runtime_FailedToRecallTransaction,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultiplePrimaryAddresses member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultiplePrimaryAddresses,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SortingColumnsNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SortingColumnsNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WorkerDoesNotHaveAllowSaleOutsideAssortmentPermission member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WorkerDoesNotHaveAllowSaleOutsideAssortmentPermission,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidOrderInvoiceData member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidOrderInvoiceData,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoSalesInvoiceReturned member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoSalesInvoiceReturned,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardLineNotAllowedWithInvoiceLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardLineNotAllowedWithInvoiceLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedInCustomerOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedInCustomerOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerOrderNotAllowedToContainInvoiceLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerOrderNotAllowedToContainInvoiceLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesLineNotAllowedDuringInvoicePayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesLineNotAllowedDuringInvoicePayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ItemLinesNotAllowedWithInvoiceLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ItemLinesNotAllowedWithInvoiceLine,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleInvoiceLinesNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleInvoiceLinesNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountRemovalNotAllowedForInvoiceSales member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountRemovalNotAllowedForInvoiceSales,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedInCartWithoutCustomerAccount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedInCartWithoutCustomerAccount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedInCartWithDifferentCustomerAccount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedInCartWithDifferentCustomerAccount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvoiceDiscountNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvoiceDiscountNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidAttributeValue member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidAttributeValue,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeValueOutOfBounds member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeValueOutOfBounds,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeValueCannotBeNull member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeValueCannotBeNull,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeTypeMismatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeTypeMismatch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeDefinitionNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeDefinitionNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeValidationFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeValidationFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MixingSalesAndReturnsProhibited member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MixingSalesAndReturnsProhibited,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCouponCode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCouponCode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CouponRequiresCustomerOnCart member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CouponRequiresCustomerOnCart,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExclusiveCouponCannotBeAppliedWithOtherCoupons member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExclusiveCouponCannotBeAppliedWithOtherCoupons,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CouponExceedsDefinedUsageLimits member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CouponExceedsDefinedUsageLimits,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserCannotAcceptFulfillmentLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserCannotAcceptFulfillmentLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserCannotRejectFulfillmentLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserCannotRejectFulfillmentLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RestrictPrintingReceiptCopy_AlreadyRegistered member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RestrictPrintingReceiptCopy_AlreadyRegistered,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RestrictPrintingReceiptCopy_HQisNotAvailable member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RestrictPrintingReceiptCopy_HQisNotAvailable,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RestrictPrintingReceiptCopy member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RestrictPrintingReceiptCopy,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RemoveAddPaymentMethodConfigurationNotDefined member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RemoveAddPaymentMethodConfigurationNotDefined,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OverrideDepostAmountShouldBeLargerThanCarriedOutAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OverrideDepostAmountShouldBeLargerThanCarriedOutAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MixingItemIdsAndProductIdsProhibited member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MixingItemIdsAndProductIdsProhibited,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PackingLinesFromDifferentOrdersNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PackingLinesFromDifferentOrdersNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidFulfillmentLineKey member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidFulfillmentLineKey,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Missing_LocationId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Missing_LocationId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Missing_ShipDate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Missing_ShipDate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_Missing_ReceiveDate member.\n */\n Microsoft_Dynamics_Commerce_Runtime_Missing_ReceiveDate,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidOrderType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidOrderType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShippingSerializedProductsNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShippingSerializedProductsNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ShippingMultipleOrdersNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ShippingMultipleOrdersNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToOpenShift member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToOpenShift,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CartAlreadyCheckedOut member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CartAlreadyCheckedOut,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CashDrawerLimitExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CashDrawerLimitExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_InvalidShift member.\n */\n Microsoft_Dynamics_Commerce_InvalidShift,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SuspendedTransactionNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SuspendedTransactionNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CartContainsProductsForReturnOnly member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CartContainsProductsForReturnOnly,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerBlockedForLoyaltyEnrollment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerBlockedForLoyaltyEnrollment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InactiveCouponCode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InactiveCouponCode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExpiredCouponCode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExpiredCouponCode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotStartedCouponCode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotStartedCouponCode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExceededUsageLimitCouponCode member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExceededUsageLimitCouponCode,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidResumeCartRequest member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidResumeCartRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChargeCodeNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChargeCodeNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentException_ReturnWithoutReceiptPayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentException_ReturnWithoutReceiptPayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AddressLengthExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AddressLengthExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CountyLengthExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CountyLengthExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_StreetLengthExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_StreetLengthExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidLinkedPayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidLinkedPayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttributeMustBeUnique member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttributeMustBeUnique,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotesLengthExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotesLengthExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToLocateTenderTypeWithGivenId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToLocateTenderTypeWithGivenId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TenderTypeDoesNotSupportGiftCardOperations member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TenderTypeDoesNotSupportGiftCardOperations,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ExtensibleTransactionTypeNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ExtensibleTransactionTypeNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidLastModifiedDateTimeFromValue member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidLastModifiedDateTimeFromValue,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidRefinerRecordIdForCustomerSearchKeywordRefiner member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidRefinerRecordIdForCustomerSearchKeywordRefiner,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidCustomerOrderModeForCheckout member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidCustomerOrderModeForCheckout,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidCartTypeForCheckout member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidCartTypeForCheckout,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MissingSequentialSignature member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MissingSequentialSignature,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MissingRecordIdForStorePickUpAddress member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MissingRecordIdForStorePickUpAddress,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidChecklistTasksUpdateRequest member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidChecklistTasksUpdateRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChecklistTasksCreateNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChecklistTasksCreateNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidTransferOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidTransferOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidTransferOrderLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidTransferOrderLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DefaultLocationNotFoundForWarehouse member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DefaultLocationNotFoundForWarehouse,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ApplyMaxQuantitiesNotSupportedForOperationType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ApplyMaxQuantitiesNotSupportedForOperationType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransactionServiceDeserializationError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransactionServiceDeserializationError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotValidStatus member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotValidStatus,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentUpdateLinesCriteriaNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentUpdateLinesCriteriaNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventorySourceDocumentLineMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventorySourceDocumentLineMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateInventoryDocumentStatusUnsupportedTransition member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateInventoryDocumentStatusUnsupportedTransition,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AddingLinesToOrderIsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AddingLinesToOrderIsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverreceivingToTransferOrderIsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverreceivingToTransferOrderIsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverdeliveringToTransferOrderIsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverdeliveringToTransferOrderIsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverreceivingNotEnabled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverreceivingNotEnabled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOvershippingNotEnabled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOvershippingNotEnabled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverReceivedExceedsThreshold member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverReceivedExceedsThreshold,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverShippedExceedsThreshold member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOverShippedExceedsThreshold,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOperationCommitFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentOperationCommitFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentReceiptIdNotValid member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentReceiptIdNotValid,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentReceiptIdNotSupportedForGivenDocumentType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentReceiptIdNotSupportedForGivenDocumentType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentLockedByOtherTerminal member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentLockedByOtherTerminal,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentVersionNull member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentVersionNull,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotValidVersion member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotValidVersion,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotEnoughApplicableLinesForUpdateLinesByProduct member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotEnoughApplicableLinesForUpdateLinesByProduct,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentExceedMaximumQuantity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentExceedMaximumQuantity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentLineProductIdMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentLineProductIdMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_StoreOrgUnitNameMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_StoreOrgUnitNameMissing,\n \n /**\n * The Microsoft_Dynamics_RetailServer_BadRequest member.\n */\n Microsoft_Dynamics_RetailServer_BadRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidItemTaxGroup member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidItemTaxGroup,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MixingGiftCardsAndDepositLinesNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MixingGiftCardsAndDepositLinesNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentRowVersionMismatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentRowVersionMismatch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AssociatedWarrantableIsVoided member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AssociatedWarrantableIsVoided,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidWarrantyLineQuantity member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidWarrantyLineQuantity,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DuplicatedWarranty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DuplicatedWarranty,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesOrderNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesOrderNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SalesOrderVoided member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SalesOrderVoided,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyAlreadyAdded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyAlreadyAdded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyAlreadyBought member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyAlreadyBought,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyNotApplicableByPrice member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyNotApplicableByPrice,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidWarranty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidWarranty,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyOperationalLineNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyOperationalLineNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyForReturnedItemNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyForReturnedItemNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IsNotWarranty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IsNotWarranty,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotChangeWarrantableProductWhenItAssociatesWarranty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotChangeWarrantableProductWhenItAssociatesWarranty,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyNotEmptyForReturn member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyNotEmptyForReturn,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotSpecifyBothWarrantableLineNumberAndWarrantiedId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotSpecifyBothWarrantableLineNumberAndWarrantiedId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CannotHaveMultipleWarrantablesOrWarrantiesWithSameWarrantiedId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CannotHaveMultipleWarrantablesOrWarrantiesWithSameWarrantiedId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OnlySerializedProductCanHaveWarranty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OnlySerializedProductCanHaveWarranty,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CrossCustomerWarrantyNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CrossCustomerWarrantyNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CrossCustomerWarrantyReturnNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CrossCustomerWarrantyReturnNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerChangeNotAllowedWithWarrantyLines member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerChangeNotAllowedWithWarrantyLines,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerChangeNotAllowedWithWarrantyReturn member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerChangeNotAllowedWithWarrantyReturn,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CartTypeChangeNotAllowedWhenWarrantableInDifferentOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CartTypeChangeNotAllowedWhenWarrantableInDifferentOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyInconsistentCartType member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyInconsistentCartType,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyRelationCombiningCashAndCarryAndCustomerOrderNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyRelationCombiningCashAndCarryAndCustomerOrderNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentViolatesReturnPolicy member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentViolatesReturnPolicy,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CardTypeNotValid member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CardTypeNotValid,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationFormatNotValid member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationFormatNotValid,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationInvalidCategorySetup member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationInvalidCategorySetup,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationIsPrimaryAddressRestricted member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationIsPrimaryAddressRestricted,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationNumberMustBeUnique member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaxRegistrationNumberMustBeUnique,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ElectronicAddressTypeNotValid member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ElectronicAddressTypeNotValid,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RecipientAddressCountExceededMaximumAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RecipientAddressCountExceededMaximumAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SearchingWarehouseLocationsInMultipleWarehousesNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SearchingWarehouseLocationsInMultipleWarehousesNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SearchingWarehouseLocationsWithoutWarehouseNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SearchingWarehouseLocationsWithoutWarehouseNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryNoAvailableReceiveQtyTransferOrder member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryNoAvailableReceiveQtyTransferOrder,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberNotMatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberNotMatch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberLinesFulfilled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberLinesFulfilled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberDuplicated member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberDuplicated,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotBlankSerialNumberRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotBlankSerialNumberRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberLineNonIntegerQuantityEntered member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentSerialNumberLineNonIntegerQuantityEntered,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotAllowToUpdatePostedSerialNumbers member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotAllowToUpdatePostedSerialNumbers,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultiplePrimaryCustomerContactsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultiplePrimaryCustomerContactsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotSupportedHeadquarterVersion member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentNotSupportedHeadquarterVersion,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransferOrderUnderDeliveryNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransferOrderUnderDeliveryNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransferOrderLineNotAllowToClose member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransferOrderLineNotAllowToClose,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransferOrderUnderDeliveryBelowTolerance member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentTransferOrderUnderDeliveryBelowTolerance,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentValidationResultCategoryMustBeSpecified member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentValidationResultCategoryMustBeSpecified,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentValidationResultCategoryCanOnlyBeSpecifiedOnce member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentValidationResultCategoryCanOnlyBeSpecifiedOnce,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentDoesNotExist member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentDoesNotExist,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentPurchaseOrderChangeRequestRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentPurchaseOrderChangeRequestRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentPurchaseOrderChangeRequestRequirementUnknown member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentPurchaseOrderChangeRequestRequirementUnknown,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentLineMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryDocumentLineMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventorySerialNumberNotAvailable member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventorySerialNumberNotAvailable,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidEntityProperty member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidEntityProperty\n }\n \n /**\n * FeatureNotSupportedErrors enum type.\n */\n export enum FeatureNotSupportedErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequestTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequestTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequestParametersNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequestParametersNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequestParameterValueNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequestParameterValueNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChangeTenderTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChangeTenderTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DemoModeOperationNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DemoModeOperationNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RealtimeServiceNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RealtimeServiceNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OnlineChannelRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OnlineChannelRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CouponsNotSupportedOnSalesQuotations member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CouponsNotSupportedOnSalesQuotations,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_FeatureNotSupportedInHeadquarters member.\n */\n Microsoft_Dynamics_Commerce_Runtime_FeatureNotSupportedInHeadquarters,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdatingCouponsNotSupportedOnPickup member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdatingCouponsNotSupportedOnPickup,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateAsyncCustomerNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateAsyncCustomerNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardPaymentNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardPaymentNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardOperationNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardOperationNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CurrentVersionSupportsOnlyOneInvoicePayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CurrentVersionSupportsOnlyOneInvoicePayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleCategoryIdsNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleCategoryIdsNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CrossStoreProductSearchNotSupportedInOnlineChannel member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CrossStoreProductSearchNotSupportedInOnlineChannel,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CrossStoreGetActivePriceNotSupportedInOnlineChannel member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CrossStoreGetActivePriceNotSupportedInOnlineChannel,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateClientBookNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateClientBookNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequestCustomerTimelineItemsNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequestCustomerTimelineItemsNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RequestCustomerTimelineItemTypesNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RequestCustomerTimelineItemTypesNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CreateCustomerTimelineItemNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CreateCustomerTimelineItemNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateCustomerTimelineItemNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateCustomerTimelineItemNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_SearchByIdsNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_SearchByIdsNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DocumentOperationNotSupportedInHeadquarters member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DocumentOperationNotSupportedInHeadquarters,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaskManagementNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaskManagementNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryInboundOutboundDocumentsWithoutASourceDocumentNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryInboundOutboundDocumentsWithoutASourceDocumentNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_WarrantyForCustomerOrderNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_WarrantyForCustomerOrderNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OptimizedProductAvailabilityJobNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OptimizedProductAvailabilityJobNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryInboundOutboundDocumentsValidationNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryInboundOutboundDocumentsValidationNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InventoryAddingItemToPurchaseOrderNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InventoryAddingItemToPurchaseOrderNotSupported\n }\n \n /**\n * SecurityErrors enum type.\n */\n export enum SecurityErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AuthenticationFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AuthenticationFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AuthenticationMethodDisabled member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AuthenticationMethodDisabled,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CommerceIdentityNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CommerceIdentityNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_EmployeePermissionContextNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_EmployeePermissionContextNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserNotActivated member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserNotActivated,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PrincipalMissing member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PrincipalMissing,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PasswordRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PasswordRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChangePasswordFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChangePasswordFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidPassword member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidPassword,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IdentityProviderNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IdentityProviderNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidAuthenticationCredentials member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidAuthenticationCredentials,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdatePasswordFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdatePasswordFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ResetPasswordFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ResetPasswordFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NonDrawerOperationsOnly member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NonDrawerOperationsOnly,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UseExistingShiftPermissionDenied member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UseExistingShiftPermissionDenied,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CreateTransferOrderNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CreateTransferOrderNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserCannotMassActivation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserCannotMassActivation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OpenMultipleShiftsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OpenMultipleShiftsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserSessionNotOpened member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserSessionNotOpened,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HeadquarterTransactionServiceMethodCallFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HeadquarterTransactionServiceMethodCallFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HeadquarterCommunicationFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HeadquarterCommunicationFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeviceTokenExpired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeviceTokenExpired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeviceTokenNotPresent member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeviceTokenNotPresent,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidChannel member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidChannel,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ElevatedUserSameAsLoggedOnUser member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ElevatedUserSameAsLoggedOnUser,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GrantTypeNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GrantTypeNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeviceDeactivationFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeviceDeactivationFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_HardwareStationTokenCreationFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_HardwareStationTokenCreationFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidHardwareStationToken member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidHardwareStationToken,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserLogonAnotherTerminal member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserLogonAnotherTerminal,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnlockRegisterFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnlockRegisterFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ChannelDatabaseConnectionFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ChannelDatabaseConnectionFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidUserToken member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidUserToken,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountAuthorizationFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountAuthorizationFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LocalLogonFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LocalLogonFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LocalDeviceAuthenticationFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LocalDeviceAuthenticationFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeviceTokenValidationFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeviceTokenValidationFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoDeviceManagementPermission member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoDeviceManagementPermission,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_IncorrectLogonTypeUserAccountOrPassword member.\n */\n Microsoft_Dynamics_Commerce_Runtime_IncorrectLogonTypeUserAccountOrPassword,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidAudience member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidAudience,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidIssuer member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidIssuer,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TenantIdNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TenantIdNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AADTokenIssuedForDifferentEnvironment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AADTokenIssuedForDifferentEnvironment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidAADTenantId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidAADTenantId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserBlockedDueToTooManyFailedLogonAttempts member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserBlockedDueToTooManyFailedLogonAttempts,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UserPasswordExpired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UserPasswordExpired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CheckOutNotOverHTTPS member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CheckOutNotOverHTTPS,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_AttemptToActivateFromDifferentPhysicalDevice member.\n */\n Microsoft_Dynamics_Commerce_Runtime_AttemptToActivateFromDifferentPhysicalDevice,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InternalServerError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InternalServerError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_DeviceActivationNotAllowedWithUserTokenIssuer member.\n */\n Microsoft_Dynamics_Commerce_Runtime_DeviceActivationNotAllowedWithUserTokenIssuer,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PasswordComplexityRequirementsNotMet member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PasswordComplexityRequirementsNotMet,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PasswordHistoryRequirementsNotMet member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PasswordHistoryRequirementsNotMet,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReturnItemPriceExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReturnItemPriceExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ReturnTransactionTotalExceeded member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ReturnTransactionTotalExceeded,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CredentialsNotConfigured member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CredentialsNotConfigured,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PolicyBypassNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PolicyBypassNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OnBehalfOfNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OnBehalfOfNotAllowed\n }\n \n /**\n * StorageErrors enum type.\n */\n export enum StorageErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CriticalStorageError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CriticalStorageError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnexpectedNumberOfRowsError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnexpectedNumberOfRowsError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ObjectVersionMismatchError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ObjectVersionMismatchError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_StorageRequestTimeout member.\n */\n Microsoft_Dynamics_Commerce_Runtime_StorageRequestTimeout,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateOfReadOnlyRowError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateOfReadOnlyRowError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TransientStorageError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TransientStorageError,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ValueTooLong member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ValueTooLong\n }\n \n /**\n * VersionNotSupportedErrors enum type.\n */\n export enum VersionNotSupportedErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RetailServerApiVersionNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RetailServerApiVersionNotSupported\n }\n \n /**\n * PaymentErrors enum type.\n */\n export enum PaymentErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToCapturePayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToCapturePayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToRefundPayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToRefundPayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToGetCardPaymentAcceptPoint member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToGetCardPaymentAcceptPoint,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidCashBackAmount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidCashBackAmount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_ManualCardNumberNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_ManualCardNumberNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TenderLineCannotBeVoided member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TenderLineCannotBeVoided,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard member.\n */\n Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentIsNotAllowedForCustomerOrderDepositAndCancellation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentIsNotAllowedForCustomerOrderDepositAndCancellation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutItems member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutItems,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromTotalCustomerAccountPayment member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromTotalCustomerAccountPayment,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_FraudRisk member.\n */\n Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TokenizedPaymentCardNotExpected member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TokenizedPaymentCardNotExpected,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_OrderManager_CreditMemo_MissingId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_OrderManager_CreditMemo_MissingId,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TenderLineIsNotAvailableInSalesTransaction member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TenderLineIsNotAvailableInSalesTransaction,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit\n }\n \n /**\n * FiscalIntegrationServiceErrors enum type.\n */\n export enum FiscalIntegrationServiceErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidProfilesConfiguration member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidProfilesConfiguration,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_FiscalService_NotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_FiscalService_NotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableResolveRegistrationProcess member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableResolveRegistrationProcess,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UnableResolveTechnicalProfileForRegistrationProcessLine member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UnableResolveTechnicalProfileForRegistrationProcessLine\n }\n \n /**\n * CommerceDataExchangeErrors enum type.\n */\n export enum CommerceDataExchangeErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CdxDataPackageApplicationFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CdxDataPackageApplicationFailure,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CdxSyncLibraryHealthCheckFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CdxSyncLibraryHealthCheckFailure\n }\n \n /**\n * TaskManagementErrorCode enum type.\n */\n export enum TaskManagementErrorCode {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_CreateTaskFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_CreateTaskFailure = 1,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GetTaskFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GetTaskFailure = 2,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_UpdateTaskFailure member.\n */\n Microsoft_Dynamics_Commerce_Runtime_UpdateTaskFailure = 3,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphCallTimeOut member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphCallTimeOut = 4,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceUnauthorized member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceUnauthorized = 5,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceNotFound = 6,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceConflict member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceConflict = 7,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceVersionMismatch member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceVersionMismatch = 8,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceGeneralError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceGeneralError = 9,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumActiveTasksInProject member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumActiveTasksInProject = 10,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumAssigneesInTasks member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumAssigneesInTasks = 11,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumTasksAssignedToUser member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumTasksAssignedToUser = 12,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumTasksCreatedByUser member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumTasksCreatedByUser = 13,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumTasksInProject member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumTasksInProject = 14,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumBucketsInProject member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumBucketsInProject = 15,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumChecklistItemsOnTask member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumChecklistItemsOnTask = 16,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumPlannerPlans member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumPlannerPlans = 17,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumProjectsOwnedByUser member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumProjectsOwnedByUser = 18,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumProjectsSharedWithUser member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumProjectsSharedWithUser = 19,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumReferencesOnTask member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumReferencesOnTask = 20,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumUsersSharedWithProject member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_MaximumUsersSharedWithProject = 21,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_General member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphService_Forbidden_General = 22,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceNotValidData member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceNotValidData = 23,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceInternalServerError member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceInternalServerError = 24,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_GraphServiceUnavailable member.\n */\n Microsoft_Dynamics_Commerce_Runtime_GraphServiceUnavailable = 25,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaskService_FailedToGetPlanId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaskService_FailedToGetPlanId = 26,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaskService_FailedToFindExternalSubId member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaskService_FailedToFindExternalSubId = 27,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_TaskService_EmptyGraphToken member.\n */\n Microsoft_Dynamics_Commerce_Runtime_TaskService_EmptyGraphToken = 28\n }\n \n /**\n * PricingDataValidationErrors enum type.\n */\n export enum PricingDataValidationErrors {\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MixAndMatchDiscountWithInvalidLineGroups member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MixAndMatchDiscountWithInvalidLineGroups,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_MixAndMatchDiscountWithNoLineGroups member.\n */\n Microsoft_Dynamics_Commerce_Runtime_MixAndMatchDiscountWithNoLineGroups\n }\n \n /**\n * PaymentConfigurationErrors enum type.\n */\n export enum PaymentConfigurationErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentConnectorNotFound member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentConnectorNotFound,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_LoyaltyCardPaymentNotConfigured member.\n */\n Microsoft_Dynamics_Commerce_Runtime_LoyaltyCardPaymentNotConfigured,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_NotValidCardTypeInformation member.\n */\n Microsoft_Dynamics_Commerce_Runtime_NotValidCardTypeInformation,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_InvalidDataInTokenizedCard member.\n */\n Microsoft_Dynamics_Commerce_Runtime_InvalidDataInTokenizedCard,\n \n /**\n * The Microsoft_Dynamics_Commerce_Runtime_PaymentConnectorFilesNotFoundWhileLoadingAssemblies member.\n */\n Microsoft_Dynamics_Commerce_Runtime_PaymentConnectorFilesNotFoundWhileLoadingAssemblies\n }\n \n /**\n * TaxLimitBase enum type.\n */\n export enum TaxLimitBase {\n \n /**\n * The LineWithoutVat member.\n */\n LineWithoutVat = 0,\n \n /**\n * The UnitWithoutVat member.\n */\n UnitWithoutVat = 1,\n \n /**\n * The InvoiceWithoutVat member.\n */\n InvoiceWithoutVat = 2,\n \n /**\n * The LineWithVat member.\n */\n LineWithVat = 3,\n \n /**\n * The UnitWithVat member.\n */\n UnitWithVat = 4,\n \n /**\n * The InvoiceWithVat member.\n */\n InvoiceWithVat = 5\n }\n \n /**\n * BusinessPartnerOperationDeliveryType enum type.\n */\n export enum BusinessPartnerOperationDeliveryType {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Email member.\n */\n Email = 1\n }\n \n /**\n * OnlineStoreCustomerType enum type.\n */\n export enum OnlineStoreCustomerType {\n \n /**\n * The B2C member.\n */\n B2C = 0,\n \n /**\n * The B2B member.\n */\n B2B = 1\n }\n \n /**\n * WrongEndpointErrors enum type.\n */\n export enum WrongEndpointErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Commerce_WrongEndpoint member.\n */\n Microsoft_Dynamics_Commerce_WrongEndpoint\n }\n \n /**\n * RetailServerApiErrors enum type.\n */\n export enum RetailServerApiErrors {\n \n /**\n * The None member.\n */\n None,\n \n /**\n * The Microsoft_Dynamics_Internal_Server_Error member.\n */\n Microsoft_Dynamics_Internal_Server_Error,\n \n /**\n * The Microsoft_Dynamics_RetailServer_BadRequest member.\n */\n Microsoft_Dynamics_RetailServer_BadRequest,\n \n /**\n * The Microsoft_Dynamics_RetailServer_RequestTooLarge member.\n */\n Microsoft_Dynamics_RetailServer_RequestTooLarge,\n \n /**\n * The Microsoft_Dynamics_RetailServer_ODataModelError member.\n */\n Microsoft_Dynamics_RetailServer_ODataModelError,\n \n /**\n * The Microsoft_Dynamics_RetailServer_MissingRequiredArgument member.\n */\n Microsoft_Dynamics_RetailServer_MissingRequiredArgument,\n \n /**\n * The Microsoft_Dynamics_RetailServer_InvalidArgumentType member.\n */\n Microsoft_Dynamics_RetailServer_InvalidArgumentType,\n \n /**\n * The Microsoft_Dynamics_RetailServer_ParameterHasNullValue member.\n */\n Microsoft_Dynamics_RetailServer_ParameterHasNullValue,\n \n /**\n * The Microsoft_Dynamics_RetailServer_MultipleValuesOfSameArgument member.\n */\n Microsoft_Dynamics_RetailServer_MultipleValuesOfSameArgument,\n \n /**\n * The Microsoft_Dynamics_RetailServer_ODataControllerError member.\n */\n Microsoft_Dynamics_RetailServer_ODataControllerError\n }\n \n /**\n * ExceptionSeverity enum type.\n */\n export enum ExceptionSeverity {\n \n /**\n * The None member.\n */\n None = 0,\n \n /**\n * The Error member.\n */\n Error = 1,\n \n /**\n * The Warning member.\n */\n Warning = 2,\n \n /**\n * The Critical member.\n */\n Critical = 3,\n \n /**\n * The Informational member.\n */\n Informational = 4\n }\n \n /**\n * Category entity interface.\n */\n export interface Category {\n RecordId: number;\n OfflineImage?: string;\n Name?: string;\n ParentCategory?: number;\n DisplayOrder?: number;\n LocalizedDescription?: string;\n Images?: MediaLocation[];\n NameTranslations?: TextValueTranslation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Cart entity interface.\n */\n export interface Cart {\n AffiliationLines?: AffiliationLoyaltyTier[];\n IsRequiredAmountPaid?: boolean;\n IsDiscountFullyCalculated?: boolean;\n IgnoreDiscountCalculation?: boolean;\n AmountDue?: number;\n AmountPaid?: number;\n AttributeValues?: AttributeValueBase[];\n IsTaxIncludedInPrice?: boolean;\n BeginDateTime?: Date;\n BusinessDate?: Date;\n CancellationChargeAmount?: number;\n EstimatedShippingAmount?: number;\n CartLines?: CartLine[];\n CartTypeValue?: number;\n ChannelId?: number;\n ChargeAmount?: number;\n CustomerOrderRemainingBalance?: number;\n ChargeLines?: ChargeLine[];\n TaxViewLines?: TaxViewLine[];\n Comment?: string;\n InvoiceComment?: string;\n Coupons?: Coupon[];\n CustomerId?: string;\n CustomerOrderModeValue?: number;\n DeliveryMode?: string;\n DeliveryModeChargeAmount?: number;\n DiscountAmount?: number;\n DiscountAmountWithoutTax?: number;\n DiscountCodes?: string[];\n Id: string;\n SuspendedCartId?: string;\n TransactionTypeValue?: number;\n CustomerAccountDepositLines?: CustomerAccountDepositLine[];\n IncomeExpenseLines?: IncomeExpenseLine[];\n IncomeExpenseTotalAmount?: number;\n IsReturnByReceipt?: boolean;\n ReturnTransactionHasLoyaltyPayment?: boolean;\n IsFavorite?: boolean;\n IsRecurring?: boolean;\n IsSuspended?: boolean;\n LoyaltyCardId?: string;\n ModifiedDateTime?: Date;\n Name?: string;\n OrderNumber?: string;\n AvailableDepositAmount?: number;\n OverriddenDepositAmount?: number;\n OverriddenDepositWithoutCarryoutAmount?: number;\n PrepaymentAmountPaid?: number;\n PrepaymentRoundingDifference?: number;\n PrepaymentAppliedOnPickup?: number;\n PrepaymentAmountInvoiced?: number;\n PromotionLines?: string[];\n QuotationExpiryDate?: Date;\n ReasonCodeLines?: ReasonCodeLine[];\n ReceiptEmail?: string;\n RequestedDeliveryDate?: Date;\n RequiredDepositAmount?: number;\n RequiredDepositWithoutCarryoutAmount?: number;\n SalesId?: string;\n ShippingAddress?: Address;\n StaffId?: string;\n SubtotalAmount?: number;\n SubtotalAmountWithoutTax?: number;\n NetPrice?: number;\n SubtotalSalesAmount?: number;\n TaxAmount?: number;\n TaxOnCancellationCharge?: number;\n TaxOnShippingCharge?: number;\n TaxOnNonShippingCharges?: number;\n TaxOverrideCode?: string;\n TenderLines?: TenderLine[];\n RefundableTenderLines?: TenderLine[];\n TerminalId?: string;\n TotalAmount?: number;\n TotalSalesAmount?: number;\n TotalReturnAmount?: number;\n TotalCarryoutSalesAmount?: number;\n TotalCustomerOrderSalesAmount?: number;\n TotalManualDiscountAmount?: number;\n TotalManualDiscountPercentage?: number;\n WarehouseId?: string;\n IsCreatedOffline?: boolean;\n CartStatusValue?: number;\n ReceiptTransactionTypeValue?: number;\n CommissionSalesGroup?: string;\n Version?: number;\n TotalItems?: number;\n HasTaxCalculationTriggered?: boolean;\n MerchantProperties?: PaymentMerchantInformation[];\n HasChargeCalculationTriggered?: boolean;\n FiscalTransactions?: FiscalTransaction[];\n ShippingChargeAmount?: number;\n OtherChargeAmount?: number;\n PeriodicDiscountsCalculateScopeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Customer entity interface.\n */\n export interface Customer {\n AccountNumber: string;\n RecordId?: number;\n CreatedDateTime?: Date;\n ChargeGroup?: string;\n PriceGroup?: string;\n IsCustomerTaxInclusive?: boolean;\n Phone?: string;\n PhoneRecordId?: number;\n PhoneExt?: string;\n Cellphone?: string;\n Email?: string;\n EmailRecordId?: number;\n Url?: string;\n UrlRecordId?: number;\n Name?: string;\n PersonNameId?: number;\n FirstName?: string;\n MiddleName?: string;\n LastName?: string;\n DirectoryPartyRecordId?: number;\n PartyNumber?: string;\n CustomerTypeValue?: number;\n Language?: string;\n CustomerGroup?: string;\n CurrencyCode?: string;\n CNPJCPFNumber?: string;\n IdentificationNumber?: string;\n InvoiceAccount?: string;\n MandatoryCreditLimit?: boolean;\n CreditRating?: string;\n CreditLimit?: number;\n Balance?: number;\n Blocked?: boolean;\n BlockedType?: number;\n UseOrderNumberReference?: boolean;\n OrganizationId?: string;\n UsePurchaseRequest?: boolean;\n MultilineDiscountGroup?: string;\n TotalDiscountGroup?: string;\n LineDiscountGroup?: string;\n TaxGroup?: string;\n SalesTaxGroup?: string;\n CommissionSalesGroupId?: string;\n TaxExemptNumber?: string;\n VatNumber?: string;\n TaxOffice?: string;\n NonChargeableAccount?: boolean;\n Tag?: string;\n ReceiptSettings?: number;\n ReceiptEmail?: string;\n OptOutPersonalization?: boolean;\n OptOutWebActivityTracking?: boolean;\n RetailCustomerTableRecordId?: number;\n OfflineImage?: string;\n IsAsyncCustomer?: boolean;\n NewCustomerPartyNumber?: string;\n CustomerAffiliations?: CustomerAffiliation[];\n Addresses?: Address[];\n Attributes?: CustomerAttribute[];\n Images?: MediaLocation[];\n TitleRecordId?: number;\n IsFloorLimitBlocked?: boolean;\n IsB2b?: boolean;\n IsB2bAdmin?: boolean;\n BusinessPartnerId?: string;\n Contacts?: ContactInfo[];\n AllowOnAccountPayment?: boolean;\n DefaultPaymentMethod?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Employee entity interface.\n */\n export interface Employee {\n StaffId: string;\n NameOnReceipt?: string;\n Name?: string;\n CultureName?: string;\n NumberOfDaysToPasswordExpiry?: number;\n Permissions?: EmployeePermissions;\n Images?: MediaLocation[];\n DefaultImage?: string;\n DefaultCommissionSalesGroup?: string;\n IdentifierTypeValue?: number;\n RecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Checklist entity interface.\n */\n export interface Checklist {\n RecordId: number;\n Tasks?: ChecklistTask[];\n Version?: string;\n ProcessId?: string;\n Name?: string;\n Description?: string;\n AssignedToChannelId?: number;\n AssignedToWorkerPersonnelNumber?: string;\n StatusValue?: number;\n StartDateTime?: Date;\n EndDateTime?: Date;\n TargetDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SalesOrder entity interface.\n */\n export interface SalesOrder {\n DocumentStatusValue?: number;\n RecordId?: number;\n StatusValue?: number;\n McrOrderStopped?: boolean;\n Shipments?: Shipment[];\n AggregateInventoryQuantities?: InventoryQuantities;\n UnifiedDeliveryInformation?: DeliveryInformation;\n PaymentStatusValue?: number;\n DetailedOrderStatusValue?: number;\n AffiliationLoyaltyTierLines?: SalesAffiliationLoyaltyTier[];\n IsRequiredAmountPaid?: boolean;\n IsDiscountFullyCalculated?: boolean;\n IgnoreDiscountCalculation?: boolean;\n AmountDue?: number;\n EstimatedShippingAmount?: number;\n AmountPaid?: number;\n CustomerOrderRemainingBalance?: number;\n AttributeValues?: AttributeValueBase[];\n AvailableDepositAmount?: number;\n BeginDateTime?: Date;\n CreatedDateTime?: Date;\n BusinessDate?: Date;\n CalculatedDepositAmount?: number;\n CancellationCharge?: number;\n ChannelId?: number;\n ChannelReferenceId?: string;\n ChargeAmount?: number;\n ChargeLines?: ChargeLine[];\n Comment?: string;\n Coupons?: Coupon[];\n InvoiceComment?: string;\n ContactInformationCollection?: ContactInformation[];\n CurrencyCode?: string;\n CustomerAccountDepositLines?: CustomerAccountDepositLine[];\n CustomerId?: string;\n CustomerOrderModeValue?: number;\n CustomerOrderTypeValue?: number;\n DeliveryMode?: string;\n DeliveryModeChargeAmount?: number;\n DiscountAmount?: number;\n DiscountAmountWithoutTax?: number;\n NetPrice?: number;\n DiscountCodes?: string[];\n EntryStatusValue?: number;\n GrossAmount?: number;\n HasLoyaltyPayment?: boolean;\n Id: string;\n InternalTransactionId?: string;\n SuspendedTransactionId?: string;\n IncomeExpenseLines?: IncomeExpenseLine[];\n IncomeExpenseTotalAmount?: number;\n InventoryLocationId?: string;\n IsCreatedOffline?: boolean;\n IsReturnByReceipt?: boolean;\n IsSuspended?: boolean;\n IsTaxIncludedInPrice?: boolean;\n IsTaxExemptedForPriceInclusive?: boolean;\n LineDiscount?: number;\n LineDiscountCalculationTypeValue?: number;\n LoyaltyCardId?: string;\n LoyaltyDiscountAmount?: number;\n LoyaltyManualDiscountAmount?: number;\n LoyaltyRewardPointLines?: LoyaltyRewardPointLine[];\n ModifiedDateTime?: Date;\n Name?: string;\n NetAmount?: number;\n NetAmountWithoutTax?: number;\n NetAmountWithNoTax?: number;\n NetAmountWithTax?: number;\n NumberOfItems?: number;\n OverriddenDepositAmount?: number;\n OverriddenDepositWithoutCarryoutAmount?: number;\n PeriodicDiscountAmount?: number;\n TenderDiscountAmount?: number;\n PrepaymentAmountAppliedOnPickup?: number;\n PrepaymentAmountInvoiced?: number;\n PrepaymentAmountPaid?: number;\n PrepaymentRoundingDifference?: number;\n QuotationExpiryDate?: Date;\n ReasonCodeLines?: ReasonCodeLine[];\n ReceiptEmail?: string;\n ReceiptId?: string;\n RequestedDeliveryDate?: Date;\n RequiredDepositAmount?: number;\n RequiredDepositWithoutCarryoutAmount?: number;\n ReturnTransactionHasLoyaltyPayment?: boolean;\n SalesId?: string;\n SalesPaymentDifference?: number;\n SalesLines?: SalesLine[];\n ShiftId?: number;\n ShiftTerminalId?: string;\n ShippingAddress?: Address;\n StaffId?: string;\n StatementCode?: string;\n StoreId?: string;\n SubtotalAmount?: number;\n SubtotalAmountWithoutTax?: number;\n SubtotalSalesAmount?: number;\n TaxAmount?: number;\n TaxAmountExclusive?: number;\n TaxAmountInclusive?: number;\n TaxLines?: TaxLine[];\n TaxOnCancellationCharge?: number;\n TaxOnShippingCharge?: number;\n TaxOnNonShippingCharges?: number;\n TaxOverrideCode?: string;\n TenderLines?: TenderLine[];\n RefundableTenderLines?: TenderLine[];\n TerminalId?: string;\n TotalAmount?: number;\n TotalSalesAmount?: number;\n TotalReturnAmount?: number;\n TotalCarryoutSalesAmount?: number;\n TotalCustomerOrderSalesAmount?: number;\n TotalDiscount?: number;\n TotalManualDiscountAmount?: number;\n TotalManualDiscountPercentage?: number;\n TransactionTypeValue?: number;\n TaxCalculationTypeValue?: number;\n SalesInvoiceAmount?: number;\n GiftCardActiveFrom?: Date;\n GiftCardBalance?: number;\n GiftCardExpireDate?: Date;\n GiftCardHistoryDetails?: string;\n GiftCardIssueAmount?: number;\n GiftCardIdMasked?: string;\n CommissionSalesGroup?: string;\n IsCommissionSalesGroupOverriddenByCustomer?: boolean;\n CommissionSalesGroupSetByCashier?: string;\n HasTaxCalculationTriggered?: boolean;\n HasChargeCalculationTriggered?: boolean;\n ShippingChargeAmount?: number;\n OtherChargeAmount?: number;\n PeriodicDiscountsCalculateScopeValue?: number;\n CustomerName?: string;\n FiscalTransactions?: FiscalTransaction[];\n LanguageId?: string;\n SalesAgreementRecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Shift entity interface.\n */\n export interface Shift {\n ShiftId: number;\n TerminalId: string;\n StartingAmountTotal: number;\n FloatingEntryAmountTotal: number;\n AddToTenderAmountTotal: number;\n SafeDropTotal: number;\n BankDropTotal: number;\n RemoveTenderAmountTotal: number;\n DeclareTenderAmountTotal: number;\n OverShortTotal: number;\n TenderedTotal: number;\n ChangeTotal: number;\n IncomeAccountTotal: number;\n ExpenseAccountTotal: number;\n CashDrawer?: string;\n StoreRecordId?: number;\n StoreId?: string;\n StaffId?: string;\n CurrentStaffId?: string;\n StatusValue?: number;\n StartDateTime?: Date;\n CloseDateTime?: Date;\n ClosedAtTerminalId?: string;\n ClosedAtShiftId?: number;\n CurrentTerminalId?: string;\n SalesTotal?: number;\n StatusDateTime?: Date;\n ReturnsTotal?: number;\n PaidToAccountTotal?: number;\n TaxTotal?: number;\n ChargeTotal?: number;\n DiscountTotal?: number;\n RoundedAmountTotal?: number;\n CustomerCount?: number;\n SaleTransactionCount?: number;\n NoSaleTransactionCount?: number;\n VoidTransactionCount?: number;\n LogOnTransactionCount?: number;\n SuspendedTransactionCount?: number;\n TransactionCount?: number;\n ReceiptsCount?: number;\n ReturnsCount?: number;\n GoodsSoldQty?: number;\n ServicesSoldQty?: number;\n ReceiptCopiesCount?: number;\n ReceiptCopiesTotal?: number;\n PriceOverrideTotal?: number;\n SuspendedTotal?: number;\n SalesTotalIncludingTax?: number;\n SalesTotalExcludingTax?: number;\n SalesGrandTotal?: number;\n ReturnsGrandTotal?: number;\n TaxLines?: ShiftTaxLine[];\n TenderLines?: ShiftTenderLine[];\n AccountLines?: ShiftAccountLine[];\n IsShared?: boolean;\n StartingAmountRunningTotal?: number;\n GiftCardsTotal?: number;\n GiftCardCashOutTotal?: number;\n VoidedSalesTotal?: number;\n ShiftSalesTotal?: number;\n ShiftReturnsTotal?: number;\n HasPendingOfflineTransactions?: number;\n NumberOfUnreconciledLines?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * StockCountJournal entity interface.\n */\n export interface StockCountJournal {\n JournalId: string;\n RecordId?: string;\n Description?: string;\n InventLocationId?: string;\n DataAreaId?: string;\n StockCountTransactionLines?: StockCountJournalTransaction[];\n Worker?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrgUnit entity interface.\n */\n export interface OrgUnit {\n OrgUnitNumber: string;\n RecordId: number;\n InventoryLocationId?: string;\n OMOperatingUnitNumber?: string;\n TaxGroup?: string;\n FunctionalityProfileId?: string;\n UseCustomerBasedTax?: boolean;\n UseCustomerBasedTaxExemption?: boolean;\n UseDestinationBasedTax?: boolean;\n Currency?: string;\n TimeZoneCode?: number;\n OrgUnitAddress?: Address;\n OrgUnitFullAddress?: string;\n OrgUnitName?: string;\n Latitude?: number;\n Longitude?: number;\n EmailReceiptProfileId?: string;\n ShippingWarehouseAddress?: Address;\n TaxRegistrations?: TaxRegistration[];\n EventNotificationProfileId?: string;\n Name?: string;\n DefaultCustomerAccount?: string;\n CategoryHierarchyId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Product entity interface.\n */\n export interface Product {\n RecordId: number;\n ProductName?: string;\n ProductNumber?: string;\n Description?: string;\n IsMasterProduct: boolean;\n IsKit: boolean;\n ItemId?: string;\n HasLinkedProducts: boolean;\n Rules: ProductRules;\n DefaultUnitOfMeasure?: string;\n Name?: string;\n Locale?: string;\n OfflineImage?: string;\n IsRemote?: boolean;\n ChangeTrackingInformation?: ProductChangeTrackingInformation;\n Image?: RichMediaLocations;\n UnitsOfMeasureSymbol?: string[];\n LinkedProducts?: LinkedProduct[];\n BasePrice?: number;\n Price?: number;\n AdjustedPrice?: number;\n RetailContext?: ProjectionDomain;\n PrimaryCategoryId?: number;\n CategoryIds?: number[];\n DisplayOrderInCategories?: DisplayOrderInCategory[];\n RelatedProducts?: RelatedProduct[];\n ProductsRelatedToThis?: RelatedProduct[];\n ProductSchema?: string[];\n ProductProperties?: ProductPropertyTranslation[];\n CompositionInformation?: ProductCompositionInformation;\n ParentKits?: KitComponent[];\n SearchName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductCatalog entity interface.\n */\n export interface ProductCatalog {\n RecordId: number;\n Name?: string;\n Description?: string;\n Language?: string;\n IsSnapshotEnabled: boolean;\n ValidFrom: Date;\n ValidTo: Date;\n CreatedOn: Date;\n ModifiedOn: Date;\n PublishedOn: Date;\n Images?: MediaLocation[];\n ChannelId?: number;\n DefaultImage?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CommerceList entity interface.\n */\n export interface CommerceList {\n Id: number;\n Name?: string;\n CustomerId?: string;\n CustomerName?: string;\n IsFavorite?: boolean;\n IsRecurring?: boolean;\n IsPrivate?: boolean;\n IsCollaborative?: boolean;\n CreatedDateTime?: Date;\n DueDateTime?: Date;\n CommerceListTypeValue?: number;\n CommerceListLines?: CommerceListLine[];\n CommerceListContributors?: CommerceListContributor[];\n CommerceListInvitations?: CommerceListInvitation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductList entity interface.\n */\n export interface ProductList {\n Id: string;\n Name?: string;\n CustomerId?: string;\n CreatedDateTime?: Date;\n LastUpdated?: Date;\n DeletedDateTime?: Date;\n ProductListTypeValue?: number;\n DataAreaId?: string;\n ProductListLines?: ProductListLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Recommendation entity interface.\n */\n export interface Recommendation {\n Id: string;\n RecommendationTypeValue?: number;\n Title?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TransferOrder entity interface.\n */\n export interface TransferOrder {\n OrderId: string;\n RecordId?: string;\n Status?: string;\n Lines?: number;\n TotalItems?: number;\n OrderTypeValue?: number;\n InventLocationIdFrom?: string;\n InventLocationIdTo?: string;\n QuantityShipped?: number;\n QuantityReceived?: number;\n QuantityShipNow?: number;\n QuantityReceiveNow?: number;\n QuantityShipRemaining?: number;\n QuantityReceiveRemaining?: number;\n ShipDate?: Date;\n ReceiveDate?: Date;\n DeliveryModeId?: string;\n OrderLines?: TransferOrderLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PurchaseOrder entity interface.\n */\n export interface PurchaseOrder {\n OrderId: string;\n RecordId?: string;\n Status?: string;\n Lines?: number;\n TotalItems?: number;\n OrderTypeValue?: number;\n TotalReceived?: number;\n OrderLines?: PurchaseOrderLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PickingList entity interface.\n */\n export interface PickingList {\n OrderId: string;\n RecordId?: string;\n Status?: string;\n Lines?: number;\n TotalItems?: number;\n OrderTypeValue?: number;\n InventLocationId?: string;\n DeliveryDate?: Date;\n DeliveryMode?: string;\n TotalReceived?: number;\n OrderLines?: PickingListLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Warehouse entity interface.\n */\n export interface Warehouse {\n InventLocation: string;\n Name?: string;\n IsWMSEnabled: boolean;\n DefaultInventoryStatus?: string;\n DefaultReceiptLocation?: string;\n DefaultLocationId?: string;\n DefaultIssueLocation?: string;\n Address?: Address;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ScanResult entity interface.\n */\n export interface ScanResult {\n ScannedText: string;\n MaskTypeValue?: number;\n Barcode?: Barcode;\n Product?: SimpleProduct;\n LoyaltyCard?: LoyaltyCard;\n GiftCard?: GiftCard;\n ExtensionProperties?: CommerceProperty[];\n Customer?: Customer;\n }\n \n /**\n * SalesOrderContextualOperationsMap entity interface.\n */\n export interface SalesOrderContextualOperationsMap {\n Id: string;\n ApplicableOperationsValues?: number[];\n ExtensionProperties?: CommerceProperty[];\n SalesOrder: SalesOrder;\n }\n \n /**\n * InventoryInboundOutboundDocument entity interface.\n */\n export interface InventoryInboundOutboundDocument {\n WorkDocumentId: string;\n TerminalId?: string;\n CommitRequestId?: string;\n ReceiveDate?: Date;\n ShipDate?: Date;\n Sender?: string;\n Receiver?: string;\n SenderDetails?: string;\n ReceiverDetails?: string;\n DeliveryMode?: string;\n OperationTypeValue?: number;\n StatusValue?: number;\n ReceiptId?: string;\n Note?: string;\n OperationResultMessage?: string;\n DocumentId?: string;\n LongVersion?: number;\n SourceDocument?: InventoryInboundOutboundSourceDocument;\n SourceDocumentTypeValue?: number;\n CreatedDateTime?: Date;\n NoteModifiedByStaffId?: string;\n NoteModifiedDateTime?: Date;\n DocumentTypeId?: string;\n Description?: string;\n StaffId?: string;\n TransactionDate?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * BusinessPartner entity interface.\n */\n export interface BusinessPartner {\n BusinessPartnerId: string;\n Name?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * BusinessPartnerUser entity interface.\n */\n export interface BusinessPartnerUser {\n B2BUserId: string;\n BusinessPartnerId?: string;\n FirstName?: string;\n LastName?: string;\n Email?: string;\n SpendingLimit?: number;\n LastOperationId?: string;\n StatusValue?: number;\n IsAdmin?: boolean;\n AccountNumber?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SuspendedCart entity interface.\n */\n export interface SuspendedCart {\n Id: string;\n ReceiptId?: string;\n ShiftId?: number;\n ShiftTerminalId?: string;\n ExtensionProperties?: CommerceProperty[];\n Cart?: Cart;\n }\n \n /**\n * CountryRegion entity interface.\n */\n export interface CountryRegion {\n CountryRegionId: string;\n IsoCode?: string;\n ShortName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ExtensibleEnumeration entity interface.\n */\n export interface ExtensibleEnumeration {\n Name: string;\n Value: number;\n }\n \n /**\n * ExtensibleEnumeration_1OfT entity interface.\n */\n export interface ExtensibleEnumeration_1OfT extends ExtensibleEnumeration {\n }\n \n /**\n * ExtensibleTransactionType entity interface.\n */\n export interface ExtensibleTransactionType extends ExtensibleEnumeration {\n }\n \n /**\n * ExtensibleSalesTransactionType entity interface.\n */\n export interface ExtensibleSalesTransactionType extends ExtensibleEnumeration {\n }\n \n /**\n * FulfillmentLineStatus entity interface.\n */\n export interface FulfillmentLineStatus extends ExtensibleEnumeration {\n }\n \n /**\n * FulfillmentLineDeliveryType entity interface.\n */\n export interface FulfillmentLineDeliveryType extends ExtensibleEnumeration {\n }\n \n /**\n * ExtensibleAddressType entity interface.\n */\n export interface ExtensibleAddressType extends ExtensibleEnumeration {\n }\n \n /**\n * ExtensibleLoyaltyRewardPointActivityEntryType entity interface.\n */\n export interface ExtensibleLoyaltyRewardPointActivityEntryType extends ExtensibleEnumeration {\n }\n \n /**\n * ExtensibleAttributeDataType entity interface.\n */\n export interface ExtensibleAttributeDataType extends ExtensibleEnumeration {\n }\n \n /**\n * ReleasedProductServiceType entity interface.\n */\n export interface ReleasedProductServiceType extends ExtensibleEnumeration {\n }\n \n /**\n * ExtensibleElectronicAddressType entity interface.\n */\n export interface ExtensibleElectronicAddressType extends ExtensibleEnumeration {\n }\n \n /**\n * ReceiptOutputFormatType entity interface.\n */\n export interface ReceiptOutputFormatType extends ExtensibleEnumeration {\n }\n \n /**\n * OrderLookupAdditionalCriteriaType entity interface.\n */\n export interface OrderLookupAdditionalCriteriaType extends ExtensibleEnumeration {\n }\n \n /**\n * Address entity interface.\n */\n export interface Address {\n Name?: string;\n Id?: string;\n FullAddress?: string;\n RecordId?: number;\n Street?: string;\n StreetNumber?: string;\n County?: string;\n CountyName?: string;\n City?: string;\n DistrictName?: string;\n State?: string;\n StateName?: string;\n ZipCode?: string;\n ThreeLetterISORegionName?: string;\n Phone?: string;\n PhoneRecordId?: number;\n PhoneExt?: string;\n Email?: string;\n EmailContent?: string;\n EmailRecordId?: number;\n Url?: string;\n UrlRecordId?: number;\n TwoLetterISORegionName?: string;\n Deactivate?: boolean;\n AttentionTo?: string;\n BuildingCompliment?: string;\n Postbox?: string;\n TaxGroup?: string;\n AddressTypeValue?: number;\n IsPrimary?: boolean;\n IsPrivate?: boolean;\n PartyNumber?: string;\n IsAsyncAddress?: boolean;\n DirectoryPartyTableRecordId?: number;\n DirectoryPartyLocationRecordId?: number;\n DirectoryPartyLocationRoleRecordId?: number;\n LogisticsLocationId?: string;\n LogisticsLocationRecordId?: number;\n LogisticsLocationExtRecordId?: number;\n LogisticsLocationRoleRecordId?: number;\n PhoneLogisticsLocationRecordId?: number;\n PhoneLogisticsLocationId?: string;\n EmailLogisticsLocationRecordId?: number;\n EmailLogisticsLocationId?: string;\n UrlLogisticsLocationRecordId?: number;\n UrlLogisticsLocationId?: string;\n ExpireRecordId?: number;\n SortOrder?: number;\n RoleCount?: number;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerAffiliation entity interface.\n */\n export interface CustomerAffiliation {\n RecordId?: number;\n RetailAffiliationId?: number;\n Name?: string;\n Description?: string;\n HideInChannels?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerBalances entity interface.\n */\n export interface CustomerBalances {\n Balance: number;\n PendingBalance: number;\n CreditLimit: number;\n InvoiceAccountBalance: number;\n InvoiceAccountPendingBalance: number;\n InvoiceAccountCreditLimit: number;\n OpenInvoiceBalance?: number;\n OpenInvoiceCount?: number;\n }\n \n /**\n * GlobalCustomer entity interface.\n */\n export interface GlobalCustomer {\n PartyNumber?: string;\n RecordId?: number;\n IsAsyncCustomer?: boolean;\n AccountNumber?: string;\n FullName?: string;\n FullAddress?: string;\n Phone?: string;\n Email?: string;\n CustomerTypeValue?: number;\n Images?: MediaLocation[];\n OfflineImage?: string;\n IsB2b?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeValue entity interface.\n */\n export interface AttributeValue {\n Name?: string;\n KeyName?: string;\n UnitOfMeasureSymbol?: string;\n DataTypeValue?: number;\n BooleanValue?: boolean;\n DateTimeOffsetValue?: Date;\n FloatValue?: number;\n IntegerValue?: number;\n TextValue?: string;\n CurrencyValue?: number;\n CurrencyCode?: string;\n AttributeValueId?: number;\n RecordId?: number;\n Swatches?: AttributeSwatch[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeValueBase entity interface.\n */\n export interface AttributeValueBase {\n Name?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Barcode entity interface.\n */\n export interface Barcode {\n BarcodeId?: string;\n BarcodePrice?: number;\n Quantity?: number;\n CustomerId?: string;\n EmployeeId?: string;\n SalespersonId?: string;\n EANLicenseId?: string;\n DataEntry?: string;\n DiscountCode?: string;\n GiftCardNumber?: string;\n LoyaltyCardNumber?: string;\n ItemBarcode?: ItemBarcode;\n EntryMethodTypeValue?: number;\n ItemType?: number;\n EnterDimensions?: boolean;\n ItemGroupId?: string;\n ItemDepartmentId?: string;\n ScaleItem?: boolean;\n ZeroPriceValid?: boolean;\n NegativeQuantity?: boolean;\n DiscountNotAllowed?: boolean;\n DateToBeBlocked?: Date;\n DateToBeActivated?: Date;\n CheckDigitValidated?: boolean;\n CouponId?: string;\n Message?: string;\n LineDiscountGroup?: string;\n MultilineDiscountGroup?: string;\n IncludedInTotalDiscount?: boolean;\n CostPrice?: number;\n BatchId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ItemBarcode entity interface.\n */\n export interface ItemBarcode {\n RecordId?: number;\n ItemId?: string;\n Description?: string;\n BarcodeSetupId?: string;\n ItemBarcodeValue?: string;\n InventoryDimensionId?: string;\n IsBlocked?: boolean;\n Display?: boolean;\n VariantId?: string;\n UnitId?: string;\n UseForInput?: boolean;\n UseForPrinting?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ButtonGrid entity interface.\n */\n export interface ButtonGrid {\n Id?: string;\n Name?: string;\n DefaultColor?: number;\n SpaceBetweenButtonsInPixels?: number;\n Buttons?: ButtonGridButton[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * GetButtonGridsByIdsCriteria entity interface.\n */\n export interface GetButtonGridsByIdsCriteria {\n ButtonGridIds?: string[];\n }\n \n /**\n * CartLine entity interface.\n */\n export interface CartLine {\n LineId?: string;\n TaxOverrideCode?: string;\n ItemId?: string;\n Barcode?: string;\n EntryMethodTypeValue?: number;\n Description?: string;\n InventoryDimensionId?: string;\n Comment?: string;\n ProductId?: number;\n WarehouseId?: string;\n Quantity?: number;\n Price?: number;\n ExtendedPrice?: number;\n TaxAmount?: number;\n ItemTaxGroupId?: string;\n TotalAmount?: number;\n NetAmountWithoutTax?: number;\n NetPrice?: number;\n DiscountAmountWithoutTax?: number;\n DiscountAmount?: number;\n LineDiscount?: number;\n LinePercentageDiscount?: number;\n LineManualDiscountPercentage?: number;\n LineManualDiscountAmount?: number;\n UnitOfMeasureSymbol?: string;\n ShippingAddress?: Address;\n DeliveryMode?: string;\n DeliveryModeChargeAmount?: number;\n RequestedDeliveryDate?: Date;\n PickupTimeslotStartDateTime?: Date;\n PickupTimeslotEndDateTime?: Date;\n IsWarrantyLine?: boolean;\n WarrantableTransactionId?: string;\n WarrantableSalesId?: string;\n WarrantableLineNumber?: number;\n WarrantableSerialNumber?: string;\n WarrantiedId?: string;\n ReturnTransactionId?: string;\n ReturnLineNumber?: number;\n ReturnInventTransId?: string;\n IsVoided?: boolean;\n IsTaxOverideCodeTaxExempt?: boolean;\n IsGiftCardLine?: boolean;\n IsPriceKeyedIn?: boolean;\n GiftCardId?: string;\n GiftCardCurrencyCode?: string;\n GiftCardOperationValue?: number;\n GiftCardTypeValue?: number;\n SalesStatusValue?: number;\n QuantityOrdered?: number;\n QuantityNotProcessed?: number;\n QuantityReserved?: number;\n QuantityPicked?: number;\n QuantityPacked?: number;\n QuantityInvoiced?: number;\n QuantityCanceled?: number;\n FulfillmentStoreId?: string;\n SerialNumber?: string;\n ElectronicDeliveryEmail?: string;\n ElectronicDeliveryEmailContent?: string;\n IsPriceOverridden?: boolean;\n OriginalPrice?: number;\n IsInvoiceLine?: boolean;\n InvoiceId?: string;\n InvoiceAmount?: number;\n GiftCardBalance?: number;\n LineVersion?: number;\n PromotionLines?: string[];\n PriceLines?: PriceLine[];\n DiscountLines?: DiscountLine[];\n RelatedDiscountedLineIds?: string[];\n ReasonCodeLines?: ReasonCodeLine[];\n ChargeLines?: ChargeLine[];\n TaxLines?: TaxLine[];\n ReturnTaxLines?: TaxLine[];\n TaxRatePercent?: number;\n IsCustomerAccountDeposit?: boolean;\n LinkedParentLineId?: string;\n QuantityReturnable?: number;\n ExtensionProperties?: CommerceProperty[];\n LineNumber?: number;\n CommissionSalesGroup?: string;\n TrackingId?: string;\n StaffId?: string;\n QuantityRemained?: number;\n QuantityShipped?: number;\n CatalogId?: number;\n AttributeValues?: AttributeValueBase[];\n ThirdPartyGiftCardInfo?: ThirdPartyGiftCardInfo;\n BarcodeEmbeddedPrice?: number;\n PriceInBarcode?: boolean;\n InvoiceTypeValue?: number;\n InvoicedSalesId?: string;\n WarehouseLocation?: string;\n DetailedLineStatusValue?: number;\n SalesAgreementLineRecordId?: number;\n }\n \n /**\n * ThirdPartyGiftCardInfo entity interface.\n */\n export interface ThirdPartyGiftCardInfo {\n Amount?: number;\n Authorization?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CardTypeInfo entity interface.\n */\n export interface CardTypeInfo {\n RecordId?: number;\n TypeId?: string;\n Name?: string;\n PaymentMethodId?: string;\n CardTypeValue?: number;\n Issuer?: string;\n NumberFrom?: string;\n NumberTo?: string;\n CashBackLimit?: number;\n AllowManualInput?: boolean;\n CheckModulus?: boolean;\n HasTenderDiscount?: boolean;\n IsPinRequired?: boolean;\n IsExpirationDateRequired?: boolean;\n ConnectorName?: string;\n PaymentProcessorMethod?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CashDeclaration entity interface.\n */\n export interface CashDeclaration {\n RecordId?: number;\n Currency?: string;\n Amount?: number;\n CashTypeValue?: number;\n IncludeInQuickPayShortcuts?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * IncomeExpenseAccount entity interface.\n */\n export interface IncomeExpenseAccount {\n Amount?: number;\n AccountNumber?: string;\n AccountName?: string;\n AccountNameAlias?: string;\n AccountTypeValue?: number;\n Quantity?: number;\n Message1Line?: string;\n Message2Line?: string;\n SlipText1Line?: string;\n SlipText2Line?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * IncomeExpenseLine entity interface.\n */\n export interface IncomeExpenseLine {\n Amount?: number;\n IncomeExpenseAccount?: string;\n StoreNumber?: string;\n AccountTypeValue?: number;\n Terminal?: string;\n Shift?: string;\n TransactionStatusValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CartTenderLine entity interface.\n */\n export interface CartTenderLine {\n PaymentCard?: PaymentCard;\n TokenizedPaymentCard?: TokenizedPaymentCard;\n CardPaymentAcceptResult?: CardPaymentAcceptResult;\n IsLinkedRefund?: boolean;\n LinkedPaymentStore?: string;\n LinkedPaymentTerminalId?: string;\n LinkedPaymentTransactionId?: string;\n LinkedPaymentLineNumber?: number;\n LinkedPaymentCurrency?: string;\n TenderLineId?: string;\n Amount?: number;\n CashBackAmount?: number;\n AmountInTenderedCurrency?: number;\n AmountInCompanyCurrency?: number;\n Currency?: string;\n ExchangeRate?: number;\n CompanyCurrencyExchangeRate?: number;\n TenderTypeId?: string;\n SignatureData?: string;\n ReasonCodeLines?: ReasonCodeLine[];\n LineNumber?: number;\n GiftCardId?: string;\n GiftCardPin?: string;\n GiftCardExpirationYear?: number;\n GiftCardExpirationMonth?: number;\n CreditMemoId?: string;\n CustomerId?: string;\n LoyaltyCardId?: string;\n CardTypeId?: string;\n IsChangeLine?: boolean;\n IsHistorical?: boolean;\n IsVoidable?: boolean;\n StatusValue?: number;\n VoidStatusValue?: number;\n AuthorizedAmount?: number;\n PaymentRefRecId?: number;\n CardPaymentAccountId?: string;\n ProcessingTypeValue?: number;\n CardProcessorStatusValue?: number;\n LinkedPaymentRefRecId?: number;\n IsPolicyBypassed?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChargeLine entity interface.\n */\n export interface ChargeLine {\n ChargeLineId?: string;\n ChargeCode?: string;\n CurrencyCode?: string;\n ModuleTypeValue?: number;\n IsHeaderChargeProrated?: boolean;\n ChargeTypeValue?: number;\n ChargeMethodValue?: number;\n CalculatedAmount?: number;\n Value?: number;\n Description?: string;\n TransactionId?: string;\n MarkupAutoLineRecordId?: number;\n MarkupAutoTableRecId?: number;\n SaleLineNumber?: number;\n FromAmount?: number;\n ToAmount?: number;\n Keep?: number;\n AmountRefunded?: number;\n ChargeLineOverrides?: ChargeLineOverride[];\n ReasonCodeLines?: ReasonCodeLine[];\n IsRefundable?: boolean;\n IsShipping?: boolean;\n IsOverridden?: boolean;\n IsInvoiced?: boolean;\n CalculatedProratedAmount?: number;\n ItemId?: string;\n Quantity?: number;\n Price?: number;\n ItemTaxGroupId?: string;\n SalesTaxGroupId?: string;\n OriginalSalesTaxGroupId?: string;\n OriginalItemTaxGroupId?: string;\n TaxAmount?: number;\n SalesOrderUnitOfMeasure?: string;\n NetAmount?: number;\n NetAmountPerUnit?: number;\n GrossAmount?: number;\n TaxLines?: TaxLine[];\n TaxMeasures?: TaxMeasure[];\n TaxAmountExemptInclusive?: number;\n TaxAmountInclusive?: number;\n TaxAmountExclusive?: number;\n NetAmountWithAllInclusiveTax?: number;\n BeginDateTime?: Date;\n EndDateTime?: Date;\n TaxRatePercent?: number;\n IsReturnByReceipt?: boolean;\n ReturnLineTaxAmount?: number;\n ReturnTaxLines?: TaxLine[];\n TaxExemptPriceInclusiveReductionAmount?: number;\n TaxExemptPriceInclusiveOriginalPrice?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CityInfo entity interface.\n */\n export interface CityInfo {\n Name?: string;\n Description?: string;\n CountryRegionId?: string;\n StateId?: string;\n CountyId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CommissionSalesGroup entity interface.\n */\n export interface CommissionSalesGroup {\n GroupId?: string;\n Name?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ContactInformation entity interface.\n */\n export interface ContactInformation {\n Value?: string;\n ContactInformationTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeCategory entity interface.\n */\n export interface AttributeCategory {\n Value?: CommercePropertyValue;\n RecordId?: number;\n Name?: string;\n KeyName?: string;\n DataTypeValue?: number;\n Attribute?: number;\n NameTranslations?: TextValueTranslation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeProduct entity interface.\n */\n export interface AttributeProduct {\n MetadataFlags?: ProductAttributeMetadataFlags;\n IsDimension?: boolean;\n RecordId?: number;\n Name?: string;\n KeyName?: string;\n DataTypeValue?: number;\n Attribute?: number;\n NameTranslations?: TextValueTranslation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductComparisonEntry entity interface.\n */\n export interface ProductComparisonEntry {\n ProductId: number;\n AttributeValue?: AttributeValue;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductComparisonLine entity interface.\n */\n export interface ProductComparisonLine {\n AttributeRecordId: number;\n AttributeName?: string;\n ProductAttributeComparisonEntries?: ProductComparisonEntry[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerSearchField entity interface.\n */\n export interface CustomerSearchField {\n IsShortcut?: boolean;\n DisplayName?: string;\n CanBeRefined?: boolean;\n SearchField?: CustomerSearchFieldType;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerSearchByFieldCriteria entity interface.\n */\n export interface CustomerSearchByFieldCriteria {\n Criteria?: CustomerSearchByFieldCriterion[];\n DataLevelValue?: number;\n }\n \n /**\n * CustomerSearchByFieldCriterion entity interface.\n */\n export interface CustomerSearchByFieldCriterion {\n SearchTerm?: string;\n SearchField?: CustomerSearchFieldType;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerSearchFieldType entity interface.\n */\n export interface CustomerSearchFieldType extends ExtensibleEnumeration {\n }\n \n /**\n * OrderShipments entity interface.\n */\n export interface OrderShipments {\n SalesId?: string;\n ChannelId?: number;\n ChannelReferenceId?: string;\n TransactionId?: string;\n CreatedDateTime?: Date;\n StatusValue?: number;\n CurrencyCode?: string;\n CustomerId?: string;\n DeliveryMode?: string;\n GrossAmount?: number;\n InventoryLocationId?: string;\n ReceiptId?: string;\n RequestedDeliveryDate?: Date;\n TotalAmount?: number;\n TaxAmount?: number;\n SalesLines?: SalesLine[];\n Shipments?: Shipment[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Shipment entity interface.\n */\n export interface Shipment {\n SalesId?: string;\n ShipmentId?: string;\n DeliveryAddress?: Address;\n ShipDate?: Date;\n DeliveryMode?: string;\n TermsOfDelivery?: string;\n WeightUnit?: string;\n TrackingNumber?: string;\n TrackingUrl?: string;\n LatestCarrierTrackingInfo?: TrackingInfo;\n CarrierId?: string;\n CarrierName?: string;\n ShippingWeight?: number;\n ShipmentLines?: ShipmentLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ShipmentLine entity interface.\n */\n export interface ShipmentLine {\n ShipmentLineId?: string;\n ItemId?: string;\n Description?: string;\n InventDimId?: string;\n OrderedQuantity?: number;\n DeliveredQuantity?: number;\n RemainingQuantity?: number;\n InventoryTransactionId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Transaction entity interface.\n */\n export interface Transaction {\n Id?: string;\n StoreId?: string;\n TerminalId?: string;\n IsCreatedOffline?: boolean;\n StaffId?: string;\n LanguageId?: string;\n ShiftId?: string;\n ShiftTerminalId?: string;\n Description?: string;\n ReceiptId?: string;\n GrossAmount?: number;\n TotalAmount?: number;\n CreatedDateTime?: Date;\n TransactionTypeValue?: number;\n TransactionStatusValue?: number;\n BeginDateTime?: Date;\n GiftCardActiveFrom?: Date;\n GiftCardBalance?: number;\n GiftCardExpireDate?: Date;\n GiftCardHistoryDetails?: string;\n GiftCardIssueAmount?: number;\n GiftCardIdMasked?: string;\n FromSafe?: string;\n ToSafe?: string;\n FromShiftTerminalId?: string;\n ToShiftTerminalId?: string;\n FromShiftId?: string;\n TransactionSourceContextTypeValue?: number;\n TransactionDestinationContextTypeValue?: number;\n ToShiftId?: string;\n TransactionDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ShiftReconciliationLine entity interface.\n */\n export interface ShiftReconciliationLine extends Transaction {\n GroupId?: number;\n GroupDescription?: string;\n ShiftGroupLinesCount?: number;\n ShiftGroupLinesClosedCount?: number;\n AmountInOriginalCurrency?: number;\n TransactionCurrencyCode?: string;\n TenderType?: string;\n }\n \n /**\n * ShiftReconciliationLineRetrievalCriteria entity interface.\n */\n export interface ShiftReconciliationLineRetrievalCriteria {\n TransactionTypeValues?: number[];\n ShiftReconciliationLineStatusValue?: number;\n Shifts?: ShiftKey[];\n DestinationShift?: ShiftKey;\n SourceShift?: ShiftKey;\n SourceSafe?: string;\n DestinationSafe?: string;\n TransactionSourceContextTypeValue?: number;\n TransactionDestinationContextTypeValue?: number;\n }\n \n /**\n * SearchConfiguration entity interface.\n */\n export interface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n ProductSearchServiceTypeValue?: number;\n ProductSortColumnsLabels?: LocalizedText[];\n }\n \n /**\n * CustomerTimelineItem entity interface.\n */\n export interface CustomerTimelineItem {\n CustomerId?: string;\n Description?: string;\n Id?: string;\n EntityType?: string;\n TypeId?: string;\n StaffId?: string;\n StartDateTime?: Date;\n Title?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeDefinition entity interface.\n */\n export interface AttributeDefinition {\n RecordId: number;\n Name?: string;\n AttributeTypeName?: string;\n ExtDataType?: ExtensibleAttributeDataType;\n DataTypeValue?: number;\n IsHidden?: boolean;\n IsMandatory?: boolean;\n IsMultiValue?: boolean;\n IsEnumeration?: boolean;\n TranslationDetails?: AttributeTranslationDetails[];\n EnumerationDetails?: AttributeEnumeration[];\n DefaultValue?: CommercePropertyValue;\n UpperBound?: CommercePropertyValue;\n LowerBound?: CommercePropertyValue;\n DisplayOrder?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeTranslationDetails entity interface.\n */\n export interface AttributeTranslationDetails {\n AttributeRecordId: number;\n LanguageId?: string;\n FriendlyName?: string;\n Description?: string;\n HelpText?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeEnumeration entity interface.\n */\n export interface AttributeEnumeration {\n OrdinalNumber?: number;\n EnumerationValue?: string;\n AttributeEnumerationTranslations?: AttributeEnumerationTranslation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeEnumerationTranslation entity interface.\n */\n export interface AttributeEnumerationTranslation {\n LanguageId?: string;\n EnumerationTranslationValue?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeDefinitionCriteria entity interface.\n */\n export interface AttributeDefinitionCriteria {\n AttributeGroupIdentifier?: number;\n Languages?: string[];\n }\n \n /**\n * AttributeGroupDefinition entity interface.\n */\n export interface AttributeGroupDefinition {\n RecordId: number;\n Name?: string;\n TranslationDetails?: AttributeGroupTranslationDetails[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeGroupTranslationDetails entity interface.\n */\n export interface AttributeGroupTranslationDetails {\n AttributeGroupRecordId: number;\n LanguageId?: string;\n FriendlyName?: string;\n Description?: string;\n HelpText?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeGroupDefinitionCriteria entity interface.\n */\n export interface AttributeGroupDefinitionCriteria {\n AttributeGroupIdentifiers?: number[];\n Languages?: string[];\n }\n \n /**\n * CountyInfo entity interface.\n */\n export interface CountyInfo {\n Name?: string;\n CountyId?: string;\n CountryRegionId?: string;\n StateId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerGroup entity interface.\n */\n export interface CustomerGroup {\n CustomerGroupNumber?: string;\n CustomerGroupName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DiscountLine entity interface.\n */\n export interface DiscountLine {\n SaleLineNumber?: number;\n OfferId?: string;\n OfferName?: string;\n OfferDescription?: string;\n Amount?: number;\n DiscountCost?: number;\n EffectiveAmount?: number;\n EffectivePercentage?: number;\n LineNumber?: number;\n SavedEffectiveAmount?: number;\n Percentage?: number;\n DealPrice?: number;\n DiscountLineTypeValue?: number;\n ManualDiscountTypeValue?: number;\n CustomerDiscountTypeValue?: number;\n PeriodicDiscountTypeValue?: number;\n DiscountApplicationGroup?: string;\n ConcurrencyModeValue?: number;\n IsCompoundable?: boolean;\n DiscountCode?: string;\n PricingPriorityNumber?: number;\n PricingAttributeCombinationPriority?: number;\n IsDiscountCodeRequired?: boolean;\n ThresholdAmountRequired?: number;\n BundleId?: number;\n ValidFrom?: Date;\n ValidTo?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * EmployeePermissions entity interface.\n */\n export interface EmployeePermissions {\n PriceOverrideRestrictionValue?: number;\n AllowPriceOverride?: number;\n MaximumDiscountPercentage?: number;\n MaximumLineDiscountAmount?: number;\n MaximumLineReturnAmount?: number;\n MaximumTotalDiscountAmount?: number;\n MaximumTotalDiscountPercentage?: number;\n MaxTotalReturnAmount?: number;\n StaffId?: string;\n Roles?: string[];\n AllowUseSharedShift?: boolean;\n AllowManageSharedShift?: boolean;\n AllowTaskGuides?: boolean;\n AllowSaleOutsideAssortment?: boolean;\n AllowPrintingReceiptCopy?: string;\n AllowSkipFiscalRegistration?: boolean;\n AllowSkipRegistrationOrMarkAsRegistered?: boolean;\n AllowPostponeRegistration?: boolean;\n AllowCreateTransferOrder?: boolean;\n AllowAcceptOrder?: boolean;\n AllowTaskManagement?: boolean;\n AllowRejectOrder?: boolean;\n AllowMassActivation?: boolean;\n AllowPostInventoryAdjustment?: boolean;\n AllowPostStockCounting?: boolean;\n AllowCreatePurchaseOrder?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CommerceProperty entity interface.\n */\n export interface CommerceProperty {\n Key?: string;\n Value?: CommercePropertyValue;\n }\n \n /**\n * CommercePropertyValue entity interface.\n */\n export interface CommercePropertyValue {\n BooleanValue?: boolean;\n ByteValue?: number;\n DateTimeOffsetValue?: Date;\n DecimalValue?: number;\n IntegerValue?: number;\n LongValue?: number;\n StringValue?: string;\n }\n \n /**\n * CountryRegionInfo entity interface.\n */\n export interface CountryRegionInfo {\n CountryRegionId?: string;\n ShortName?: string;\n LongName?: string;\n ISOCode?: string;\n TimeZone?: number;\n LanguageId?: string;\n AddressFormatLines?: AddressFormattingInfo[];\n AddressFormatId?: string;\n AddressFormatName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CreditMemo entity interface.\n */\n export interface CreditMemo {\n Id?: string;\n Balance?: number;\n CurrencyCode?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Currency entity interface.\n */\n export interface Currency {\n CurrencyCode?: string;\n CurrencySymbol?: string;\n RoundOffPrice?: number;\n RoundOffSales?: number;\n RoundOffTypePrice?: number;\n RoundOffTypeSales?: number;\n NumberOfDecimals?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CurrencyAmount entity interface.\n */\n export interface CurrencyAmount {\n CurrencyCode?: string;\n CurrencySymbol?: string;\n ConvertedAmount?: number;\n RoundedConvertedAmount?: number;\n ExchangeRate?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ScaleUnitConfiguration entity interface.\n */\n export interface ScaleUnitConfiguration {\n Id?: string;\n Name?: string;\n Region?: string;\n }\n \n /**\n * EnvironmentConfiguration entity interface.\n */\n export interface EnvironmentConfiguration {\n EnvironmentId?: string;\n EnvironmentName?: string;\n TenantId?: string;\n ClientAppInsightsInstrumentationKey?: string;\n HardwareStationAppInsightsInstrumentationKey?: string;\n WindowsPhonePosAppInsightsInstrumentationKey?: string;\n BaseVersion?: string;\n ScaleUnit?: ScaleUnitConfiguration;\n AADAuthority?: string;\n FrameworkName?: string;\n }\n \n /**\n * DeviceConfiguration entity interface.\n */\n export interface DeviceConfiguration {\n UseInMemoryDeviceDataStorage?: boolean;\n AllowItemsAggregation?: boolean;\n AggregateItemsForPrinting?: boolean;\n AggregatePayments?: boolean;\n AlwaysExpandTransactionScreenLineDetails?: boolean;\n AuditEnabled?: boolean;\n DiscountAtTotal?: string;\n ProductDiscount?: string;\n ManuallyCalculateComplexDiscounts?: boolean;\n DisplaySecondaryTotalCurrency?: boolean;\n EndOfTransaction?: string;\n ItemNotOnFile?: string;\n LimitStaffListToStore?: boolean;\n LineItemTaxChange?: string;\n MarkUp?: string;\n MaximumPrice?: number;\n MaximumQuantity?: number;\n MinimumPasswordLength?: number;\n MustKeyInPriceIfZero?: boolean;\n NfcEContingencyModeEnabled?: string;\n NfcEVoided?: string;\n FunctionalityProfileDescription?: string;\n OverridePrice?: string;\n PrintVoidTransactionReceipts?: boolean;\n PrintReceiptsOnCardDecline?: boolean;\n PrintXZReportsOnTerminal?: boolean;\n PrintTenderDetailsOnXReport?: boolean;\n ProfileId?: string;\n RefundSale?: string;\n ReturnProduct?: string;\n SalesPerson?: string;\n SecondaryTotalCurrency?: string;\n SelectHardwareStationOnTendering?: boolean;\n SerialNumber?: string;\n ShowStaffListAtLogOn?: boolean;\n StaffBarcodeLogOn?: boolean;\n StaffBarcodeLogOnRequiresPassword?: boolean;\n StaffCardLogOn?: boolean;\n StaffCardLogOnRequiresPassword?: boolean;\n StartOfTransaction?: string;\n EnableTimeRegistration?: boolean;\n TenderDeclaration?: string;\n TransactionTaxChange?: string;\n VoidItem?: string;\n VoidPayment?: string;\n SalesModeDefaultsAsCustomerOrder?: boolean;\n CreateOfflineCustomerOrders?: boolean;\n CreateAsyncCustomers?: boolean;\n EnableAxCustomerSearch?: boolean;\n VoidTransaction?: string;\n CultureName?: string;\n SystemLegalTermsUrl?: string;\n SystemPrivacyStatementUrl?: string;\n HideTrainingMode?: boolean;\n StorePhone?: string;\n StatementMethod?: string;\n StoreNumber?: string;\n ChannelId?: number;\n StoreTaxGroup?: string;\n TaxIdNumber?: string;\n TaxOverrideGroup?: number;\n TenderDeclarationCalculation?: number;\n UseCustomerBasedTax?: boolean;\n UseDestinationBasedTax?: boolean;\n AutoLogOffTimeoutInMinutes?: number;\n AutoExitMethodValue?: number;\n CustomerDisplayText1?: string;\n CustomerDisplayText2?: string;\n EFTStoreId?: number;\n EFTTerminalId?: string;\n ExitAfterEachTransaction?: boolean;\n HardwareProfile?: string;\n Placement?: string;\n TerminalDescription?: string;\n OpenDrawer?: string;\n OpenDrawerAtLogOnLogOff?: boolean;\n PrintTaxRefundChecks?: boolean;\n StandAlone?: boolean;\n TerminalId?: string;\n TerminalStatement?: boolean;\n VisualProfile?: string;\n Currency?: string;\n InventLocationId?: string;\n IncludeKitComponents?: boolean;\n AccentColor?: number;\n HeaderColor?: number;\n Theme?: string;\n FontScheme?: number;\n ShowAppBarLabel?: boolean;\n LogOnBackgroundPictureAsBase64?: string;\n LogOnBackgroundPicturePortraitAsBase64?: string;\n BackgroundPictureAsBase64?: string;\n LogonBackgroundPictureId?: number;\n LogonBackgroundPictureIdCompact?: number;\n LogonBackgroundPictureIdPortrait?: number;\n LogonBackgroundPictureIdCompactPortrait?: number;\n BackgroundPictureId?: number;\n RequireAmountDeclaration?: boolean;\n DecimalNotRequiredForMinorCurrencyUnit?: boolean;\n MaxTransactionSearchResults?: number;\n OfflineProfileId?: number;\n NewOfflineDatabaseCheckInterval?: number;\n OfflineTransactionUploadInterval?: number;\n ReconnectToOnlineInterval?: number;\n SwitchToOfflineTimeout?: number;\n OfflineSwitchApiPerformanceThresholdInSeconds?: number;\n ReconnectFromPerformanceInducedOfflineIntervalInSeconds?: number;\n RetentionDays?: number;\n HardwareConfigurations?: HardwareConfigurations;\n CreateRecording?: boolean;\n PlaybackRecording?: boolean;\n ShouldUseDefaultCommisionSalesGroup?: boolean;\n AskForSalesRepresentative?: number;\n IsSalesRepRequired?: boolean;\n ProhibitMixingSalesAndReturns?: boolean;\n ApplyDiscountsToPriceKeyedIn?: boolean;\n ApplyDiscountsToPriceOverrides?: boolean;\n IsProductSuggestionsEnabled?: boolean;\n ProductSearchType?: string;\n TerminalRecId?: number;\n DeviceRecId?: number;\n DenominationsToDisplayValue?: number;\n PromptOnSeamlessOffline?: boolean;\n RetryCountToOffline?: number;\n EnableAdvancedOfflineSwitching?: boolean;\n SystemHealthCheckInterval?: number;\n RejectOrderFulfillment?: string;\n ManuallyCalculateTaxes?: boolean;\n EmployeeLogonTypeValue?: number;\n StartAmountCalculation?: number;\n BankDropCalculation?: number;\n GenerateLoyaltyCardNumber?: boolean;\n FiscalRegistrationProcessId?: string;\n IncludeSalesOrderInvoices?: boolean;\n IncludeFreeTextInvoices?: boolean;\n IncludeProjectInvoices?: boolean;\n IncludeCreditNoteInvoices?: boolean;\n DisplayTaxExemptInLineDetails?: boolean;\n TaxExemptReceiptIndicator?: string;\n ManuallyCalculateCharges?: boolean;\n ChargeOverrideReasonCode?: string;\n ShiftReconcilation?: string;\n CustomerAccountFloorLimit?: number;\n VoidSuspendedTransactionsOnCloseShift?: boolean;\n ShowDateTime?: boolean;\n UseAdvancedCashManagement?: boolean;\n DefaultCustomerSearchModeValue?: number;\n AllowManualOfflineBeforeSignIn?: boolean;\n UseFinancialReconciliationInStore?: boolean;\n RequirePaymentForFulfillmentValue?: number;\n CardNotPresentProcessingConfigurationValue?: number;\n EnableQuickPayShortcuts?: boolean;\n ChangeDueBehaviorValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * VisualProfile entity interface.\n */\n export interface VisualProfile {\n ChannelId?: number;\n TerminalId?: string;\n AccentColor?: number;\n HeaderColor?: number;\n Theme?: string;\n FontSchemeTypeValue?: number;\n IsAppBarLabelVisible?: boolean;\n IsDateTimeVisible?: boolean;\n LogOnLayoutTypeValue?: number;\n LogOnKeyboardTypeValue?: number;\n LogonBackgroundPictureId?: number;\n CompactLogonBackgroundPictureId?: number;\n PortraitLogonBackgroundPictureId?: number;\n CompactPortraitLogonBackgroundPictureId?: number;\n BackgroundPictureId?: number;\n LogOnLogoPictureId?: number;\n IsProductIdVisibleOnCartLine?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OperationalInsightsConfiguration entity interface.\n */\n export interface OperationalInsightsConfiguration {\n InstrumentationKey?: string;\n EnvironmentId?: string;\n IsEnabled?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Device entity interface.\n */\n export interface Device {\n ChannelId: number;\n RecordId?: number;\n DeviceNumber?: string;\n DeviceId?: string;\n Description?: string;\n DeviceType?: number;\n TerminalRecordId?: number;\n TerminalId?: string;\n ChannelName?: string;\n UseInMemoryDeviceDataStorage?: boolean;\n AllowMassActivation?: boolean;\n TokenIssueTime?: Date;\n ActivationStatusValue?: number;\n Token?: string;\n CountryRegionIsoCode?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DiscountCode entity interface.\n */\n export interface DiscountCode {\n RecordId: number;\n Barcode?: string;\n Code?: string;\n ConcurrencyMode?: number;\n Description?: string;\n Disclaimer?: string;\n IsDiscountCodeRequired?: boolean;\n Name?: string;\n OfferId?: string;\n IsEnabled?: boolean;\n ValidFrom?: Date;\n ValidTo?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DistrictInfo entity interface.\n */\n export interface DistrictInfo {\n Name?: string;\n Description?: string;\n CountryRegionId?: string;\n StateId?: string;\n CountyId?: string;\n CityName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareProfile entity interface.\n */\n export interface HardwareProfile {\n RecordId?: number;\n LineDisplayDelayForLinkedItems?: number;\n LineDisplayBalanceText?: string;\n LineDisplayBinaryConversion?: boolean;\n LineDisplayCharacterSet?: number;\n LineDisplayClosedLine1?: string;\n LineDisplayClosedLine2?: string;\n LineDisplayDeviceDescription?: string;\n LineDisplayDeviceTypeValue?: number;\n LineDisplayDeviceName?: string;\n LineDisplayDisplayLinkedItem?: boolean;\n LineDisplayDisplayTerminalClosed?: boolean;\n LineDisplayTotalText?: string;\n DualDisplayActive?: boolean;\n DualDisplayWebBrowserUrl?: string;\n DualDisplayImageRotatorInterval?: number;\n DualDisplayImageRotatorPath?: string;\n DualDisplayReceiptWidthPercentage?: number;\n DualDisplayDisplayType?: string;\n EftTypeId?: number;\n EftCompanyId?: string;\n EftConfiguration?: number;\n EftPaymentConnectorName?: string;\n EftData?: string;\n EftDescription?: string;\n EftMerchantId?: string;\n EftPassword?: string;\n EftServerName?: string;\n EftServerPort?: string;\n EftUserId?: string;\n EftTestMode?: boolean;\n MsrEndTrack1?: string;\n MsrEndTrack2?: string;\n FiscalPrinterManagementReportPAFIdentification?: string;\n FiscalPrinterManagementReportConfigParameter?: string;\n FiscalPrinterManagementReportTenderType?: string;\n FiscalPrinterManagementReportGiftCard?: string;\n FiscalRegisterDeviceTypeValue?: number;\n FiscalRegisterConfiguration?: string;\n FiscalRegisterDeviceDescription?: string;\n FiscalRegisterDeviceName?: string;\n KeyboardMappingId?: string;\n KeyLockDeviceTypeValue?: number;\n KeyLockDeviceDescription?: string;\n KeyLockDeviceName?: string;\n MsrDeviceTypeValue?: number;\n MsrDeviceDescription?: string;\n MsrDeviceName?: string;\n MsrMake?: string;\n MsrModel?: string;\n MsrSeparator?: string;\n MsrStartTrack?: string;\n PinPadDeviceTypeValue?: number;\n PinPadDeviceName?: string;\n PinPadMake?: string;\n PinPadModel?: string;\n PinPadDeviceDescription?: string;\n ProfileDescription?: string;\n ProfileId?: string;\n RFIDDeviceTypeValue?: number;\n RFIDDeviceName?: string;\n RFIDDeviceDescription?: string;\n ScaleDeviceTypeValue?: number;\n ScaleDeviceName?: string;\n ScaleDeviceDescription?: string;\n ScaleManualInputAllowed?: boolean;\n ScaleTimeoutInSeconds?: number;\n SignatureCaptureDeviceTypeValue?: number;\n SignatureCaptureDeviceName?: string;\n SignatureCaptureMake?: string;\n SignatureCaptureModel?: string;\n SignatureCaptureDeviceDescription?: string;\n SignatureCaptureFormName?: string;\n Printers?: HardwareProfilePrinter[];\n Scanners?: HardwareProfileScanner[];\n FiscalIntegrationTechnicalProfiles?: FiscalIntegrationTechnicalProfile[];\n CashDrawers?: HardwareProfileCashDrawer[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SupportedLanguage entity interface.\n */\n export interface SupportedLanguage {\n LanguageId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PaymentCard entity interface.\n */\n export interface PaymentCard {\n UseShippingAddress?: boolean;\n CardNumber?: string;\n CCID?: string;\n Track1?: string;\n Track2?: string;\n Track3?: string;\n VoiceAuthorizationCode?: string;\n EncryptedPin?: string;\n AdditionalSecurityData?: string;\n IsSwipe?: boolean;\n Phone?: string;\n Country?: string;\n House?: string;\n Address1?: string;\n Address2?: string;\n City?: string;\n State?: string;\n Zip?: string;\n NameOnCard?: string;\n CardTypeId?: string;\n ExpirationMonth?: number;\n ExpirationYear?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CardPaymentAcceptSettings entity interface.\n */\n export interface CardPaymentAcceptSettings {\n HostPageOrigin?: string;\n AdaptorPath?: string;\n CardTokenizationEnabled?: boolean;\n CardPaymentEnabled?: boolean;\n PaymentAmount?: number;\n HideBillingAddress?: boolean;\n TenderTypeId?: string;\n Locale?: string;\n RequireShippingAddress?: boolean;\n }\n \n /**\n * CardPaymentAcceptPoint entity interface.\n */\n export interface CardPaymentAcceptPoint {\n AcceptPageUrl?: string;\n AcceptPageSubmitUrl?: string;\n MessageOrigin?: string;\n AcceptPageContent?: string;\n PaymentConnectorId?: string;\n }\n \n /**\n * CardPaymentAcceptResult entity interface.\n */\n export interface CardPaymentAcceptResult {\n TenderLine?: TenderLine;\n TokenizedPaymentCard?: TokenizedPaymentCard;\n PaymentSdkErrors?: PaymentError[];\n AdditionalContext?: string;\n AccessCode?: string;\n Settings?: RetrievePaymentResultSettings;\n Email?: string;\n }\n \n /**\n * ReasonCodeLine entity interface.\n */\n export interface ReasonCodeLine {\n LineId?: string;\n Amount?: number;\n Information?: string;\n InformationAmount?: number;\n InputTypeValue?: number;\n ItemTender?: string;\n LineNumber?: number;\n LineTypeValue?: number;\n ParentLineId?: string;\n ReasonCodeId?: string;\n StatementCode?: string;\n SubReasonCodeId?: string;\n SourceCode?: string;\n SourceCode2?: string;\n SourceCode3?: string;\n TransactionId?: string;\n CreatedDateTime?: Date;\n FiscalTransactionParentGuid?: string;\n IsChanged?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReasonSubCode entity interface.\n */\n export interface ReasonSubCode {\n TriggerCode?: string;\n AmountPercent: number;\n ReasonCodeId?: string;\n SubCodeId?: string;\n Description?: string;\n TriggerFunctionTypeValue?: number;\n ProductId?: number;\n PriceTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Receipt entity interface.\n */\n export interface Receipt {\n TransactionId?: string;\n Header?: string;\n Body?: string;\n Footer?: string;\n Width?: number;\n ReceiptId?: string;\n LayoutId?: string;\n ReceiptTitle?: string;\n ReceiptTypeValue?: number;\n ReceiptTypeStrValue?: string;\n Printers?: Printer[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReceiptMask entity interface.\n */\n export interface ReceiptMask {\n FunctionalityProfileId?: string;\n IsIndependent: boolean;\n ReceiptTransactionTypeValue: number;\n RecordId: number;\n Mask?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SalesLine entity interface.\n */\n export interface SalesLine {\n StaffId?: string;\n LineId?: string;\n Description?: string;\n OriginLineId?: string;\n TaxOverrideCode?: string;\n IsPriceKeyedIn?: boolean;\n IsTaxOverideCodeTaxExempt?: boolean;\n ProductId?: number;\n Barcode?: string;\n BarcodeEmbeddedPrice?: number;\n PriceInBarcode?: boolean;\n EntryMethodTypeValue?: number;\n MasterProductId?: number;\n ListingId?: number;\n IsPriceOverridden?: boolean;\n OriginalPrice?: number;\n TotalAmount?: number;\n NetAmountWithoutTax?: number;\n DiscountAmount?: number;\n DiscountAmountWithoutTax?: number;\n NetPrice?: number;\n TotalDiscount?: number;\n TotalPercentageDiscount?: number;\n LineDiscount?: number;\n PeriodicDiscount?: number;\n LineManualDiscountPercentage?: number;\n LineManualDiscountAmount?: number;\n ShippingAddress?: Address;\n DeliveryMode?: string;\n Comment?: string;\n RequestedDeliveryDate?: Date;\n PickupTimeslotStartDateTime?: Date;\n PickupTimeslotEndDateTime?: Date;\n InventoryLocationId?: string;\n InventorySiteId?: string;\n WarehouseLocation?: string;\n InventoryStatusId?: string;\n LicensePlate?: string;\n InventoryDimensionId?: string;\n InventoryTransactionId?: string;\n ItemType?: number;\n ReservationId?: string;\n LineNumber?: number;\n ReturnQuantity?: number;\n QuantityRemained?: number;\n QuantityShipped?: number;\n LineVersion?: number;\n StatusValue?: number;\n SalesStatusValue?: number;\n ProductSourceValue?: number;\n IsGiftCardLine?: boolean;\n GiftCardId?: string;\n GiftCardCurrencyCode?: string;\n GiftCardOperationValue?: number;\n GiftCardTypeValue?: number;\n IsInvoiceLine?: boolean;\n InvoiceId?: string;\n InvoiceAmount?: number;\n IsInvoiceSettled?: boolean;\n InvoiceTypeValue?: number;\n InvoicedSalesId?: string;\n IsVoided?: boolean;\n IsPriceLocked?: boolean;\n ChargeLines?: ChargeLine[];\n BasePrice?: number;\n AgreementPrice?: number;\n AdjustedPrice?: number;\n IsWarrantyLine?: boolean;\n WarrantableTransactionId?: string;\n WarrantableSalesId?: string;\n WarrantableLineNumber?: number;\n WarrantableSerialNumber?: string;\n ReturnTransactionId?: string;\n ReturnLineNumber?: number;\n ReturnInventTransId?: string;\n ReturnStore?: string;\n ReturnTerminalId?: string;\n ReturnChannelId?: number;\n FulfillmentStoreId?: string;\n SalesDate?: Date;\n QuantityInvoiced?: number;\n QuantityOrdered?: number;\n QuantityCanceled?: number;\n SavedQuantity?: number;\n IsSavedDiscount?: boolean;\n RecordId?: number;\n SerialNumber?: string;\n BatchId?: string;\n DeliveryModeChargeAmount?: number;\n UnitOfMeasureSymbol?: string;\n CatalogId?: number;\n ElectronicDeliveryEmailAddress?: string;\n ElectronicDeliveryEmailContent?: string;\n LoyaltyDiscountAmount?: number;\n LoyaltyPercentageDiscount?: number;\n TenderDiscountAmount?: number;\n TenderDiscountPercentage?: number;\n GiftCardBalance?: number;\n IsCustomerAccountDeposit?: boolean;\n Blocked?: boolean;\n Found?: boolean;\n DateToActivateItem?: Date;\n LinePercentageDiscount?: number;\n PeriodicPercentageDiscount?: number;\n QuantityDiscounted?: number;\n UnitQuantity?: number;\n UnitOfMeasureConversion?: UnitOfMeasureConversion;\n DiscountLines?: DiscountLine[];\n PriceLines?: PriceLine[];\n AttainablePriceLines?: PriceLine[];\n PeriodicDiscountPossibilities?: DiscountLine[];\n ReasonCodeLines?: ReasonCodeLine[];\n ReturnLabelProperties?: ReturnLabelContent;\n LineMultilineDiscOnItem?: string;\n RelatedDiscountedLineIds?: string[];\n LinkedParentLineId?: string;\n LineMultilineDiscOnItemValue?: number;\n WasChanged?: boolean;\n OriginalSalesOrderUnitOfMeasure?: string;\n InventOrderUnitOfMeasure?: string;\n TrackingId?: string;\n IsLoyaltyDiscountApplied?: boolean;\n CommissionSalesGroup?: string;\n IsCommissionSalesGroupOverriddenByCustomer?: boolean;\n CommissionSalesGroupSetByCashier?: string;\n QuantityNotProcessed?: number;\n QuantityReserved?: number;\n QuantityPicked?: number;\n QuantityPacked?: number;\n AttributeValues?: AttributeValueBase[];\n ThirdPartyGiftCardInfo?: ThirdPartyGiftCardInfo;\n QuantityReturnable?: number;\n LoyaltyRewardPointLines?: LoyaltyRewardPointLine[];\n ReturnLoyaltyRewardPointLines?: LoyaltyRewardPointLine[];\n FulfillmentStatus?: FulfillmentLineStatus;\n FulfillmentStatusValue?: number;\n DetailedLineStatusValue?: number;\n DetailedLineStatus?: DetailedLineStatus;\n LastReturnProcessedTime?: Date;\n SalesAgreementPrice?: number;\n SalesAgreementLineRecordId?: number;\n IsSalesAgreementSkipped?: boolean;\n ItemId?: string;\n Quantity?: number;\n Price?: number;\n ItemTaxGroupId?: string;\n SalesTaxGroupId?: string;\n OriginalSalesTaxGroupId?: string;\n OriginalItemTaxGroupId?: string;\n TaxAmount?: number;\n SalesOrderUnitOfMeasure?: string;\n NetAmount?: number;\n NetAmountPerUnit?: number;\n GrossAmount?: number;\n TaxLines?: TaxLine[];\n TaxMeasures?: TaxMeasure[];\n TaxAmountExemptInclusive?: number;\n TaxAmountInclusive?: number;\n TaxAmountExclusive?: number;\n NetAmountWithAllInclusiveTax?: number;\n BeginDateTime?: Date;\n EndDateTime?: Date;\n TaxRatePercent?: number;\n IsReturnByReceipt?: boolean;\n ReturnLineTaxAmount?: number;\n ReturnTaxLines?: TaxLine[];\n TaxExemptPriceInclusiveReductionAmount?: number;\n TaxExemptPriceInclusiveOriginalPrice?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SearchArea entity interface.\n */\n export interface SearchArea {\n Longitude?: number;\n Latitude?: number;\n Radius?: number;\n DistanceUnitValue?: number;\n }\n \n /**\n * ShiftAccountLine entity interface.\n */\n export interface ShiftAccountLine {\n AccountTypeValue?: number;\n AccountNumber?: string;\n Amount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ShiftTenderLine entity interface.\n */\n export interface ShiftTenderLine {\n TenderTypeId?: string;\n TenderTypeName?: string;\n CardTypeId?: string;\n TenderCurrency?: string;\n CountingRequired?: boolean;\n StartingAmountOfStoreCurrency?: number;\n StartingAmountOfTenderCurrency?: number;\n FloatingEntryAmountOfStoreCurrency?: number;\n FloatingEntryAmountOfTenderCurrency?: number;\n SafeDropAmountOfStoreCurrency?: number;\n SafeDropAmountOfTenderCurrency?: number;\n BankDropAmountOfStoreCurrency?: number;\n BankDropAmountOfTenderCurrency?: number;\n RemoveTenderAmountOfStoreCurrency?: number;\n RemoveTenderAmountOfTenderCurrency?: number;\n DeclareTenderAmountOfStoreCurrency?: number;\n DeclareTenderAmountOfTenderCurrency?: number;\n TenderedAmountOfStoreCurrency?: number;\n TenderedAmountOfTenderCurrency?: number;\n ChangeAmountOfStoreCurrency?: number;\n ChangeAmountOfTenderCurrency?: number;\n Count?: number;\n Notes?: string;\n Overridden?: boolean;\n OverriddenFloatEntryAmountInStoreCurrency?: number;\n OverriddenFloatEntryAmountInTenderedCurrency?: number;\n OverriddenBankDropAmountInStoreCurrency?: number;\n OverriddenBankDropAmountInTenderedCurrency?: number;\n OverriddenChangeAmountInStoreCurrency?: number;\n OverriddenChangeAmountInTenderedCurrency?: number;\n OverriddenDeclaredTenderAmountInStoreCurrency?: number;\n OverriddenDeclaredTenderAmountInTenderedCurrency?: number;\n OverriddenRemovedTenderAmountInStoreCurrency?: number;\n OverriddenRemovedTenderAmountInTenderedCurrency?: number;\n OverriddenSafeDropAmountInStoreCurrency?: number;\n OverriddenSafeDropAmountInTenderedCurrency?: number;\n OverriddenStartingAmountInStoreCurrency?: number;\n OverriddenStartingAmountInTenderedCurrency?: number;\n OverriddenTenderedAmountInStoreCurrency?: number;\n OverriddenTenderedAmountInTenderedCurrency?: number;\n OverShortAmountOfTenderCurrency?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * StockCountJournalTransaction entity interface.\n */\n export interface StockCountJournalTransaction {\n JournalId?: string;\n RecordId?: number;\n OperationType?: number;\n ItemId?: string;\n DataAreaId?: string;\n ProductRecordId?: number;\n ItemName?: string;\n InventDimId?: string;\n Counted?: number;\n Quantity?: number;\n EstimatedOnHandQuantity?: number;\n OnHandCalculationDateTime?: Date;\n Unit?: string;\n UserId?: string;\n TerminalId?: string;\n CountedDate?: Date;\n Status?: number;\n InventBatchId?: string;\n WarehouseLocationId?: string;\n InventoryStatus?: string;\n LicensePlate?: string;\n WarehousePalletId?: string;\n InventSiteId?: string;\n InventLocationId?: string;\n ConfigId?: string;\n InventSizeId?: string;\n InventColorId?: string;\n InventStyleId?: string;\n InventSerialId?: string;\n TrackingGuid?: string;\n UpdatedInAx?: boolean;\n Message?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TaxLine entity interface.\n */\n export interface TaxLine {\n TaxGroup?: string;\n Percentage?: number;\n IsExempt?: boolean;\n TaxBasis?: number;\n IsIncludedInPrice?: boolean;\n SaleLineNumber?: number;\n StoreId?: string;\n TerminalId?: string;\n TransactionId?: string;\n TaxCode?: string;\n Amount?: number;\n AmountRefunded?: number;\n IsTaxGroupRounding?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TenderLine entity interface.\n */\n export interface TenderLine {\n StoreId?: string;\n TerminalId?: string;\n TransactionId?: string;\n InternalTransactionId?: string;\n RefundableAmount?: number;\n CaptureToken?: string;\n CardToken?: string;\n Authorization?: string;\n TransactionStatusValue?: number;\n IncomeExpenseAccountTypeValue?: number;\n MaskedCardNumber?: string;\n TenderDate?: Date;\n IsPreProcessed?: boolean;\n IsDeposit?: boolean;\n IsCustomerAccountFloorLimitUsed?: boolean;\n AuthorizationReferenceId?: string;\n IsIncrementalCaptureEnabled?: boolean;\n IsReauthorizationEnabled?: boolean;\n IncrementalOffsetAmount?: number;\n ChannelId?: number;\n IsLinkedRefund?: boolean;\n LinkedPaymentStore?: string;\n LinkedPaymentTerminalId?: string;\n LinkedPaymentTransactionId?: string;\n LinkedPaymentLineNumber?: number;\n LinkedPaymentCurrency?: string;\n RoundingDifference?: number;\n TenderLineId?: string;\n Amount?: number;\n CashBackAmount?: number;\n AmountInTenderedCurrency?: number;\n AmountInCompanyCurrency?: number;\n Currency?: string;\n ExchangeRate?: number;\n CompanyCurrencyExchangeRate?: number;\n TenderTypeId?: string;\n SignatureData?: string;\n ReasonCodeLines?: ReasonCodeLine[];\n LineNumber?: number;\n GiftCardId?: string;\n GiftCardPin?: string;\n GiftCardExpirationYear?: number;\n GiftCardExpirationMonth?: number;\n CreditMemoId?: string;\n CustomerId?: string;\n LoyaltyCardId?: string;\n CardTypeId?: string;\n IsChangeLine?: boolean;\n IsHistorical?: boolean;\n IsVoidable?: boolean;\n StatusValue?: number;\n VoidStatusValue?: number;\n AuthorizedAmount?: number;\n PaymentRefRecId?: number;\n CardPaymentAccountId?: string;\n ProcessingTypeValue?: number;\n CardProcessorStatusValue?: number;\n LinkedPaymentRefRecId?: number;\n IsPolicyBypassed?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TextValueTranslation entity interface.\n */\n export interface TextValueTranslation {\n Language?: string;\n Text?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * UnitOfMeasure entity interface.\n */\n export interface UnitOfMeasure {\n DecimalPrecision?: number;\n Symbol?: string;\n Description?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * RecommendedElement entity interface.\n */\n export interface RecommendedElement {\n ElementId?: string;\n ElementTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * RecommendationCriteria entity interface.\n */\n export interface RecommendationCriteria {\n CustomerAccountNumber?: string;\n CatalogId?: number;\n ProductIds?: number[];\n CategoryIds?: number[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductListLine entity interface.\n */\n export interface ProductListLine {\n ProductListId?: string;\n LineId?: string;\n ProductId?: number;\n Quantity?: number;\n UnitOfMeasure?: string;\n CreatedDateTime?: Date;\n LastUpdated?: Date;\n DeletedDateTime?: Date;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CommerceListLine entity interface.\n */\n export interface CommerceListLine {\n CommerceListId?: number;\n LineId?: number;\n CustomerId?: string;\n CustomerName?: string;\n ProductId?: number;\n Quantity?: number;\n UnitOfMeasure?: string;\n IsFavorite?: boolean;\n IsRecurring?: boolean;\n IsPrivate?: boolean;\n CreatedDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CommerceListContributor entity interface.\n */\n export interface CommerceListContributor {\n RecordId?: number;\n CustomerId?: string;\n CustomerName?: string;\n InvitationId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CommerceListInvitation entity interface.\n */\n export interface CommerceListInvitation {\n RecordId?: number;\n Invitee?: string;\n IsSent?: boolean;\n LastRequestDateTime?: Date;\n LastSentDateTime?: Date;\n StatusValue?: number;\n Token?: string;\n InvitationTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SearchFilter entity interface.\n */\n export interface SearchFilter {\n Key?: string;\n FilterTypeValue: number;\n SearchValues?: SearchFilterValue[];\n }\n \n /**\n * SearchFilterValue entity interface.\n */\n export interface SearchFilterValue {\n Value?: CommercePropertyValue;\n }\n \n /**\n * TransactionSearchCriteria entity interface.\n */\n export interface TransactionSearchCriteria {\n TransactionIds?: string[];\n SalesId?: string;\n ReceiptId?: string;\n ChannelReferenceId?: string;\n CustomerAccountNumber?: string;\n CustomerFirstName?: string;\n CustomerLastName?: string;\n StoreId?: string;\n TerminalId?: string;\n ItemId?: string;\n Barcode?: string;\n SerialNumber?: string;\n StaffId?: string;\n StartDateTime?: Date;\n EndDateTime?: Date;\n ReceiptEmailAddress?: string;\n SearchIdentifiers?: string;\n SearchLocationTypeValue?: number;\n CustomFilters?: SearchFilter[];\n }\n \n /**\n * SalesOrderSearchCriteria entity interface.\n */\n export interface SalesOrderSearchCriteria {\n TransactionIds?: string[];\n SalesId?: string;\n ReceiptId?: string;\n ChannelReferenceId?: string;\n CustomerAccountNumber?: string;\n CustomerFirstName?: string;\n CustomerLastName?: string;\n StoreId?: string;\n TerminalId?: string;\n ItemId?: string;\n Barcode?: string;\n SerialNumber?: string;\n StaffId?: string;\n SearchTypeValue?: number;\n StartDateTime?: Date;\n EndDateTime?: Date;\n IncludeDetails?: boolean;\n ReceiptEmailAddress?: string;\n SearchIdentifiers?: string;\n SalesTransactionTypeValues?: number[];\n SearchLocationTypeValue?: number;\n TransactionStatusTypeValues?: number[];\n }\n \n /**\n * SearchStoreCriteria entity interface.\n */\n export interface SearchStoreCriteria {\n ChannelId?: number;\n StoreNumber?: string;\n InventoryLocationId?: string;\n }\n \n /**\n * CustomerSearchCriteria entity interface.\n */\n export interface CustomerSearchCriteria {\n Keyword?: string;\n SearchOnlyCurrentCompany?: boolean;\n SearchLocationValue?: number;\n Refinements?: CustomerRefinerValue[];\n DataLevelValue?: number;\n }\n \n /**\n * ProductPrice entity interface.\n */\n export interface ProductPrice {\n ProductId?: number;\n ListingId?: number;\n BasePrice?: number;\n TradeAgreementPrice?: number;\n AdjustedPrice?: number;\n MaxVariantPrice?: number;\n MinVariantPrice?: number;\n CustomerContextualPrice?: number;\n DiscountAmount?: number;\n CurrencyCode?: string;\n ItemId?: string;\n InventoryDimensionId?: string;\n UnitOfMeasure?: string;\n ValidFrom?: Date;\n ProductLookupId?: number;\n ChannelId?: number;\n CatalogId?: number;\n DiscountLines?: DiscountLine[];\n SalesAgreementPrice?: number;\n PriceSourceTypeValue?: number;\n AttainablePriceLines?: PriceLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrgUnitAvailability entity interface.\n */\n export interface OrgUnitAvailability {\n OrgUnitLocation?: OrgUnitLocation;\n ItemAvailabilities?: ItemAvailability[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductVariantPropertySet entity interface.\n */\n export interface ProductVariantPropertySet {\n VariantId?: number;\n ProductVariantPropertiesAsList?: ProductPropertyTranslation[];\n }\n \n /**\n * PurchaseOrderLine entity interface.\n */\n export interface PurchaseOrderLine {\n RecordId?: number;\n OrderId?: string;\n ProductRecordId?: number;\n ItemId?: string;\n ItemName?: string;\n InventDimId?: string;\n QuantityOrdered?: number;\n PurchaseQuantity?: number;\n PurchaseUnit?: string;\n PurchaseReceived?: number;\n PurchaseReceivedNow?: number;\n InventBatchId?: string;\n WMSLocationId?: string;\n WMSPalletId?: string;\n InventoryStatus?: string;\n LicensePlate?: string;\n InventSiteId?: string;\n InventLocationId?: string;\n ConfigId?: string;\n InventSerialId?: string;\n InventSizeId?: string;\n InventColorId?: string;\n InventStyleId?: string;\n IsCommitted?: boolean;\n Message?: string;\n UniqueIdentifier?: string;\n DeliveryMethod?: string;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TransferOrderLine entity interface.\n */\n export interface TransferOrderLine {\n RecordId?: number;\n OrderId?: string;\n ProductRecordId?: number;\n ItemId?: string;\n ItemName?: string;\n InventDimId?: string;\n QuantityTransferred?: number;\n QuantityShipped?: number;\n QuantityReceived?: number;\n QuantityShipNow?: number;\n QuantityReceiveNow?: number;\n QuantityRemainShip?: number;\n QuantityRemainReceive?: number;\n PurchaseUnit?: string;\n InventBatchId?: string;\n WMSLocationId?: string;\n WMSPalletId?: string;\n InventoryStatus?: string;\n LicensePlate?: string;\n InventSiteId?: string;\n InventLocationId?: string;\n ConfigId?: string;\n InventSerialId?: string;\n InventSizeId?: string;\n InventColorId?: string;\n InventStyleId?: string;\n IsCommitted?: boolean;\n Message?: string;\n Guid?: string;\n DeliveryMethod?: string;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TransferOrderJournal entity interface.\n */\n export interface TransferOrderJournal {\n OrderId?: string;\n VoucherId?: string;\n UpdatedByWorker?: string;\n InventLocationIdFrom?: string;\n InventLocationIdTo?: string;\n QuantityShipped?: number;\n PostingDate?: Date;\n DeliveryMode?: string;\n Comments?: string;\n JournalLines?: TransferOrderJournalLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PickingListLine entity interface.\n */\n export interface PickingListLine {\n RecordId?: number;\n OrderId?: string;\n ProductRecordId?: number;\n ItemId?: string;\n ItemName?: string;\n InventDimId?: string;\n QuantityOrdered?: number;\n PurchaseReceivedNow?: number;\n InventBatchId?: string;\n WMSLocationId?: string;\n WMSPalletId?: string;\n InventoryStatus?: string;\n LicensePlate?: string;\n InventSiteId?: string;\n InventLocationId?: string;\n ConfigId?: string;\n InventSerialId?: string;\n InventSizeId?: string;\n InventColorId?: string;\n InventStyleId?: string;\n IsCommitted?: boolean;\n Message?: string;\n Guid?: string;\n DeliveryMethod?: string;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Affiliation entity interface.\n */\n export interface Affiliation {\n RecordId?: number;\n AffiliationTypeValue?: number;\n Description?: string;\n Name?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryInboundOutboundDocumentLinesSummary entity interface.\n */\n export interface InventoryInboundOutboundDocumentLinesSummary {\n InProgressQuantity?: number;\n TotalLineNumber?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSerialNumberLinesSummary entity interface.\n */\n export interface InventoryDocumentSerialNumberLinesSummary {\n RegisteringQuantity?: number;\n RegisteredQuantity?: number;\n TotalLineNumber?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryInboundOutboundDocumentLine entity interface.\n */\n export interface InventoryInboundOutboundDocumentLine {\n WorkDocumentId?: string;\n LineId?: string;\n SourceDocumentRecordId?: number;\n SourceDocumentLineRecordId?: number;\n SourceDocumentTypeValue?: number;\n QuantityOrdered?: number;\n QuantityShipped?: number;\n QuantityReceived?: number;\n QuantityCancelled?: number;\n QuantityToUpdate?: number;\n LocationId?: string;\n ItemId?: string;\n ProductId?: number;\n ItemName?: string;\n ItemPrimaryImageUrl?: string;\n IsLocationActive?: boolean;\n IsLocationAllowBlankReceiptEnabled?: boolean;\n IsLocationBlankIssueAllowed?: boolean;\n ProductDimensions?: ProductDimension[];\n Note?: string;\n NoteModifiedByStaffId?: string;\n NoteModifiedDateTime?: Date;\n OperationResultMessage?: string;\n IsCloseLine?: boolean;\n OriginTypeValue?: number;\n UnitOfMeasure?: string;\n SourceDocumentLine?: InventoryInboundOutboundSourceDocumentLine;\n SerialNumberLines?: InventoryDocumentSerialNumberLine[];\n LongVersion?: number;\n ToLocationId?: string;\n AdjustmentTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryInboundOutboundSourceDocument entity interface.\n */\n export interface InventoryInboundOutboundSourceDocument {\n RecordId?: number;\n DocumentTypeValue?: number;\n DocumentId?: string;\n StatusValue?: number;\n ReceiveDate?: Date;\n ShipDate?: Date;\n Sender?: string;\n Receiver?: string;\n SenderDetails?: string;\n ReceiverDetails?: string;\n DeliveryMode?: string;\n TotalQuantityOrdered?: number;\n TotalQuantityShipped?: number;\n TotalQuantityReceived?: number;\n TotalQuantityCancelled?: number;\n DataAreaId?: string;\n Note?: string;\n TotalLines?: number;\n IsChangeAllowed?: boolean;\n NoteModifiedByStaffId?: string;\n NoteModifiedDateTime?: Date;\n DocumentTypeId?: string;\n Description?: string;\n StaffId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryInboundOutboundSourceDocumentLine entity interface.\n */\n export interface InventoryInboundOutboundSourceDocumentLine {\n DocumentRecordId?: number;\n DocumentTypeValue?: number;\n RecordId?: number;\n LineNumber?: number;\n ItemId?: string;\n ProductId?: number;\n QuantityOrdered?: number;\n QuantityShipped?: number;\n QuantityReceived?: number;\n QuantityCancelled?: number;\n LocationId?: string;\n OverDeliveryPercentage?: number;\n UnderDeliveryPercentage?: number;\n UnitId?: string;\n Receiver?: string;\n DataAreaId?: string;\n Note?: string;\n NoteModifiedByStaffId?: string;\n NoteModifiedDateTime?: Date;\n DocumentId?: string;\n ItemName?: string;\n ItemPrimaryImageUrl?: string;\n IsLocationActive?: boolean;\n IsLocationAllowBlankReceiptEnabled?: boolean;\n IsLocationBlankIssueAllowed?: boolean;\n HasSerialNumber?: boolean;\n IsSerialNumberBlankReceiptAllowed?: boolean;\n IsSerialNumberDuplicateCheckEnabled?: boolean;\n ProductDimensions?: ProductDimension[];\n SerialNumberLines?: InventoryDocumentSourceSerialNumberLine[];\n StatusValue?: number;\n ToProductId?: number;\n ToLocationId?: string;\n InventoryDimensionId?: string;\n ToInventoryDimensionId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentLineFilterCriteria entity interface.\n */\n export interface InventoryDocumentLineFilterCriteria {\n ProductId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentUpdateLinesAction entity interface.\n */\n export interface InventoryDocumentUpdateLinesAction {\n Quantity?: number;\n ActionTypeValue?: number;\n LocationId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentLineOperationResultSettings entity interface.\n */\n export interface InventoryDocumentLineOperationResultSettings {\n ModeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentLineSearchCriteria entity interface.\n */\n export interface InventoryDocumentLineSearchCriteria {\n SourceDocumentId?: string;\n SourceDocumentTypeValue?: number;\n WorkDocumentId?: string;\n ProductId?: number;\n ItemIds?: string[];\n AvailableSerializedLineOnly?: boolean;\n DocumentLineIds?: string[];\n DocumentOperationTypeValue?: number;\n OperationTypeValue?: number;\n LocationId?: string;\n ToLocationId?: string;\n AdjustmentTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSearchCriteria entity interface.\n */\n export interface InventoryDocumentSearchCriteria {\n DocumentId?: string;\n TransferFromWarehouse?: string;\n ShipFromWarehouse?: string;\n TransferToWarehouse?: string;\n Description?: string;\n DocumentTypeIds?: string[];\n DocumentStateValue?: number;\n DocumentTypeValues?: number[];\n CustomFilters?: SearchFilter[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSerialNumberLineSearchCriteria entity interface.\n */\n export interface InventoryDocumentSerialNumberLineSearchCriteria {\n DocumentLineId?: string;\n SerialNumber?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSerialNumberLineUpdateAction entity interface.\n */\n export interface InventoryDocumentSerialNumberLineUpdateAction {\n DocumentLineId?: string;\n LineId?: string;\n SerialNumber?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSerialNumberLineResetAction entity interface.\n */\n export interface InventoryDocumentSerialNumberLineResetAction {\n DocumentLineId?: string;\n LineId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryInboundOutboundDocumentUpdateLinesByCriteriaResult entity interface.\n */\n export interface InventoryInboundOutboundDocumentUpdateLinesByCriteriaResult {\n UpdatedLines?: InventoryInboundOutboundDocumentLine[];\n TotalLinesUpdated?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * WarehouseLocationSearchCriteria entity interface.\n */\n export interface WarehouseLocationSearchCriteria {\n WarehouseIds?: string[];\n IsLocationProfileRequired?: boolean;\n SearchText?: string;\n }\n \n /**\n * InventoryDocumentSerialNumberLine entity interface.\n */\n export interface InventoryDocumentSerialNumberLine {\n WorkDocumentId?: string;\n WorkDocumentLineId?: string;\n SourceLineId?: string;\n LineId?: string;\n Quantity?: number;\n SerialNumber?: string;\n StatusValue?: number;\n ProductId?: number;\n ModifiedDateTime?: Date;\n SourceDocumentRecordId?: number;\n SourceDocumentTypeValue?: number;\n SourceDocumentLineRecordId?: number;\n SourceLine?: InventoryDocumentSourceSerialNumberLine;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentValidationCategoryResultsSummary entity interface.\n */\n export interface InventoryDocumentValidationCategoryResultsSummary {\n CategoryName?: string;\n SeverityValue?: number;\n TotalValidationResultCount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentValidationResultSummary entity interface.\n */\n export interface InventoryDocumentValidationResultSummary {\n DocumentId?: string;\n DocumentVersion?: number;\n CategorySummaries?: InventoryDocumentValidationCategoryResultsSummary[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentValidationResultLine entity interface.\n */\n export interface InventoryDocumentValidationResultLine {\n DocumentValidationResultLineId?: string;\n CategoryName?: string;\n SeverityValue?: number;\n ErrorCode?: number;\n ErrorMessage?: string;\n DocumentId?: string;\n DocumentLongVersion?: number;\n DocumentLineId?: string;\n CreatedDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentValidationResultSearchCriteria entity interface.\n */\n export interface InventoryDocumentValidationResultSearchCriteria {\n DocumentId?: string;\n DocumentVersion?: number;\n SeverityValue?: number;\n Categories?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductDimensionValueInventoryAvailability entity interface.\n */\n export interface ProductDimensionValueInventoryAvailability {\n DimensionTypeValue?: number;\n DimensionValue?: ProductDimensionValue;\n ProductIds?: number[];\n TotalAvailableInventoryLevelLabel?: string;\n TotalAvailableInventoryLevelCode?: string;\n PhysicalAvailableInventoryLevelLabel?: string;\n PhysicalAvailableInventoryLevelCode?: string;\n }\n \n /**\n * ProductDimension entity interface.\n */\n export interface ProductDimension {\n DimensionTypeValue: number;\n DimensionValue?: ProductDimensionValue;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductDimensionValue entity interface.\n */\n export interface ProductDimensionValue {\n RecordId: number;\n Value?: string;\n DimensionId?: string;\n ColorHexCode?: string;\n ImageUrl?: string;\n RefinerGroup?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductDimensionCombination entity interface.\n */\n export interface ProductDimensionCombination {\n ProductDimensions?: ProductDimension[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SearchRefiner entity interface.\n */\n export interface SearchRefiner {\n RecordId?: number;\n KeyName?: string;\n DataTypeValue?: number;\n RefinerTypeValue?: number;\n DisplayTemplateValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SearchRefinerValue entity interface.\n */\n export interface SearchRefinerValue {\n RefinerRecordId?: number;\n DataTypeValue?: number;\n LeftValueBoundString?: string;\n RightValueBoundString?: string;\n UnitText?: string;\n RowNumber?: number;\n Count?: number;\n LeftValueBoundLocalizedString?: string;\n RightValueBoundLocalizedString?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductRefiner entity interface.\n */\n export interface ProductRefiner extends SearchRefiner {\n SourceValue?: number;\n Values?: ProductRefinerValue[];\n IsDimension?: boolean;\n }\n \n /**\n * ProductRefinerValue entity interface.\n */\n export interface ProductRefinerValue extends SearchRefinerValue {\n RefinerSourceValue?: number;\n SwatchImageUrl?: string;\n SwatchColorHexCode?: string;\n }\n \n /**\n * ClientBookRefiner entity interface.\n */\n export interface ClientBookRefiner extends SearchRefiner {\n SourceValue?: number;\n Values?: ClientBookRefinerValue[];\n }\n \n /**\n * ClientBookRefinerValue entity interface.\n */\n export interface ClientBookRefinerValue extends SearchRefinerValue {\n RefinerSourceValue?: number;\n }\n \n /**\n * ProductRelationType entity interface.\n */\n export interface ProductRelationType {\n Name?: string;\n RecordId: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ComponentInSlotRelation entity interface.\n */\n export interface ComponentInSlotRelation {\n ComponentId: number;\n SlotId: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductRules entity interface.\n */\n export interface ProductRules {\n HasLinkedProducts: boolean;\n IsSerialized: boolean;\n IsActiveInSalesProcess: boolean;\n IsBlocked: boolean;\n DateOfBlocking: Date;\n DateToActivate: Date;\n DateToBlock: Date;\n DefaultUnitOfMeasure?: string;\n PriceKeyingRequirementValue: number;\n QuantityKeyingRequirementValue: number;\n MustKeyInComment: boolean;\n CanQuantityBecomeNegative: boolean;\n MustScaleItem: boolean;\n CanPriceBeZero: boolean;\n ProductId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LocalizedString entity interface.\n */\n export interface LocalizedString {\n RecordId?: number;\n LanguageId?: string;\n TextId?: number;\n Text?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyCard entity interface.\n */\n export interface LoyaltyCard {\n CardNumber?: string;\n CardTenderTypeValue?: number;\n CustomerAccount?: string;\n LoyaltyGroups?: LoyaltyGroup[];\n RewardPoints?: LoyaltyRewardPoint[];\n LoyaltyEnrollmentDate?: Date;\n LoyaltyEnrollmentDateLocal?: Date;\n LoyaltyEnrollmentTime?: number;\n LoyaltyEnrollmentTimeLocal?: number;\n OmOperatingUnitId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductComponent entity interface.\n */\n export interface ProductComponent {\n ProductId: number;\n SlotId: number;\n Product?: SimpleProduct;\n AdditionalChargeForComponent?: number;\n Behavior?: ProductBehavior;\n Description?: string;\n Dimensions?: ProductDimension[];\n ItemId?: string;\n Name?: string;\n ProductTypeValue?: number;\n Quantity?: number;\n UnitOfMeasure?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SimpleProduct entity interface.\n */\n export interface SimpleProduct {\n RecordId: number;\n ItemId?: string;\n Name?: string;\n Description?: string;\n ProductTypeValue: number;\n DefaultUnitOfMeasure?: string;\n BasePrice: number;\n Price: number;\n AdjustedPrice: number;\n MasterProductId?: number;\n Components?: ProductComponent[];\n IsGiftCard?: boolean;\n ProductNumber?: string;\n Dimensions?: ProductDimension[];\n Behavior?: ProductBehavior;\n LinkedProducts?: SimpleLinkedProduct[];\n PrimaryImageUrl?: string;\n ItemTypeValue?: number;\n ItemServiceTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductBehavior entity interface.\n */\n export interface ProductBehavior {\n HasSerialNumber: boolean;\n IsDiscountAllowed: boolean;\n IsManualDiscountAllowed: boolean;\n IsKitDisassemblyAllowed: boolean;\n IsNegativeQuantityAllowed: boolean;\n IsReturnAllowed: boolean;\n IsSaleAtPhysicalStoresAllowed: boolean;\n IsZeroSalePriceAllowed: boolean;\n KeyInPriceValue: number;\n KeyInQuantityValue: number;\n MustKeyInComment: boolean;\n MustPrintIndividualShelfLabelsForVariants: boolean;\n MustPromptForSerialNumberOnlyAtSale: boolean;\n MustWeighProductAtSale: boolean;\n ValidFromDateForSaleAtPhysicalStores: Date;\n ValidToDateForSaleAtPhysicalStores: Date;\n IsStorageDimensionGroupLocationActive: boolean;\n IsStorageDimensionGroupLocationAllowBlankReceiptEnabled: boolean;\n AllowNegativePhysicalInventory: boolean;\n IsStockedProduct: boolean;\n IsBlankSerialNumberAllowed?: boolean;\n IsBlankSerialNumberReceiptAllowed?: boolean;\n IsSerialNumberControlEnabled?: boolean;\n IsStorageDimensionGroupLocationBlankIssueAllowed?: boolean;\n IsSerialNumberRequired?: boolean;\n DefaultQuantity?: number;\n MaximumQuantity?: number;\n MinimumQuantity?: number;\n MultipleOfQuantity?: number;\n InventoryLocationId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SimpleLinkedProduct entity interface.\n */\n export interface SimpleLinkedProduct {\n RecordId: number;\n ItemId?: string;\n Name?: string;\n Description?: string;\n ProductTypeValue: number;\n DefaultUnitOfMeasure?: string;\n BasePrice: number;\n Price: number;\n AdjustedPrice: number;\n Quantity: number;\n Behavior?: ProductBehavior;\n Dimensions?: ProductDimension[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductSearchResult entity interface.\n */\n export interface ProductSearchResult {\n ItemId?: string;\n Name?: string;\n Price: number;\n PrimaryImageUrl?: string;\n RecordId: number;\n ProductNumber?: string;\n TrackingId?: string;\n AverageRating?: number;\n TotalRatings?: number;\n Description?: string;\n BasePrice?: number;\n MinVariantPrice?: number;\n MaxVariantPrice?: number;\n DisplayOrder?: number;\n AttributeValues?: AttributeValue[];\n IsMasterProduct?: boolean;\n MasterProductId?: number;\n DefaultUnitOfMeasure?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SearchSuggestion entity interface.\n */\n export interface SearchSuggestion {\n Value?: string;\n Value2?: CommerceProperty;\n Value3?: CommerceProperty;\n Value4?: CommerceProperty;\n SuggestionType?: string;\n Id?: string;\n ImageUrl?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyPointRedemptionEstimate entity interface.\n */\n export interface LoyaltyPointRedemptionEstimate {\n MaxCurrencyValueOfLoyaltyPoints?: number;\n RewardPointToRedeemList?: LoyaltyRewardPointLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyGroup entity interface.\n */\n export interface LoyaltyGroup {\n Description?: string;\n Name?: string;\n RecordId: number;\n LoyaltyTiers?: LoyaltyTier[];\n LoyaltyCardTiers?: LoyaltyCardTier[];\n HighestActiveLoyaltyCardTier?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyTier entity interface.\n */\n export interface LoyaltyTier {\n Description?: string;\n RecordId: number;\n TierId?: string;\n TierLevel: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyCardTier entity interface.\n */\n export interface LoyaltyCardTier {\n RecordId: number;\n TierId?: string;\n LoyaltyTierRecordId: number;\n ValidFrom: Date;\n ValidTo: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyRewardPoint entity interface.\n */\n export interface LoyaltyRewardPoint {\n IsRedeemable: boolean;\n RewardPointCurrency?: string;\n RewardPointTypeValue: number;\n Description?: string;\n RewardPointId?: string;\n IssuedPoints?: number;\n UsedPoints?: number;\n ExpiredPoints?: number;\n ActivePoints?: number;\n PointsExpiringSoon?: number;\n UnvestedPoints?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyCardTransaction entity interface.\n */\n export interface LoyaltyCardTransaction {\n ChannelName?: string;\n EntryDateTime: Date;\n EntryTypeValue: number;\n ExpirationDate: Date;\n RewardPointAmountQuantity: number;\n TransactionId?: string;\n }\n \n /**\n * GiftCard entity interface.\n */\n export interface GiftCard {\n Id?: string;\n Balance?: number;\n BalanceCurrencyCode?: string;\n BalanceInCardCurrency?: number;\n CardCurrencyCode?: string;\n GiftCardIssueAmount?: number;\n GiftCardActiveFrom?: Date;\n GiftCardExpireDate?: Date;\n GiftCardHistoryDetails?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OperationPermission entity interface.\n */\n export interface OperationPermission {\n OperationName?: string;\n OperationId?: number;\n CheckUserAccess?: boolean;\n AllowAnonymousAccess?: boolean;\n AllowCustomerAccess?: boolean;\n AllowApplicationAccess?: boolean;\n IsEnabledForTaskManagement?: boolean;\n Permissions?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * StateProvinceInfo entity interface.\n */\n export interface StateProvinceInfo {\n CountryRegionId?: string;\n StateId?: string;\n StateName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TransactionLog entity interface.\n */\n export interface TransactionLog extends Transaction {\n }\n \n /**\n * KitTransaction entity interface.\n */\n export interface KitTransaction extends TransactionLog {\n KitTransactionLines?: KitTransactionLine[];\n }\n \n /**\n * SalesTaxGroup entity interface.\n */\n export interface SalesTaxGroup {\n RecordId: number;\n TaxGroup?: string;\n TaxGroupName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductProperty entity interface.\n */\n export interface ProductProperty {\n ValueString?: string;\n UnitText?: string;\n PropertyTypeValue?: number;\n KeyName?: string;\n FriendlyName?: string;\n RecordId?: number;\n IsDimensionProperty?: boolean;\n AttributeValueId?: number;\n SwatchImageUrl?: string;\n SwatchColorHexCode?: string;\n GroupId?: number;\n GroupTypeValue?: number;\n GroupName?: string;\n ExtensionProperties?: CommerceProperty[];\n ProductId?: number;\n CatalogId?: number;\n }\n \n /**\n * ProductCompositionInformation entity interface.\n */\n export interface ProductCompositionInformation {\n VariantInformation?: ProductVariantInformation;\n KitDefinition?: KitDefinition;\n }\n \n /**\n * ProductVariantInformation entity interface.\n */\n export interface ProductVariantInformation {\n ActiveVariantProductId: number;\n Variants?: ProductVariant[];\n Dimensions?: ProductDimensionSet[];\n ItemId?: string;\n MasterProductId?: number;\n }\n \n /**\n * ProductChangeTrackingInformation entity interface.\n */\n export interface ProductChangeTrackingInformation {\n ModifiedDateTime: Date;\n ChangeActionValue?: number;\n RequestedActionValue?: number;\n }\n \n /**\n * ProductDimensionSet entity interface.\n */\n export interface ProductDimensionSet {\n DimensionKey?: string;\n DimensionValues?: ProductDimensionValueSet[];\n }\n \n /**\n * ProductDimensionValueSet entity interface.\n */\n export interface ProductDimensionValueSet {\n DimensionId?: string;\n DimensionValue?: string;\n VariantSet?: number[];\n Language?: string;\n SwatchImageUrl?: string;\n SwatchColorHexCode?: string;\n SwatchRefinerGroupValue?: string;\n SwatchRefinerGroupTranslation?: string;\n SwatchRefinerGroupImageUrl?: string;\n SwatchRefinerGroupColorHexCode?: string;\n }\n \n /**\n * RichMediaLocations entity interface.\n */\n export interface RichMediaLocations {\n Items?: RichMediaLocationsRichMediaLocation[];\n }\n \n /**\n * RichMediaLocationsRichMediaLocation entity interface.\n */\n export interface RichMediaLocationsRichMediaLocation {\n Url?: string;\n AltText?: string;\n IsSelfHosted?: boolean;\n IsDefault?: boolean;\n Priority?: number;\n }\n \n /**\n * KitDefinition entity interface.\n */\n export interface KitDefinition {\n DisassembleAtRegister: boolean;\n KitLineDefinitions?: KitLineDefinition[];\n KitLineProductToVariantMap?: ComponentKitVariantSet[];\n KitVariantToComponentMap?: KitVariantContent[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ComponentKitVariantSet entity interface.\n */\n export interface ComponentKitVariantSet {\n KitLineProductId: number;\n KitVariantIdList?: number[];\n }\n \n /**\n * KitLineDefinition entity interface.\n */\n export interface KitLineDefinition {\n ComponentProductId: number;\n KitLineIdentifier: number;\n SubstituteProductIds?: number[];\n ComponentProperties?: KitLineProductProperty[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * KitLineProductProperty entity interface.\n */\n export interface KitLineProductProperty {\n KitLineIdentifier: number;\n ProductId: number;\n Unit?: string;\n Quantity: number;\n Charge: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * KitComponentKey entity interface.\n */\n export interface KitComponentKey {\n KitLineIdentifier: number;\n DistinctProductId: number;\n }\n \n /**\n * KitVariantContent entity interface.\n */\n export interface KitVariantContent {\n KitVariantId: number;\n KitComponentKeyList?: KitComponentKey[];\n }\n \n /**\n * ProductLookupClause entity interface.\n */\n export interface ProductLookupClause {\n ItemId?: string;\n InventDimensionId?: string;\n Barcode?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductAssortmentInterval entity interface.\n */\n export interface ProductAssortmentInterval {\n ProductId?: number;\n ValidFrom?: Date;\n ValidTo?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrgUnitLocation entity interface.\n */\n export interface OrgUnitLocation {\n Contacts?: OrgUnitContact[];\n ChannelId?: number;\n Latitude?: number;\n Longitude?: number;\n OrgUnitName?: string;\n OrgUnitNumber?: string;\n Address?: string;\n Street?: string;\n StreetNumber?: string;\n City?: string;\n DistrictName?: string;\n BuildingCompliment?: string;\n Postbox?: string;\n Zip?: string;\n County?: string;\n CountyName?: string;\n State?: string;\n StateName?: string;\n Country?: string;\n Distance?: number;\n InventoryLocationId?: string;\n InventorySiteId?: string;\n PostalAddressId?: number;\n OpenFrom?: number;\n OpenTo?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrgUnitContact entity interface.\n */\n export interface OrgUnitContact {\n ChannelId: number;\n Locator?: string;\n LocatorExtension?: string;\n ContactTypeValue: number;\n IsPrimary: boolean;\n IsPrivate: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SalesLineDeliveryOption entity interface.\n */\n export interface SalesLineDeliveryOption {\n SalesLineId?: string;\n DeliveryOptions?: DeliveryOption[];\n }\n \n /**\n * DeliveryOption entity interface.\n */\n export interface DeliveryOption {\n ChargeGroup?: string;\n Code?: string;\n Description?: string;\n RecordId: number;\n DeliveryChargeLines?: DeliveryChargeLine[];\n TotalChargeAmount?: number;\n ShippingChargeAmount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelDeliveryOption entity interface.\n */\n export interface ChannelDeliveryOption {\n ChannelId: number;\n DeliveryOptions?: DeliveryOption[];\n }\n \n /**\n * ChannelIdentity entity interface.\n */\n export interface ChannelIdentity {\n ChannelType: ExtensibleRetailChannelType;\n Name?: string;\n OperatingUnitNumber?: string;\n DataAreaId?: string;\n RecordId: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ExtensibleRetailChannelType entity interface.\n */\n export interface ExtensibleRetailChannelType extends ExtensibleEnumeration {\n }\n \n /**\n * ChannelProfileProperty entity interface.\n */\n export interface ChannelProfileProperty {\n Key: number;\n Value?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelConfiguration entity interface.\n */\n export interface ChannelConfiguration {\n RecordId: number;\n ChannelNaturalId?: string;\n MinimumDepositPercentage: number;\n QuoteExpirationDays: number;\n PickupDeliveryModeCode?: string;\n CarryoutDeliveryModeCode?: string;\n CancellationChargePercentage: number;\n InventLocation?: string;\n InventLocationDataAreaId?: string;\n BingMapsApiKey?: string;\n BingMapsEnabled: boolean;\n Currency?: string;\n CatalogDefaultImageTemplate?: string;\n CompanyCurrency?: string;\n PriceIncludesSalesTax: boolean;\n CountryRegionId?: string;\n ChannelCountryRegionISOCode?: string;\n DefaultLanguageId?: string;\n TimeZoneInfoId?: string;\n EmailDeliveryModeCode?: string;\n GiftCardItemId?: string;\n EnableProductRecommendations: boolean;\n RefundableShippingAmountWithoutApproval: number;\n RefundShippingCharges: boolean;\n ReceiptSettingsValue: number;\n CustomerAttributeGroupId: number;\n ClientBookAttributeGroupId: number;\n NotificationRefreshInterval: number;\n AllowExchangeOnReturnOrders?: boolean;\n FiscalRegistrationProcessId?: string;\n IsInventoryAutomaticValidationEnabled: boolean;\n ProfileProperties?: ChannelProfileProperty[];\n Properties?: ChannelProperty[];\n Languages?: ChannelLanguage[];\n UseAdvancedAutoCharges?: boolean;\n UseRTSForOnlineOrderCreation?: boolean;\n IsWarrantyAutoPromptEnabled?: boolean;\n EnableProductRatingsForRetailStores?: boolean;\n EnableFetchingPickingListsForPickingAndReceiving?: boolean;\n EnableReturnsForMultipleOrderInvoices?: boolean;\n EnableAnonymousOrderLookupByChannelReferenceId?: boolean;\n VoidSuspendedTransactionsOnCloseShift?: number;\n EnableOmniChannelPayments?: boolean;\n UseAdvancedCashManagement?: boolean;\n EnableFiscalRegistrationStorageBackup?: boolean;\n UseSalesReceiptAsDefaultReceiptTypeInJournal?: boolean;\n SalesOrderHeaderAttributeGroups?: number[];\n SalesOrderLinesAttributeGroups?: number[];\n CustomerAddressBooks?: StoreAddressBook[];\n EnableReturnPolicies?: boolean;\n InventAvailabilityCalculationMode?: string;\n IsPriceInclusiveTaxExemptCalculationEnabled?: boolean;\n EnableValidationOfSerialNumbersForInStoreReturns?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelProperty entity interface.\n */\n export interface ChannelProperty {\n Name?: string;\n Value?: string;\n Channel?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelLanguage entity interface.\n */\n export interface ChannelLanguage {\n LanguageId?: string;\n IsDefault: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelDeliveryOptionConfiguration entity interface.\n */\n export interface ChannelDeliveryOptionConfiguration {\n PickupDeliveryModeCodes?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * NonSalesTransaction entity interface.\n */\n export interface NonSalesTransaction extends Transaction {\n ReasonCodeLines?: ReasonCodeLine[];\n Amount?: number;\n ForeignCurrency?: string;\n TenderTypeId?: string;\n OpenDrawer?: boolean;\n DenominationDetails?: DenominationDetail[];\n }\n \n /**\n * DropAndDeclareTransaction entity interface.\n */\n export interface DropAndDeclareTransaction extends Transaction {\n TenderDetails?: TenderDetail[];\n ReasonCodeLines?: ReasonCodeLine[];\n OpenDrawer?: boolean;\n }\n \n /**\n * ProductSearchCriteria entity interface.\n */\n export interface ProductSearchCriteria {\n Ids?: number[];\n CategoryIds?: number[];\n IncludeProductsFromDescendantCategories?: boolean;\n SearchCondition?: string;\n SkipVariantExpansion?: boolean;\n IncludeAttributes?: boolean;\n Barcodes?: string[];\n ItemIds?: ProductLookupClause[];\n Refinement?: ProductRefinerValue[];\n CustomerAccountNumber?: string;\n RecommendationListId?: string;\n DownloadProductData?: boolean;\n Context?: ProjectionDomain;\n Language?: string;\n IsOnline?: boolean;\n DataLevelValue?: number;\n }\n \n /**\n * ChangedProductsSearchCriteria entity interface.\n */\n export interface ChangedProductsSearchCriteria {\n SynchronizationToken?: string;\n Context?: ProjectionDomain;\n AsListings?: boolean;\n Session?: ReadChangedProductsSession;\n DataLevelValue?: number;\n }\n \n /**\n * EmployeeActivitySearchCriteria entity interface.\n */\n export interface EmployeeActivitySearchCriteria {\n FromDateTimeOffset?: Date;\n ToDateTimeOffset?: Date;\n StoreNumber?: string;\n EmployeeActivityTypeValues?: number[];\n DataLevelValue?: number;\n }\n \n /**\n * SearchSuggestionCriteria entity interface.\n */\n export interface SearchSuggestionCriteria {\n ProductSearchCriteria?: ProductSearchCriteria;\n CustomerSearchCriteria?: CustomerSearchCriteria;\n SuggestionType?: string;\n HitPrefix?: string;\n HitSuffix?: string;\n }\n \n /**\n * CartLineDeliveryPreference entity interface.\n */\n export interface CartLineDeliveryPreference {\n LineId?: string;\n DeliveryPreferenceTypeValues?: number[];\n }\n \n /**\n * CartLinePromotion entity interface.\n */\n export interface CartLinePromotion {\n LineId?: string;\n Promotions?: string[];\n }\n \n /**\n * ProductVariant entity interface.\n */\n export interface ProductVariant {\n ItemId?: string;\n MasterProductId: number;\n InventoryDimensionId?: string;\n AdjustedPrice: number;\n BasePrice: number;\n Price: number;\n Color?: string;\n Style?: string;\n Size?: string;\n Configuration?: string;\n ColorId?: string;\n StyleId?: string;\n SizeId?: string;\n ConfigId?: string;\n VariantId?: string;\n Images?: RichMediaLocations[];\n DistinctProductVariantId?: number;\n ProductNumber?: string;\n PropertiesAsList?: ProductPropertyTranslation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareProfilePrinter entity interface.\n */\n export interface HardwareProfilePrinter {\n ProfileId?: string;\n DeviceTypeValue?: number;\n DeviceName?: string;\n DeviceMake?: string;\n DeviceModel?: string;\n DeviceDescription?: string;\n CharacterSet?: number;\n ReceiptProfileId?: string;\n BinaryConversion?: boolean;\n DocInsertRemovalTimeout?: number;\n Logo?: string;\n LogoAlignment?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareProfileScanner entity interface.\n */\n export interface HardwareProfileScanner {\n ProfileId?: string;\n DeviceTypeValue?: number;\n DeviceName?: string;\n DeviceDescription?: string;\n DecodeData?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareProfileCashDrawer entity interface.\n */\n export interface HardwareProfileCashDrawer {\n ProfileId?: string;\n DeviceTypeValue?: number;\n DeviceName?: string;\n DeviceDescription?: string;\n DeviceMake?: string;\n DeviceModel?: string;\n IsSharedShiftDrawer?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TillLayout entity interface.\n */\n export interface TillLayout {\n CashChangerLayoutXml?: string;\n CustomerLayoutId?: string;\n CustomerLayoutXml?: string;\n Height?: number;\n LayoutId?: string;\n LayoutTypeValue?: number;\n LayoutXml?: string;\n LayoutXmlPortrait?: string;\n Name?: string;\n ReceiptId?: string;\n ReceiptItemsLayoutXml?: string;\n ReceiptPaymentLayoutXml?: string;\n TotalId?: string;\n TotalsLayoutXml?: string;\n Width?: number;\n RecordId?: number;\n StartScreen?: number;\n ButtonGridZones?: ButtonGridZone[];\n ImageZones?: ImageZone[];\n ReportZones?: ReportZone[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SalesInvoice entity interface.\n */\n export interface SalesInvoice {\n RecordId?: number;\n ChannelId?: number;\n Id?: string;\n SalesId?: string;\n SalesType?: string;\n InvoiceDate?: Date;\n DueDate?: Date;\n CurrencyCode?: string;\n InvoiceSubtotal?: number;\n TotalCharges?: number;\n TotalTaxAmount?: number;\n TotalLineDiscount?: number;\n TotalDiscount?: number;\n Amount?: number;\n AmountPaid?: number;\n AmountBalance?: number;\n Account?: string;\n Name?: string;\n TotalManualDiscountPercentage?: number;\n TotalManualDiscountAmount?: number;\n SalesInvoiceLine?: SalesInvoiceLine[];\n ChargeLines?: ChargeLine[];\n TenderLines?: TenderLine[];\n DeliveryModeChargeAmount?: number;\n OrderAccount?: string;\n OrderedByCustomerName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrderInvoice entity interface.\n */\n export interface OrderInvoice {\n Id?: string;\n CustomerAccountNumber?: string;\n CustomerName?: string;\n InvoiceDate?: Date;\n TotalAmount?: number;\n AmountPaid?: number;\n AmountBalance?: number;\n InvoiceTypeValue?: number;\n CurrencyCode?: string;\n InvoiceDueDate?: Date;\n InvoicePaidStatusValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TaxOverride entity interface.\n */\n export interface TaxOverride {\n Code?: string;\n SourceTaxGroup?: string;\n DestinationTaxGroup?: string;\n SourceItemTaxGroup?: string;\n DestinationItemTaxGroup?: string;\n ChannelId?: number;\n AdditionalDescription?: string;\n Status?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TenderType entity interface.\n */\n export interface TenderType {\n Function: number;\n TenderTypeId?: string;\n Name?: string;\n OperationId?: number;\n OperationName?: string;\n ChangeTenderTypeId?: string;\n AboveMinimumChangeAmount?: number;\n AboveMinimumChangeTenderTypeId?: string;\n OpenDrawer?: boolean;\n UseSignatureCaptureDevice?: boolean;\n MinimumSignatureCaptureAmount?: number;\n IsOvertenderAllowed?: boolean;\n IsUndertenderAllowed?: boolean;\n MaximumOvertenderAmount?: number;\n MaximumUndertenderAmount?: number;\n MaximumAmountPerTransaction?: number;\n MaximumAmountPerLine?: number;\n MinimumAmountPerTransaction?: number;\n MinimumAmountPerLine?: number;\n RoundOff?: number;\n CountingRequired?: number;\n TakenToBank?: number;\n TakenToSafe?: number;\n ConnectorId?: string;\n GiftCardItem?: string;\n GiftCardCashoutOutThreshold?: number;\n ChangeLineOnReceipt?: string;\n HideCardInputDetails?: boolean;\n CashDrawerLimitEnabled?: boolean;\n CashDrawerLimit?: number;\n RestrictReturnsWithoutReceipt?: boolean;\n HasTenderDiscount?: boolean;\n DefaultCardTypeId?: string;\n UseForDeclareStartAmount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReasonCode entity interface.\n */\n export interface ReasonCode {\n InputRequired: boolean;\n LinkedReasonCodeId?: string;\n MaximumLength: number;\n MaximumValue: number;\n MinimumLength: number;\n MinimumValue: number;\n OncePerTransaction: boolean;\n PrintInputNameOnReceipt: boolean;\n PrintInputToReceipt: boolean;\n PrintPromptToReceipt: boolean;\n Prompt?: string;\n RandomFactor: number;\n RetailUseReasonCode: boolean;\n ReasonCodeId?: string;\n Description?: string;\n InputTypeValue?: number;\n ActivityValue?: number;\n IsMultiLineText?: boolean;\n ReasonSubCodes?: ReasonSubCode[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReportDataSet entity interface.\n */\n export interface ReportDataSet {\n ReportId?: string;\n Parameters?: CommerceProperty[];\n Locale?: string;\n Output?: ReportRow[];\n HasTotalRow?: boolean;\n HasDisclaimer?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ZipCodeInfo entity interface.\n */\n export interface ZipCodeInfo {\n ZipPostalCode?: string;\n StreetName?: string;\n TimeZone?: number;\n CountryRegionId?: string;\n StateId?: string;\n CountyId?: string;\n CityName?: string;\n CityAlias?: string;\n District?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReasonCodeRequirement entity interface.\n */\n export interface ReasonCodeRequirement {\n ReasonCodeId?: string;\n SourceId?: string;\n TableRefTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * QueryResultSettings entity interface.\n */\n export interface QueryResultSettings {\n Paging?: PagingInfo;\n Sorting?: SortingInfo;\n }\n \n /**\n * SortingInfo entity interface.\n */\n export interface SortingInfo {\n Columns?: SortColumn[];\n }\n \n /**\n * SortColumn entity interface.\n */\n export interface SortColumn {\n ColumnName?: string;\n IsDescending?: boolean;\n }\n \n /**\n * PagingInfo entity interface.\n */\n export interface PagingInfo {\n NextPageToken?: string;\n Top?: number;\n Skip?: number;\n }\n \n /**\n * ProductPropertyTranslation entity interface.\n */\n export interface ProductPropertyTranslation {\n TranslationLanguage?: string;\n TranslatedProperties?: ProductProperty[];\n }\n \n /**\n * NumberSequenceSeedData entity interface.\n */\n export interface NumberSequenceSeedData {\n DataTypeValue?: number;\n DataValue?: number;\n LastTransactionDataValue?: number;\n LastTransactionCreatedDateTime?: Date;\n LastTransactionId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReceiptNumberResetInfo entity interface.\n */\n export interface ReceiptNumberResetInfo {\n ValidFrom?: Date;\n ValidTo?: Date;\n ResetDate?: Date;\n TypeValue?: number;\n Enabled?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DeviceActivationResult entity interface.\n */\n export interface DeviceActivationResult {\n Device?: Device;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PurchaseHistory entity interface.\n */\n export interface PurchaseHistory {\n DatePurchased?: Date;\n ImageUrl?: string;\n ItemId?: string;\n ProductId?: number;\n ProductName?: string;\n ReceiptId?: string;\n SalesId?: string;\n ChannelId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PurchaseHistorySearchCriteria entity interface.\n */\n export interface PurchaseHistorySearchCriteria {\n StartDate?: Date;\n EndDate?: Date;\n CustomerAccountNumber?: string;\n ItemId?: string;\n ProductNameFilter?: string;\n ReceiptId?: string;\n }\n \n /**\n * Node entity interface.\n */\n export interface Node {\n ParentScopeId?: string;\n ParentSequence?: number;\n Id?: string;\n Sequence?: number;\n Description?: string;\n ScreenshotUri?: string;\n }\n \n /**\n * Line entity interface.\n */\n export interface Line {\n ChildrenIds?: number[];\n Id?: number;\n Name?: string;\n Description?: string;\n IsLinked?: boolean;\n LineMetadataId?: number;\n Artifacts?: ArtifactSummary[];\n MetadataPropertyValues?: MetadataPropertyValue[];\n }\n \n /**\n * MetadataText entity interface.\n */\n export interface MetadataText {\n Id?: string;\n Text?: string;\n }\n \n /**\n * MetadataHypertextLink entity interface.\n */\n export interface MetadataHypertextLink {\n Id?: string;\n DisplayName?: string;\n Url?: string;\n }\n \n /**\n * Scope entity interface.\n */\n export interface Scope extends Node {\n Name?: string;\n ScopeTypeValue: number;\n Children?: Node[];\n ActiveCount: number;\n IsForm?: boolean;\n }\n \n /**\n * Framework entity interface.\n */\n export interface Framework {\n Lines?: Line[];\n Id?: number;\n Name?: string;\n Access?: string;\n Hierarchy?: Line[];\n Publisher?: string;\n }\n \n /**\n * UserAction entity interface.\n */\n export interface UserAction extends Node {\n SystemGenerated?: boolean;\n GlobalId?: string;\n Annotations?: Annotation[];\n }\n \n /**\n * TaskUserAction entity interface.\n */\n export interface TaskUserAction extends UserAction {\n UserActionTypeValue: number;\n Name?: string;\n Comment?: string;\n TaskId?: string;\n }\n \n /**\n * FormUserAction entity interface.\n */\n export interface FormUserAction extends UserAction {\n FormId?: string;\n ControlLabel?: string;\n }\n \n /**\n * CommandUserAction entity interface.\n */\n export interface CommandUserAction extends FormUserAction {\n ReturnTypeValue: number;\n CommandName?: string;\n ControlName?: string;\n ControlType?: string;\n Arguments?: CommandArgument[];\n LabelId?: string;\n ReturnValue?: string;\n }\n \n /**\n * Annotation entity interface.\n */\n export interface Annotation {\n Description?: string;\n }\n \n /**\n * Recording entity interface.\n */\n export interface Recording {\n Scopes?: Scope[];\n FormContextEntries?: FormContextDictionaryEntry[];\n RootScope?: Scope;\n Name?: string;\n Description?: string;\n }\n \n /**\n * FormContextDictionaryEntry entity interface.\n */\n export interface FormContextDictionaryEntry {\n FormId?: string;\n FormContext?: FormContext;\n }\n \n /**\n * ProductVariantResolutionContext entity interface.\n */\n export interface ProductVariantResolutionContext {\n }\n \n /**\n * ProductVariantResolutionOnKitSelectionContext entity interface.\n */\n export interface ProductVariantResolutionOnKitSelectionContext extends ProductVariantResolutionContext {\n SelectedComponents?: ComponentInSlotRelation[];\n SlotId?: number;\n }\n \n /**\n * WarehouseLocation entity interface.\n */\n export interface WarehouseLocation {\n LocationId?: string;\n IsLicensePlateControlled: boolean;\n ProfileId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalTransaction entity interface.\n */\n export interface FiscalTransaction {\n CreatedDateTime?: Date;\n StoreId?: string;\n TerminalId?: string;\n TransactionId?: string;\n TransDateTime?: Date;\n LineNumber?: number;\n RegisterResponse?: string;\n ReceiptCopy?: boolean;\n RecordGUID?: string;\n RegisterStoreId?: string;\n RegisterTerminalId?: string;\n StaffId?: string;\n RegistrationStatusValue?: number;\n RegistrationProcessId?: string;\n ConnectorGroup?: string;\n ConnectorName?: string;\n ConnectorFunctionalityProfileId?: string;\n RegisterInfo?: string;\n DocumentNumber?: string;\n RegistrationTypeValue?: number;\n ServiceName?: string;\n CountryRegionIsoCode?: string;\n TenderLineAdjustments?: FiscalTransactionTenderLineAdjustment[];\n SalesLineAdjustments?: FiscalTransactionSalesLineAdjustment[];\n ReasonCodeLines?: ReasonCodeLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FulfillmentLine entity interface.\n */\n export interface FulfillmentLine {\n SalesId?: string;\n SalesPersonStoreId?: string;\n SalesPersonId?: string;\n SalesPersonFirstName?: string;\n SalesPersonLastName?: string;\n SalesLineNumber?: number;\n ReceiptId?: string;\n ChannelReferenceId?: string;\n CustomerId?: string;\n CustomerName?: string;\n EmailAddress?: string;\n DeliveryModeCode?: string;\n DocumentStatusValue?: number;\n FulfillmentDeliveryType?: FulfillmentLineDeliveryType;\n DeliveryTypeValue?: number;\n QuantityOrdered?: number;\n QuantityNotProcessed?: number;\n QuantityReserved?: number;\n QuantityPicked?: number;\n QuantityPacked?: number;\n QuantityInvoiced?: number;\n StoreInventoryTotalQuantity?: number;\n StoreInventoryReservedQuantity?: number;\n StoreInventoryOrderedQuantity?: number;\n ItemId?: string;\n ProductId?: number;\n ProductVariant?: string;\n ItemName?: string;\n SerialNumber?: string;\n FulfillmentStatus?: FulfillmentLineStatus;\n FulfillmentStatusValue?: number;\n UnitOfMeasureSymbol?: string;\n RequestedShipDate?: Date;\n RequestedDeliveryDate?: Date;\n RequestedReceiptDate?: Date;\n PickupTimeslotStartDateTime?: Date;\n PickupTimeslotEndDateTime?: Date;\n CreatedDate?: Date;\n TotalAmount?: number;\n Balance?: number;\n ShippingAddress?: Address;\n DetailedOrderStatusValue?: number;\n DetailedLineStatusValue?: number;\n ChannelTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FulfillmentLineSearchCriteria entity interface.\n */\n export interface FulfillmentLineSearchCriteria {\n CustomerId?: string;\n CustomerName?: string;\n EmailAddress?: string;\n SalesId?: string;\n OrderCreatedStartDate?: Date;\n OrderCreatedEndDate?: Date;\n ReceiptId?: string;\n StoreId?: string;\n ChannelReferenceId?: string;\n RequestedReceiptStartDate?: Date;\n RequestedReceiptEndDate?: Date;\n RequestedDeliveryStartDate?: Date;\n RequestedDeliveryEndDate?: Date;\n FulfillmentStatusValues?: number[];\n DeliveryModeCode?: string;\n WarehouseId?: string;\n LoyaltyCardNumber?: string;\n CustomerPhoneNumber?: string;\n DeliveryTypeValue?: number;\n CustomFilters?: SearchFilter[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Comment entity interface.\n */\n export interface Comment {\n RecordId?: number;\n AuthorStaffId?: string;\n AuthorName?: string;\n Text?: string;\n CreatedDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AddressPurpose entity interface.\n */\n export interface AddressPurpose {\n RecordId: number;\n AddressType: number;\n Name?: string;\n Description?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DeliveryChargeLine entity interface.\n */\n export interface DeliveryChargeLine {\n ChargeCode?: string;\n CurrencyCode?: string;\n CalculatedAmount: number;\n Description?: string;\n IsRefundable: boolean;\n IsShipping: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ExtensionPackageDefinition entity interface.\n */\n export interface ExtensionPackageDefinition {\n Name?: string;\n Publisher?: string;\n IsEnabled: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReturnPolicy entity interface.\n */\n export interface ReturnPolicy {\n RecordId: number;\n TenderTypePolicies?: TenderTypePolicy[];\n IsManagerOverrideEnabled: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TenderTypeAmount entity interface.\n */\n export interface TenderTypeAmount {\n TenderTypeId?: string;\n Amount: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FeatureState entity interface.\n */\n export interface FeatureState {\n Name?: string;\n IsEnabled?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Warranty entity interface.\n */\n export interface Warranty extends SimpleProduct {\n DurationUnitValue?: number;\n Duration?: number;\n ApplicablePriceRangeBaseTypeValue?: number;\n ApplicablePriceRangeMin?: number;\n ApplicablePriceRangeMax?: number;\n }\n \n /**\n * RecallInvoicedSalesLineLookup entity interface.\n */\n export interface RecallInvoicedSalesLineLookup {\n InvoicedLineId: number;\n Quantity: number;\n SerialNumber?: string;\n IgnoreSerialNumberMismatch: boolean;\n ReasonCodeLines?: ReasonCodeLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * WarrantyGroup entity interface.\n */\n export interface WarrantyGroup {\n Warranties?: Warranty[];\n RecordId?: number;\n GroupName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductWarrantiesMapping entity interface.\n */\n export interface ProductWarrantiesMapping {\n WarrantyGroups?: WarrantyGroup[];\n WarrantableProductId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FulfillmentLineContextualOperationsMap entity interface.\n */\n export interface FulfillmentLineContextualOperationsMap {\n FulfillmentLine?: FulfillmentLine;\n ApplicableOperationsValues?: number[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * UserAlert entity interface.\n */\n export interface UserAlert {\n AlertSourceIdValue?: number;\n LocalizedMessage?: string;\n IsBlocking?: boolean;\n }\n \n /**\n * CartLineUserAlerts entity interface.\n */\n export interface CartLineUserAlerts {\n LineIndex?: number;\n LineNumber?: number;\n UserAlerts?: UserAlert[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FulfillmentLineUserAlerts entity interface.\n */\n export interface FulfillmentLineUserAlerts {\n SalesId?: string;\n SalesLineNumber?: number;\n UserAlerts?: UserAlert[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * BusinessPartnerProspect entity interface.\n */\n export interface BusinessPartnerProspect {\n FirstName?: string;\n LastName?: string;\n CompanyName?: string;\n Address?: Address;\n JobTitle?: string;\n Department?: string;\n CompanySize?: number;\n Comments?: string;\n LastOperationId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelSearchCriteria entity interface.\n */\n export interface ChannelSearchCriteria {\n SearchLocationValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * BusinessPartnerOperation entity interface.\n */\n export interface BusinessPartnerOperation {\n TypeValue?: number;\n StatusValue?: number;\n Value?: string;\n Description?: string;\n CreatedDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * BusinessPartnerOperationRequest entity interface.\n */\n export interface BusinessPartnerOperationRequest {\n TypeValue?: number;\n StatusValue?: number;\n CreatedDateTime?: Date;\n Details?: BusinessPartnerOperationRequestDetails;\n UserId?: string;\n UserFirstName?: string;\n UserLastName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReceiptTypesByFormatType entity interface.\n */\n export interface ReceiptTypesByFormatType {\n ReceiptOutputFormatType?: ReceiptOutputFormatType;\n ReceiptTypesValues?: number[];\n }\n \n /**\n * InventoryJournalNameSearchCriteria entity interface.\n */\n export interface InventoryJournalNameSearchCriteria {\n JournalNameIds?: string[];\n DocumentTypeValues?: number[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AssortedProductIdentity entity interface.\n */\n export interface AssortedProductIdentity {\n ProductId?: number;\n IsRemoteProduct?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductExistenceId entity interface.\n */\n export interface ProductExistenceId {\n ProductId?: number;\n LanguageId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductExistenceCriteria entity interface.\n */\n export interface ProductExistenceCriteria {\n ChannelId?: number;\n CatalogId?: number;\n Ids?: ProductExistenceId[];\n }\n \n /**\n * ChecklistTask entity interface.\n */\n export interface ChecklistTask {\n Version?: string;\n InstructionsVersion?: string;\n AssignedToPersonnelNumbers?: string[];\n AssignedToExternalSubId?: string;\n Id?: string;\n Name?: string;\n Description?: string;\n DueDateTime?: Date;\n DeepLinkTypeValue?: number;\n DeepLink?: string;\n DeepLinkPosOperationName?: string;\n ContactPersonPersonnelNumber?: string;\n Instructions?: string;\n StatusValue?: number;\n CompletionDateTime?: Date;\n ResolvedByPersonnelNumber?: string;\n ChecklistId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * MediaLocation entity interface.\n */\n export interface MediaLocation {\n Uri?: string;\n AltText?: string;\n IsDefault?: boolean;\n IsSelfHosted?: boolean;\n Priority?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * EmployeeActivity entity interface.\n */\n export interface EmployeeActivity {\n StaffId?: string;\n StaffName?: string;\n Activity?: string;\n ActivityDateTimeOffset?: Date;\n StoreNumber?: string;\n EmployeeActivityTypeValue?: number;\n BreakCategory?: string;\n RecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerRefiner entity interface.\n */\n export interface CustomerRefiner extends SearchRefiner {\n SourceValue?: number;\n Values?: CustomerRefinerValue[];\n }\n \n /**\n * TokenizedPaymentCard entity interface.\n */\n export interface TokenizedPaymentCard {\n IsSwipe?: boolean;\n TenderType?: string;\n CardTokenInfo?: CardTokenInfo;\n Phone?: string;\n Country?: string;\n House?: string;\n Address1?: string;\n Address2?: string;\n City?: string;\n State?: string;\n Zip?: string;\n NameOnCard?: string;\n CardTypeId?: string;\n ExpirationMonth?: number;\n ExpirationYear?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductDimensionAvailabilitySearchCriteria entity interface.\n */\n export interface ProductDimensionAvailabilitySearchCriteria {\n RequestedDimensionTypeValue?: number;\n MatchingDimensionValues?: ProductDimension[];\n DefaultWarehouseOnly?: boolean;\n FilterByChannelFulfillmentGroup?: boolean;\n DeliveryModeTypeFilterValue?: number;\n CatalogId?: number;\n }\n \n /**\n * LineShippingAddress entity interface.\n */\n export interface LineShippingAddress {\n LineId?: string;\n ShippingAddress?: Address;\n }\n \n /**\n * CartDeliveryPreferences entity interface.\n */\n export interface CartDeliveryPreferences {\n HeaderDeliveryPreferenceTypeValues?: number[];\n CartLineDeliveryPreferences?: CartLineDeliveryPreference[];\n }\n \n /**\n * LineDeliverySpecification entity interface.\n */\n export interface LineDeliverySpecification {\n LineId?: string;\n DeliverySpecification?: DeliverySpecification;\n }\n \n /**\n * DeliverySpecification entity interface.\n */\n export interface DeliverySpecification {\n DeliveryModeId?: string;\n DeliveryPreferenceTypeValue?: number;\n DeliveryAddress?: Address;\n RequestedDeliveryDate?: Date;\n PickUpStoreId?: string;\n PickupTimeslotStartDateTime?: Date;\n PickupTimeslotEndDateTime?: Date;\n ElectronicDeliveryEmailAddress?: string;\n ElectronicDeliveryEmailContent?: string;\n ShipFromStoreId?: string;\n }\n \n /**\n * OrderSearchCriteria entity interface.\n */\n export interface OrderSearchCriteria {\n CustomerAccountNumber?: string;\n CustomerName?: string;\n EmailAddress?: string;\n LoyaltyCardNumber?: string;\n CustomerPhoneNumber?: string;\n SalesId?: string;\n ReceiptId?: string;\n OrderStatusValues?: number[];\n StartDateTime?: Date;\n EndDateTime?: Date;\n ChannelReferenceId?: string;\n StoreId?: string;\n OrderType?: number;\n CustomFilters?: SearchFilter[];\n FulfillmentTypeValues?: number[];\n DeliveryMode?: string;\n PickupStartDate?: Date;\n PickupEndDate?: Date;\n PickupTimeslotStartTime?: number;\n PickupTimeslotEndTime?: number;\n }\n \n /**\n * ChecklistSearchCriteria entity interface.\n */\n export interface ChecklistSearchCriteria {\n ChannelId?: number;\n PersonnelNumber?: string;\n ChecklistIds?: string[];\n StatusValues?: number[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TaskSearchCriteria entity interface.\n */\n export interface TaskSearchCriteria {\n ChannelId?: number;\n PersonnelNumber?: string;\n TaskIds?: string[];\n StatusValues?: number[];\n FilterMyTasks: boolean;\n FilterOverdueTasks: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChecklistTaskTeamsIntegrationConfiguration entity interface.\n */\n export interface ChecklistTaskTeamsIntegrationConfiguration {\n IsEnabled?: boolean;\n MicrosoftGraphResource?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReturnCartLine entity interface.\n */\n export interface ReturnCartLine {\n Description?: string;\n ItemId?: string;\n ProductId?: number;\n Quantity?: number;\n ReturnLineNumber?: number;\n ReturnTransactionId?: string;\n SerialNumber?: string;\n IgnoreSerialNumberMismatch?: boolean;\n ReasonCodeLines?: ReasonCodeLine[];\n Price?: number;\n IsPriceKeyedIn?: boolean;\n }\n \n /**\n * TenderDiscountLine entity interface.\n */\n export interface TenderDiscountLine {\n DiscountAmount?: number;\n PaymentAmount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReceiptRetrievalCriteria entity interface.\n */\n export interface ReceiptRetrievalCriteria {\n IsCopy?: boolean;\n IsRemoteTransaction?: boolean;\n IsPreview?: boolean;\n QueryBySalesId?: boolean;\n ReceiptTypeValue?: number;\n ShiftId?: number;\n ShiftTerminalId?: string;\n HardwareProfileId?: string;\n }\n \n /**\n * CartSearchCriteria entity interface.\n */\n export interface CartSearchCriteria {\n CartId?: string;\n ExpectedCartVersion?: number;\n CustomerAccountNumber?: string;\n IncludeAnonymous?: boolean;\n SuspendedOnly?: boolean;\n CartTypeValue?: number;\n LastModifiedDateTimeFrom?: Date;\n LastModifiedDateTimeTo?: Date;\n }\n \n /**\n * RetrievePaymentResultSettings entity interface.\n */\n export interface RetrievePaymentResultSettings {\n ReturnUrl?: string;\n PaymentConnectorId?: string;\n }\n \n /**\n * SearchReceiptCriteria entity interface.\n */\n export interface SearchReceiptCriteria {\n TransactionId?: string;\n ReceiptTypeValue?: number;\n ReceiptTypesByFormatTypeCollection?: ReceiptTypesByFormatType[];\n IsCopy?: boolean;\n GiftReceiptLineNumbers?: number[];\n }\n \n /**\n * ElectronicAddress entity interface.\n */\n export interface ElectronicAddress {\n AddressTypeValue?: number;\n ExtensibleEAddressType?: ExtensibleElectronicAddressType;\n Address?: string;\n }\n \n /**\n * ChannelReferenceLookupCriteria entity interface.\n */\n export interface ChannelReferenceLookupCriteria {\n ChannelReferenceId?: string;\n SearchLocationValue?: number;\n ChannelReferenceAdditionalLookupCriteria?: ChannelReferenceAdditionalLookupCriteria[];\n }\n \n /**\n * FulfillmentLineParameter entity interface.\n */\n export interface FulfillmentLineParameter {\n SalesId?: string;\n SalesLineNumber?: number;\n Quantity?: number;\n SerialNumber?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ShipFulfillmentLine entity interface.\n */\n export interface ShipFulfillmentLine extends FulfillmentLineParameter {\n ProductId?: number;\n }\n \n /**\n * RejectFulfillmentLine entity interface.\n */\n export interface RejectFulfillmentLine extends FulfillmentLineParameter {\n RejectedQuantity?: number;\n InfoCodeId?: string;\n SubInfoCodeId?: string;\n }\n \n /**\n * ReadChangedProductsSession entity interface.\n */\n export interface ReadChangedProductsSession {\n Id?: string;\n TotalNumberOfProducts?: number;\n NumberOfProductsRead?: number;\n NumberOfProductsReadInCurrentPage?: number;\n NextSynchronizationToken?: string;\n IsInitialSync?: boolean;\n }\n \n /**\n * DeletedListingsResult entity interface.\n */\n export interface DeletedListingsResult {\n HasMorePublishedListings?: boolean;\n DeletedListings?: ListingIdentity[];\n }\n \n /**\n * ProductRating entity interface.\n */\n export interface ProductRating {\n ProductId?: number;\n AverageRating?: number;\n TotalRatings?: number;\n RatingDistribution?: ProductRatingCount[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductDeliveryOptions entity interface.\n */\n export interface ProductDeliveryOptions {\n ProductId?: number;\n DeliveryOptions?: DeliveryOption[];\n }\n \n /**\n * ListingPublishStatus entity interface.\n */\n export interface ListingPublishStatus {\n PublishStatusValue?: number;\n ListingModifiedDateTime?: Date;\n ChannelListingId?: string;\n ChannelId?: number;\n CatalogId?: number;\n ProductId?: number;\n LanguageId?: string;\n AppliedActionValue?: number;\n StatusMessage?: string;\n Tag?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrgUnitLocationSearchCriteria entity interface.\n */\n export interface OrgUnitLocationSearchCriteria {\n OrgUnitNumber?: string;\n OrgUnitName?: string;\n InventoryLocationIds?: string[];\n DeliveryModeTypeFilterValue?: number;\n }\n \n /**\n * StoreHours entity interface.\n */\n export interface StoreHours {\n RegularStoreHours?: RegularStoreHours;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CartPromotions entity interface.\n */\n export interface CartPromotions {\n HeaderPromotions?: string[];\n CartLinePromotions?: CartLinePromotion[];\n }\n \n /**\n * CartPromotionLine entity interface.\n */\n export interface CartPromotionLine {\n LineId?: string;\n Promotion?: Promotion;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ItemUnit entity interface.\n */\n export interface ItemUnit {\n ItemId?: string;\n VariantInventoryDimensionId?: string;\n Product?: number;\n DistinctProductVariant?: number;\n UnitOfMeasure?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductAvailableQuantity entity interface.\n */\n export interface ProductAvailableQuantity {\n ProductId?: number;\n AvailableQuantity?: number;\n UnitOfMeasure?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OrgUnitAvailabilitySearchCriteria entity interface.\n */\n export interface OrgUnitAvailabilitySearchCriteria {\n OrgUnitName?: string;\n OrgUnitNumber?: string;\n }\n \n /**\n * InvoiceSearchCriteria entity interface.\n */\n export interface InvoiceSearchCriteria {\n BusinessPartnerId?: string;\n CustomerId?: string;\n InvoiceIds?: string[];\n InvoiceTypeValues?: number[];\n InvoicePaidStatusValues?: number[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InvoiceDetailsSearchCriteria entity interface.\n */\n export interface InvoiceDetailsSearchCriteria {\n InvoiceId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PickAndPackSalesLineParameter entity interface.\n */\n export interface PickAndPackSalesLineParameter {\n SalesLineNumber?: number;\n Quantity?: number;\n }\n \n /**\n * ProductListSearchCriteria entity interface.\n */\n export interface ProductListSearchCriteria {\n CustomerId?: string;\n ProductListId?: string;\n ProductListType?: string;\n }\n \n /**\n * ProjectionDomain entity interface.\n */\n export interface ProjectionDomain {\n ChannelId?: number;\n CatalogId?: number;\n }\n \n /**\n * AffiliationLoyaltyTier entity interface.\n */\n export interface AffiliationLoyaltyTier {\n AffiliationId?: number;\n LoyaltyTierId?: number;\n AffiliationTypeValue?: number;\n ReasonCodeLines?: ReasonCodeLine[];\n CustomerId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ClientBookCustomerSearchCriteria entity interface.\n */\n export interface ClientBookCustomerSearchCriteria {\n FilterByCurrentEmployee?: boolean;\n Refinement?: ClientBookRefinerValue[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ClientBookCustomer entity interface.\n */\n export interface ClientBookCustomer {\n CustomerId?: string;\n Name?: string;\n Phone?: string;\n Email?: string;\n StaffId?: string;\n ImageUris?: MediaLocation[];\n Attributes?: CustomerAttribute[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ClientBookChanges entity interface.\n */\n export interface ClientBookChanges {\n Changes?: ClientBookChange[];\n }\n \n /**\n * ChargeCode entity interface.\n */\n export interface ChargeCode {\n Code?: string;\n ModuleTypeValue?: number;\n Description?: string;\n ItemTaxGroupId?: string;\n IsRefundable?: boolean;\n IsShipping?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PaymentMerchantInformation entity interface.\n */\n export interface PaymentMerchantInformation {\n PaymentConnectorPropertiesXml?: string;\n MerchantPropertiesHashValue?: string;\n ServiceAccountId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * StoreSafe entity interface.\n */\n export interface StoreSafe {\n SafeNumber?: string;\n Name?: string;\n StoreNumber?: string;\n SafeBalance?: number;\n LastUpdatedTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentReceiptSearchCriteria entity interface.\n */\n export interface InventoryDocumentReceiptSearchCriteria {\n SourceDocumentId?: string;\n SourceDocumentTypeValue?: number;\n WorkDocumentId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSourceDocumentLineCommitRecordSearchCriteria entity interface.\n */\n export interface InventoryDocumentSourceDocumentLineCommitRecordSearchCriteria {\n SourceDocumentRecordId?: number;\n SourceDocumentTypeValue?: number;\n SourceDocumentLineRecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSourceDocumentLineCommitRecord entity interface.\n */\n export interface InventoryDocumentSourceDocumentLineCommitRecord {\n WorkDocumentId?: string;\n LineId?: string;\n SourceDocumentRecordId?: number;\n SourceDocumentTypeValue?: number;\n SourceDocumentLineRecordId?: number;\n StaffId?: string;\n UpdateNowQuantity?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CreateHardwareStationTokenResult entity interface.\n */\n export interface CreateHardwareStationTokenResult {\n HardwareStationToken?: string;\n PairingKey?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ValidateHardwareStationTokenResult entity interface.\n */\n export interface ValidateHardwareStationTokenResult {\n PairingKey?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * MediaBlob entity interface.\n */\n export interface MediaBlob {\n MediaType?: string;\n Content?: string;\n IsDefault?: boolean;\n AltText?: string;\n PictureId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OnlineChannel entity interface.\n */\n export interface OnlineChannel {\n OnlineStoreCustomerTypeValue?: number;\n OnlineChannelName?: string;\n CurrencyCode?: string;\n EventNotificationProfileId?: string;\n RecordId?: number;\n OrgUnitTypeValue?: number;\n Name?: string;\n DefaultCustomerAccount?: string;\n CategoryHierarchyId?: number;\n InventoryLocationId?: string;\n ChannelProfile?: ChannelProfile;\n ChannelProperties?: ChannelProperty[];\n ChannelLanguages?: ChannelLanguage[];\n Contacts?: OrgUnitContact[];\n ExtensionProperties?: CommerceProperty[];\n CountryRegions?: CountryRegion[];\n }\n \n /**\n * TerminalDataDownloadRequestInfo entity interface.\n */\n export interface TerminalDataDownloadRequestInfo {\n TerminalId?: string;\n RequiresDataInitialization?: boolean;\n HasBeenInitializedBefore?: boolean;\n }\n \n /**\n * DataDownloadParameters entity interface.\n */\n export interface DataDownloadParameters {\n DownloadInterval?: number;\n DownloadSessions?: DownloadSession[];\n FeatureControlList?: RetailSharedConfigurationParameter[];\n DataStore?: CDXDataStore;\n }\n \n /**\n * TerminalDataUploadRequestInfo entity interface.\n */\n export interface TerminalDataUploadRequestInfo {\n TerminalId?: string;\n }\n \n /**\n * DataUploadParameters entity interface.\n */\n export interface DataUploadParameters {\n UploadInterval?: number;\n UploadJobPackageRequests?: UploadJobPackageRequest[];\n FeatureControlList?: RetailSharedConfigurationParameter[];\n DataStore?: CDXDataStore;\n }\n \n /**\n * DownloadSession entity interface.\n */\n export interface DownloadSession {\n Id?: number;\n JobId?: string;\n JobDescription?: string;\n FileSize?: number;\n RowsAffected?: number;\n Checksum?: string;\n DateDownloaded?: string;\n DateRequested?: string;\n DataStoreName?: string;\n StatusValue?: number;\n Message?: string;\n DownloadLink?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * OfflineTerminalState entity interface.\n */\n export interface OfflineTerminalState {\n TerminalId?: string;\n State?: string;\n }\n \n /**\n * LoyaltyRewardPointActivity entity interface.\n */\n export interface LoyaltyRewardPointActivity {\n ActivityDate?: Date;\n LoyaltyRewardPointTimelineEntryType?: string;\n ExtensibleLoyaltyRewardPointActivityEntryTypeValue?: number;\n LoyaltyPoints?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CurrencyRequest entity interface.\n */\n export interface CurrencyRequest {\n AmountToConvert?: number;\n CurrencyCode?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareStationProfile entity interface.\n */\n export interface HardwareStationProfile {\n RecordId?: number;\n HardwareStationId?: string;\n HardwareStationTypeValue?: number;\n HardwareProfileId?: string;\n HardwareStationName?: string;\n HardwareStationDescription?: string;\n HardwareStationUrl?: string;\n HardwareStationHostName?: string;\n HardwareStationEftTerminalId?: string;\n HardwareConfigurations?: HardwareConfigurations;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * NameValuePair entity interface.\n */\n export interface NameValuePair {\n Name?: string;\n Value?: string;\n }\n \n /**\n * LinkToExistingCustomerResult entity interface.\n */\n export interface LinkToExistingCustomerResult {\n EmailAddress?: string;\n ExternalIdentityProvider?: string;\n ExternalIdentityLinkRecordId?: number;\n }\n \n /**\n * OfflineSyncStatsLine entity interface.\n */\n export interface OfflineSyncStatsLine {\n IsUploadJob?: boolean;\n JobDescription?: string;\n LastSyncDateTime?: Date;\n Status?: string;\n FileSize?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * StorageAccessToken entity interface.\n */\n export interface StorageAccessToken {\n Url?: string;\n SasKey?: string;\n }\n \n /**\n * TaskGuidesSearchResult entity interface.\n */\n export interface TaskGuidesSearchResult {\n Lines?: Line[];\n FrameworkPublisherName?: string;\n FrameworkName?: string;\n }\n \n /**\n * AuditEvent entity interface.\n */\n export interface AuditEvent {\n EventId?: number;\n EventIdString?: string;\n Channel?: number;\n Store?: string;\n Terminal?: string;\n UploadType?: string;\n EventType?: string;\n EventDateTime?: Date;\n DurationInMilliseconds?: number;\n Source?: string;\n EventMessage?: string;\n LogLevel?: string;\n Staff?: string;\n ShiftId?: number;\n ClosedShiftId?: number;\n ReferenceId?: number;\n RefChannel?: number;\n RefStore?: string;\n RefTerminal?: string;\n RefTransactionId?: string;\n AuditEventTypeValue?: number;\n FiscalTransactions?: AuditEventFiscalTransaction[];\n FiscalRegistrationLines?: AuditEventFiscalRegistrationLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ItemAvailability entity interface.\n */\n export interface ItemAvailability {\n ItemId?: string;\n VariantInventoryDimensionId?: string;\n InventoryLocationId?: string;\n ProductId?: number;\n AvailableQuantity?: number;\n OrderedSum?: number;\n PhysicalReserved?: number;\n UnitOfMeasure?: string;\n InventoryUnitOfMeasure?: string;\n InventoryUnitOfMeasureDescription?: string;\n ProductDimensions?: ProductDimension[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryAvailableToPromise entity interface.\n */\n export interface InventoryAvailableToPromise extends ItemAvailability {\n Date?: string;\n }\n \n /**\n * NotificationItem entity interface.\n */\n export interface NotificationItem {\n Action?: number;\n ActionName?: string;\n NotificationDetails?: NotificationDetail[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationDocumentRetrievalCriteria entity interface.\n */\n export interface FiscalIntegrationDocumentRetrievalCriteria {\n TransactionId?: string;\n IsRemoteTransaction?: boolean;\n QueryBySalesId?: boolean;\n FiscalRegistrationEventTypeValue?: number;\n ShiftId?: number;\n ShiftTerminalId?: string;\n DocumentContext?: FiscalIntegrationDocumentContext;\n }\n \n /**\n * FiscalIntegrationDocument entity interface.\n */\n export interface FiscalIntegrationDocument {\n Document?: string;\n DocumentGenerationResultTypeValue?: number;\n FiscalConnectorTechnicalProfile?: FiscalIntegrationTechnicalProfile;\n DocumentAdjustment?: FiscalIntegrationDocumentAdjustment;\n SequentialSignatureDataContext?: FiscalIntegrationSignatureDataContext;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationRegistrationResult entity interface.\n */\n export interface FiscalIntegrationRegistrationResult {\n TransactionID?: string;\n AuditEventId?: string;\n Response?: string;\n SubmittedDocument?: string;\n RegisterInfo?: string;\n RegistrationStatusValue?: number;\n FiscalRegistrationEventTypeValue?: number;\n DocumentAdjustment?: FiscalIntegrationDocumentAdjustment;\n ReasonCodeLines?: ReasonCodeLine[];\n SequentialSignatureData?: FiscalIntegrationSequentialSignatureData;\n }\n \n /**\n * FiscalIntegrationRegistrationProcess entity interface.\n */\n export interface FiscalIntegrationRegistrationProcess {\n RecordId?: number;\n RegistrationProcessId?: string;\n Description?: string;\n ModeValue?: number;\n RegistrationProcessLines?: FiscalIntegrationRegistrationProcessLine[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationSupportedEvents entity interface.\n */\n export interface FiscalIntegrationSupportedEvents {\n FunctionalityProfileGroupId?: string;\n SupportedFiscalEventTypes?: number[];\n SupportedNonFiscalEventTypes?: number[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationTechnicalProfile entity interface.\n */\n export interface FiscalIntegrationTechnicalProfile {\n ProfileId?: string;\n Description?: string;\n ConnectorName?: string;\n ConnectorTypeValue?: number;\n ConnectorLocationValue?: number;\n TechnicalProfile?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationFiscalRegistrationProcessSummary entity interface.\n */\n export interface FiscalIntegrationFiscalRegistrationProcessSummary {\n RegistrationProcessId?: string;\n FiscalRegistrationProcessSummaryLines?: FiscalIntegrationFiscalRegistrationProcessSummaryLine[];\n ErrorCode?: number;\n }\n \n /**\n * FiscalIntegrationTechnicalProfileSearchCriteria entity interface.\n */\n export interface FiscalIntegrationTechnicalProfileSearchCriteria {\n ExcludeOptionalProcessLines?: boolean;\n FunctionalityProfileGroupIds?: string[];\n }\n \n /**\n * FiscalIntegrationServiceInfo entity interface.\n */\n export interface FiscalIntegrationServiceInfo {\n ServiceName?: string;\n ServiceProperties?: string;\n }\n \n /**\n * FiscalIntegrationServiceStatus entity interface.\n */\n export interface FiscalIntegrationServiceStatus {\n IsReady?: boolean;\n }\n \n /**\n * FiscalIntegrationServiceCommunicationResult entity interface.\n */\n export interface FiscalIntegrationServiceCommunicationResult {\n Response?: string;\n CommunicationResultTypeValue?: number;\n FailureDetails?: FiscalIntegrationServiceFailureDetails;\n FiscalIntegrationServiceInfo?: string;\n UserNotificationMessage?: string;\n }\n \n /**\n * FiscalIntegrationSequentialSignatureData entity interface.\n */\n export interface FiscalIntegrationSequentialSignatureData {\n LastRegisterResponse?: string;\n SequenceKey?: string;\n IsOffline?: boolean;\n SequentialNumber?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DiscountsSearchCriteria entity interface.\n */\n export interface DiscountsSearchCriteria {\n ChannelId?: number;\n Keyword?: string;\n IsDiscountCodeRequired?: boolean;\n StartDate?: Date;\n EndDate?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Promotion entity interface.\n */\n export interface Promotion {\n OfferId?: string;\n OfferName?: string;\n PeriodicDiscountTypeValue?: number;\n IsDiscountCodeRequired?: boolean;\n ValidationPeriodId?: string;\n AdditionalRestrictions?: string;\n Description?: string;\n ValidFromDate?: Date;\n ValidToDate?: Date;\n ValidationPeriod?: ValidationPeriod;\n CouponCodes?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CategoryPathLookup entity interface.\n */\n export interface CategoryPathLookup {\n ProductId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CategoryPathResult entity interface.\n */\n export interface CategoryPathResult {\n ProductId?: number;\n CategoryPath?: CategoryPath[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * PickupTimeslotAvailabilitySearchCriteria entity interface.\n */\n export interface PickupTimeslotAvailabilitySearchCriteria {\n DeliveryModeCode?: string;\n StoreId?: string;\n StartDate?: Date;\n EndDate?: Date;\n SearchOptionValue?: number;\n }\n \n /**\n * PickupTimeslotAvailability entity interface.\n */\n export interface PickupTimeslotAvailability {\n AvailableCapacity?: number;\n StartDateTime?: Date;\n EndDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CheckInForOrderPickupConfirmation entity interface.\n */\n export interface CheckInForOrderPickupConfirmation {\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * VendorSearchCriteria entity interface.\n */\n export interface VendorSearchCriteria {\n SearchText?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Vendor entity interface.\n */\n export interface Vendor {\n RecordId?: number;\n AccountNumber?: string;\n PartyId?: number;\n DataAreaId?: string;\n Name?: string;\n NameAlias?: string;\n PartyNumber?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * VendorValidationResult entity interface.\n */\n export interface VendorValidationResult {\n Message?: string;\n VendorValidationResultLevelValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ExtensionProfile entity interface.\n */\n export interface ExtensionProfile {\n ExtensionServiceUrl?: string;\n AttachedServices?: AttachedService[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelInventoryConfiguration entity interface.\n */\n export interface ChannelInventoryConfiguration {\n RecordId?: number;\n ChannelId?: string;\n AllowTransferOrderOverDelivery?: boolean;\n AllowTransferOrderUnderDelivery?: boolean;\n UserLocationProfileId?: string;\n InventoryProductAttributeRecordId?: number;\n InventoryOutOfStockAttributeValueText?: string;\n ProductAvailabilitySortableAttributeRecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelPurchaseConfiguration entity interface.\n */\n export interface ChannelPurchaseConfiguration {\n RecordId?: number;\n ChannelId?: string;\n AllowOverDelivery?: boolean;\n AllowSubDelivery?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryJournalName entity interface.\n */\n export interface InventoryJournalName {\n RecordId?: number;\n JournalNameId?: string;\n InventoryJournalTypeValue?: number;\n Description?: string;\n DefaultAdjustmentTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ShiftRetrievalCriteria entity interface.\n */\n export interface ShiftRetrievalCriteria {\n ShiftStatusValue?: number;\n FilterByUserRole?: boolean;\n IncludeAllShiftsForStore?: boolean;\n }\n \n /**\n * UserDefinedSecretCertificateResult entity interface.\n */\n export interface UserDefinedSecretCertificateResult {\n CertificateData?: string;\n }\n \n /**\n * TerminalInfo entity interface.\n */\n export interface TerminalInfo {\n TerminalId?: string;\n DeviceNumber?: string;\n Name?: string;\n DeviceType?: number;\n ActivationStatusValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerTimelineItemTypeMap entity interface.\n */\n export interface CustomerTimelineItemTypeMap {\n EntityType?: string;\n Types?: CustomerTimelineItemType[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerTimelineRefiner entity interface.\n */\n export interface CustomerTimelineRefiner {\n RefinedResultsCount?: number;\n EntityType?: string;\n TypeId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerTitle entity interface.\n */\n export interface CustomerTitle {\n Text?: string;\n RecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductWarehouse entity interface.\n */\n export interface ProductWarehouse {\n ProductId?: number;\n InventLocationId?: string;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductWarehouseInventoryInformation entity interface.\n */\n export interface ProductWarehouseInventoryInformation {\n ProductWarehouseInventoryAvailabilities?: ProductWarehouseInventoryAvailability[];\n AggregatedProductInventoryAvailabilities?: ProductInventoryAvailability[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryAvailabilitySearchCriteria entity interface.\n */\n export interface InventoryAvailabilitySearchCriteria {\n ProductIds?: number[];\n DefaultWarehouseOnly?: boolean;\n SearchArea?: SearchArea;\n FilterByChannelFulfillmentGroup?: boolean;\n DeliveryModeTypeFilterValue?: number;\n QuantityUnitTypeValue?: number;\n DataLevelValue?: number;\n }\n \n /**\n * ExtensibleEnumerationContainer entity interface.\n */\n export interface ExtensibleEnumerationContainer {\n TypeName?: string;\n ExtensibleEnumerations?: ExtensibleEnumeration[];\n }\n \n /**\n * PackingSlipData entity interface.\n */\n export interface PackingSlipData {\n PackingSlipId?: string;\n CreatedDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * EmailReceiptSettings entity interface.\n */\n export interface EmailReceiptSettings {\n ReceiptTypeValue?: number;\n EmailBehaviorValue?: number;\n ReceiptTitle?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationComplianceResult entity interface.\n */\n export interface FiscalIntegrationComplianceResult {\n ErrorMessages?: string[];\n }\n \n /**\n * OrgUnitAddress entity interface.\n */\n export interface OrgUnitAddress extends Address {\n }\n \n /**\n * WarehouseDetails entity interface.\n */\n export interface WarehouseDetails extends Address {\n InventoryLocationId?: string;\n }\n \n /**\n * AttributeSwatch entity interface.\n */\n export interface AttributeSwatch {\n SwatchValue?: string;\n SwatchImageUrl?: string;\n SwatchColorHexCode?: string;\n IsDefault?: boolean;\n ProductImageUrls?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttributeBooleanValue entity interface.\n */\n export interface AttributeBooleanValue extends AttributeValueBase {\n Value?: boolean;\n }\n \n /**\n * AttributeCurrencyValue entity interface.\n */\n export interface AttributeCurrencyValue extends AttributeValueBase {\n CurrencyValue?: number;\n CurrencyCode?: string;\n }\n \n /**\n * AttributeDateTimeOffsetValue entity interface.\n */\n export interface AttributeDateTimeOffsetValue extends AttributeValueBase {\n Value?: Date;\n }\n \n /**\n * AttributeFloatValue entity interface.\n */\n export interface AttributeFloatValue extends AttributeValueBase {\n Value?: number;\n UnitSymbol?: string;\n }\n \n /**\n * AttributeIntValue entity interface.\n */\n export interface AttributeIntValue extends AttributeValueBase {\n Value?: number;\n UnitSymbol?: string;\n }\n \n /**\n * AttributeMediaLocationValue entity interface.\n */\n export interface AttributeMediaLocationValue extends AttributeValueBase {\n Value?: MediaLocation[];\n }\n \n /**\n * AttributeTextValue entity interface.\n */\n export interface AttributeTextValue extends AttributeValueBase {\n TextValue?: string;\n TextValueTranslations?: TextValueTranslation[];\n }\n \n /**\n * ButtonGridButton entity interface.\n */\n export interface ButtonGridButton {\n Action?: number;\n ActionProperty?: string;\n BackColorAsARGB?: ARGBColor;\n BorderColorAsARGB?: ARGBColor;\n Column?: number;\n ColumnSpan?: number;\n DisplayText?: string;\n FontColorAsARGB?: ARGBColor;\n ButtonId?: number;\n Row?: number;\n RowSpan?: number;\n UseCustomLookAndFeel?: boolean;\n PictureId?: number;\n PictureAsBase64?: string;\n FontStyle?: number;\n FontSize?: number;\n EnableCustomFontForPOS?: boolean;\n HideButtonText?: boolean;\n Tooltip?: string;\n EnableLiveContent?: boolean;\n NotificationContentAlignment?: number;\n ImageAlignment?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ARGBColor entity interface.\n */\n export interface ARGBColor {\n A?: number;\n R?: number;\n G?: number;\n B?: number;\n }\n \n /**\n * PriceLine entity interface.\n */\n export interface PriceLine {\n RecordId?: number;\n Value?: number;\n PriceMethod?: string;\n OriginId?: string;\n PriceChangedByExtensions?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TradeAgreementPriceLine entity interface.\n */\n export interface TradeAgreementPriceLine extends PriceLine {\n }\n \n /**\n * AttributePricingTradeAgreementPriceLine entity interface.\n */\n export interface AttributePricingTradeAgreementPriceLine extends TradeAgreementPriceLine {\n CanApplyPriceAdjustments?: boolean;\n }\n \n /**\n * SalesAgreementPriceLine entity interface.\n */\n export interface SalesAgreementPriceLine extends PriceLine {\n SalesAgreementName?: string;\n UnitPrice?: number;\n DiscountAmount?: number;\n DiscountPercent?: number;\n SalesAgreementLineTypeValue?: number;\n PriceUnit?: number;\n EffectiveDate?: Date;\n ExpirationDate?: Date;\n CommittedQuantity?: number;\n RemainingQuantity?: number;\n CommittedAmount?: number;\n RemainingAmount?: number;\n }\n \n /**\n * PriceAdjustmentPriceLine entity interface.\n */\n export interface PriceAdjustmentPriceLine extends PriceLine {\n IsCompoundable?: boolean;\n Concurrency?: string;\n }\n \n /**\n * AttributePricingAdjustmentPriceLine entity interface.\n */\n export interface AttributePricingAdjustmentPriceLine extends PriceAdjustmentPriceLine {\n CanCompoundOnAdjustedPrice?: boolean;\n PricingPriorityNumber?: number;\n AdjustedAmount?: number;\n }\n \n /**\n * BasePriceLine entity interface.\n */\n export interface BasePriceLine extends PriceLine {\n }\n \n /**\n * ExtensiblePeriodicDiscountOfferType entity interface.\n */\n export interface ExtensiblePeriodicDiscountOfferType extends ExtensibleEnumeration {\n }\n \n /**\n * ChargeLineOverride entity interface.\n */\n export interface ChargeLineOverride {\n OriginalAmount?: number;\n OverrideAmount?: number;\n OverrideReasonDescription?: string;\n OverrideDateTime?: Date;\n UserId?: string;\n }\n \n /**\n * TaxLineGTE entity interface.\n */\n export interface TaxLineGTE extends TaxLine {\n TaxComponent?: string;\n }\n \n /**\n * TaxMeasure entity interface.\n */\n export interface TaxMeasure {\n Path?: string;\n Value?: number;\n DataAreaId?: string;\n SaleLineNumber?: number;\n StoreId?: string;\n TerminalId?: string;\n TransactionId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DetailedLineStatus entity interface.\n */\n export interface DetailedLineStatus extends ExtensibleEnumeration {\n }\n \n /**\n * CardTokenInfo entity interface.\n */\n export interface CardTokenInfo {\n CardToken?: string;\n UniqueCardId?: string;\n ServiceAccountId?: string;\n MaskedCardNumber?: string;\n }\n \n /**\n * DataverseTenderLine entity interface.\n */\n export interface DataverseTenderLine extends TenderLine {\n }\n \n /**\n * PaymentError entity interface.\n */\n export interface PaymentError {\n Code?: string;\n Message?: string;\n IsLocalized?: boolean;\n }\n \n /**\n * ProductAttributeMetadataFlags entity interface.\n */\n export interface ProductAttributeMetadataFlags {\n IsSearchable?: boolean;\n IsRetrievable?: boolean;\n IsQueryable?: boolean;\n IsRefinable?: boolean;\n IsSortable?: boolean;\n IsMultiValue?: boolean;\n IsTokenNormalization?: boolean;\n IsCompleteMatch?: boolean;\n }\n \n /**\n * UnitOfMeasureConversion entity interface.\n */\n export interface UnitOfMeasureConversion {\n ItemId?: string;\n FromUnitOfMeasureId?: string;\n ToUnitOfMeasureId?: string;\n FromUnitOfMeasureSymbol?: string;\n ToUnitOfMeasureSymbol?: string;\n IsBackward?: boolean;\n RecordId?: number;\n ProductRecordId?: number;\n Factor?: number;\n Numerator?: number;\n Denominator?: number;\n InnerOffset?: number;\n OuterOffset?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReturnLabelContent entity interface.\n */\n export interface ReturnLabelContent {\n ReturnLocationText?: string;\n ReturnWarehouseText?: string;\n ReturnReasonText?: string;\n ReturnPalleteText?: string;\n ItemId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LoyaltyRewardPointLine entity interface.\n */\n export interface LoyaltyRewardPointLine {\n TransactionId?: string;\n SaleLineNumber?: number;\n LoyaltyGroupRecordId?: number;\n LoyaltyCardNumber?: string;\n CustomerAccount?: string;\n EntryDate?: Date;\n EntryTime?: number;\n EntryTypeValue?: number;\n ExpirationDate?: Date;\n LineNumber?: number;\n LoyaltyTierRecordId?: number;\n RewardPointRecordId?: number;\n RewardPointAmountQuantity?: number;\n RewardPointId?: string;\n RewardPointIsRedeemable?: boolean;\n RewardPointType?: string;\n RewardPointCurrency?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TrackingInfo entity interface.\n */\n export interface TrackingInfo {\n TrackingNumber?: string;\n ServiceType?: string;\n PackageWeight?: Weight;\n ShippedOnDate?: Date;\n Status?: string;\n DeliveredOnDate?: Date;\n EstimatedDeliveryDate?: Date;\n TrackingUrl?: string;\n PackagingType?: string;\n DestinationAddress?: Address;\n OriginAddress?: Address;\n ShipmentProgress?: ShipmentProgress[];\n ShippingCharge?: number;\n }\n \n /**\n * Weight entity interface.\n */\n export interface Weight {\n Value?: number;\n Unit?: string;\n }\n \n /**\n * ShipmentProgress entity interface.\n */\n export interface ShipmentProgress {\n Location?: Address;\n DateTime?: Date;\n Activity?: string;\n }\n \n /**\n * ShiftKey entity interface.\n */\n export interface ShiftKey {\n ShiftTerminalId?: string;\n ShiftId?: number;\n Store?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * LocalizedText entity interface.\n */\n export interface LocalizedText {\n RecordId?: number;\n LanguageId?: string;\n TextId?: string;\n Text?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AddressFormattingInfo entity interface.\n */\n export interface AddressFormattingInfo {\n AddressComponentNameValue?: number;\n LineNumber?: number;\n IsDataEntryOnly?: boolean;\n NewLine?: boolean;\n Expand?: boolean;\n Inactive?: boolean;\n Special?: boolean;\n NumberOfSpaces?: number;\n Separator?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareConfigurations entity interface.\n */\n export interface HardwareConfigurations {\n CashDrawerConfigurations?: HardwareConfiguration[];\n PrinterConfigurations?: HardwareConfiguration[];\n PinPadConfiguration?: HardwareConfiguration;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * HardwareConfiguration entity interface.\n */\n export interface HardwareConfiguration {\n RecordId?: number;\n HardwareStationRecordId?: number;\n TerminalId?: string;\n DeviceName?: string;\n IPAddress?: string;\n Port?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * Printer entity interface.\n */\n export interface Printer {\n Name?: string;\n PrinterType?: number;\n Terminal?: number;\n PrintBehaviorValue?: number;\n ReceiptLayoutId?: string;\n HardwareProfileId?: string;\n ReceiptType?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerRefinerValue entity interface.\n */\n export interface CustomerRefinerValue extends SearchRefinerValue {\n RefinerSourceValue?: number;\n }\n \n /**\n * TransferOrderJournalLine entity interface.\n */\n export interface TransferOrderJournalLine {\n ItemId?: string;\n ItemName?: string;\n InventDimId?: string;\n TotalQuantityShipped?: number;\n QuantityShipped?: number;\n TransferQuantity?: number;\n UnitId?: string;\n ConfigId?: string;\n InventSizeId?: string;\n InventColorId?: string;\n InventStyleId?: string;\n DeliveryMethod?: string;\n Barcode?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryDocumentSourceSerialNumberLine entity interface.\n */\n export interface InventoryDocumentSourceSerialNumberLine {\n SourceDocumentTypeValue?: number;\n SourceDocumentId?: string;\n DocumentLineRecordId?: number;\n InventTransRecordId?: number;\n LineId?: string;\n Quantity?: number;\n SerialNumber?: string;\n StatusValue?: number;\n ProductId?: number;\n DataAreaId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * KitTransactionLine entity interface.\n */\n export interface KitTransactionLine {\n ItemId?: string;\n Quantity?: number;\n InventoryDimensionId?: string;\n ProductId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * StoreAddressBook entity interface.\n */\n export interface StoreAddressBook {\n AddressBookId?: number;\n StoreId?: number;\n AddressBookTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TenderDetail entity interface.\n */\n export interface TenderDetail {\n LineNumber?: number;\n Amount?: number;\n AmountInForeignCurrency?: number;\n ForeignCurrencyExchangeRate?: number;\n ForeignCurrency?: string;\n BankBagNumber?: string;\n TenderTypeId?: string;\n TenderRecount?: number;\n DenominationDetails?: DenominationDetail[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DenominationDetail entity interface.\n */\n export interface DenominationDetail {\n Type?: number;\n Currency?: string;\n DenominationAmount?: number;\n QuantityDeclared?: number;\n AmountDeclared?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ButtonGridZone entity interface.\n */\n export interface ButtonGridZone {\n ButtonGridId?: string;\n ZoneId?: string;\n ZoneName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ImageZone entity interface.\n */\n export interface ImageZone {\n PictureId?: number;\n PictureAsBase64?: string;\n ZoneId?: string;\n ZoneName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReportZone entity interface.\n */\n export interface ReportZone {\n ReportRecordId?: number;\n ZoneId?: string;\n ZoneName?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * SalesInvoiceLine entity interface.\n */\n export interface SalesInvoiceLine {\n RecordId?: number;\n ItemId?: string;\n ProductId?: number;\n ProductName?: string;\n InventDimensionId?: string;\n InventTransactionId?: string;\n Quantity?: number;\n Price?: number;\n DiscountPercent?: number;\n DiscountAmount?: number;\n BatchId?: string;\n NetAmount?: number;\n Site?: string;\n Warehouse?: string;\n SerialId?: string;\n ColorId?: string;\n SizeId?: string;\n StyleId?: string;\n ConfigId?: string;\n ColorName?: string;\n SizeName?: string;\n StyleName?: string;\n ConfigName?: string;\n SalesTaxGroup?: string;\n ItemTaxGroup?: string;\n SalesMarkup?: number;\n TotalDiscount?: number;\n TotalPercentageDiscount?: number;\n LineDiscount?: number;\n PeriodicDiscount?: number;\n PeriodicPercentageDiscount?: number;\n LineManualDiscountPercentage?: number;\n LineManualDiscountAmount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ReportRow entity interface.\n */\n export interface ReportRow {\n RowData?: CommerceProperty[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FormAnnotation entity interface.\n */\n export interface FormAnnotation extends Annotation {\n MenuItemLabel?: string;\n MenuItemName?: string;\n MenuItemType?: string;\n }\n \n /**\n * TaskGuideAnnotation entity interface.\n */\n export interface TaskGuideAnnotation extends Annotation {\n RecordingValueType?: string;\n Title?: string;\n ExampleText?: string;\n Hidden?: boolean;\n GlobalId?: string;\n }\n \n /**\n * CommandArgument entity interface.\n */\n export interface CommandArgument {\n Value?: string;\n IsReference?: boolean;\n }\n \n /**\n * PropertyUserAction entity interface.\n */\n export interface PropertyUserAction extends FormUserAction {\n Value?: string;\n ValueLabel?: string;\n PropertyName?: string;\n ControlName?: string;\n ControlType?: string;\n UserActionType?: string;\n IsReference?: boolean;\n LabelId?: string;\n }\n \n /**\n * InfoUserAction entity interface.\n */\n export interface InfoUserAction extends UserAction {\n FormId?: string;\n ControlLabel?: string;\n ControlLabelId?: string;\n ControlName?: string;\n Text?: string;\n Notes?: string;\n }\n \n /**\n * MenuItemUserAction entity interface.\n */\n export interface MenuItemUserAction extends UserAction {\n MenuItemName?: string;\n MenuItemType?: string;\n NavigationPath?: string[];\n }\n \n /**\n * ValidationUserAction entity interface.\n */\n export interface ValidationUserAction extends UserAction {\n Name?: string;\n Comment?: string;\n }\n \n /**\n * ArtifactSummary entity interface.\n */\n export interface ArtifactSummary {\n ArtifactType?: string;\n LanguageTags?: string[];\n }\n \n /**\n * MetadataPropertyValue entity interface.\n */\n export interface MetadataPropertyValue {\n PropertyId?: string;\n SingleValue?: string;\n MultiValue?: MetadataText[];\n Tags?: string[];\n ComboBox?: string;\n MultiSelect?: string[];\n Links?: MetadataHypertextLink[];\n }\n \n /**\n * FormContext entity interface.\n */\n export interface FormContext {\n FormID?: string;\n FormName?: string;\n RecordingName?: string;\n HasMetadata?: boolean;\n Sequence?: number;\n Annotations?: Annotation[];\n }\n \n /**\n * ExtensibleFiscalRegistrationType entity interface.\n */\n export interface ExtensibleFiscalRegistrationType extends ExtensibleEnumeration {\n }\n \n /**\n * FiscalTransactionTenderLineAdjustment entity interface.\n */\n export interface FiscalTransactionTenderLineAdjustment {\n TenderLineNumber?: number;\n AdjustmentAmount?: number;\n RecordGuid?: string;\n TransactionId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalTransactionSalesLineAdjustment entity interface.\n */\n export interface FiscalTransactionSalesLineAdjustment {\n SalesLineNumber?: number;\n Exclude?: boolean;\n RecordGuid?: string;\n TransactionId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DetailedOrderStatus entity interface.\n */\n export interface DetailedOrderStatus extends ExtensibleEnumeration {\n }\n \n /**\n * LineValidationResult entity interface.\n */\n export interface LineValidationResult {\n LineId?: string;\n ValidationFailures?: DataValidationFailure[];\n }\n \n /**\n * SalesAffiliationLoyaltyTier entity interface.\n */\n export interface SalesAffiliationLoyaltyTier extends AffiliationLoyaltyTier {\n TransactionId?: string;\n ChannelId?: number;\n TerminalId?: string;\n ReceiptId?: string;\n StaffId?: string;\n }\n \n /**\n * TaxViewLine entity interface.\n */\n export interface TaxViewLine {\n TaxId?: string;\n TaxAmount?: number;\n }\n \n /**\n * Coupon entity interface.\n */\n export interface Coupon {\n CodeId?: string;\n Code?: string;\n DiscountOfferId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerAccountDepositLine entity interface.\n */\n export interface CustomerAccountDepositLine {\n Amount?: number;\n CustomerAccount?: string;\n Comment?: string;\n StoreNumber?: string;\n Terminal?: string;\n Shift?: string;\n TransactionStatusValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CustomerAttribute entity interface.\n */\n export interface CustomerAttribute {\n AttributeValue?: CommercePropertyValue;\n Units?: string;\n RecordId?: number;\n Name?: string;\n KeyName?: string;\n DataTypeValue?: number;\n Attribute?: number;\n NameTranslations?: TextValueTranslation[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ContactInfo entity interface.\n */\n export interface ContactInfo {\n AddressTypeValue?: number;\n RecordId?: number;\n PartyLocationRecordId?: number;\n PartyRecordId?: number;\n PartyNumber?: string;\n Description?: string;\n Value?: string;\n ValueExtension?: string;\n LogisticsLocationId?: string;\n LogisticsLocationRecordId?: number;\n ParentLocation?: number;\n IsPrimary?: boolean;\n IsMobilePhone?: boolean;\n IsPrivate?: boolean;\n IsOptedInMarketing?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * InventoryQuantities entity interface.\n */\n export interface InventoryQuantities {\n UnitOfMeasure?: string;\n QuantityNotProcessed?: number;\n QuantityReserved?: number;\n QuantityPicked?: number;\n QuantityPacked?: number;\n QuantityInvoiced?: number;\n QuantityOrdered?: number;\n QuantityCanceled?: number;\n QuantityReturned?: number;\n }\n \n /**\n * DeliveryInformation entity interface.\n */\n export interface DeliveryInformation {\n DeliveryMode?: string;\n DeliveryAddress?: Address;\n DeliveryDate?: Date;\n PickupTimeslotStartDateTime?: Date;\n PickupTimeslotEndDateTime?: Date;\n }\n \n /**\n * ShiftTaxLine entity interface.\n */\n export interface ShiftTaxLine {\n TaxCode?: string;\n TaxAmount?: number;\n TaxRate?: number;\n NetAmount?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TaxRegistration entity interface.\n */\n export interface TaxRegistration {\n RecordId?: number;\n Name?: string;\n CountryRegionId?: string;\n IsRegistrationNumberUnique?: boolean;\n IsPrimaryAddressRestricted?: boolean;\n TypeApplicabilityRuleRecordId?: number;\n TypeValue?: number;\n Description?: string;\n DirPartyLocationRecordId?: number;\n RegistrationNumber?: string;\n ValidFrom?: Date;\n ValidTo?: Date;\n Issuer?: string;\n IssueDate?: Date;\n Section?: string;\n DirectoryPartyRecordId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelTaxRegistration entity interface.\n */\n export interface ChannelTaxRegistration extends TaxRegistration {\n ChannelId?: number;\n }\n \n /**\n * LinkedProduct entity interface.\n */\n export interface LinkedProduct {\n ProductRecordId?: number;\n LinkedProductRecordId?: number;\n Quantity?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * DisplayOrderInCategory entity interface.\n */\n export interface DisplayOrderInCategory {\n CategoryRecordId?: number;\n DisplayOrder?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * RelatedProduct entity interface.\n */\n export interface RelatedProduct {\n ProductRecordId?: number;\n RelatedProductRecordId?: number;\n CatalogId?: number;\n RelationName?: string;\n IsExcludedRelation?: boolean;\n IsDirectRelation?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * KitComponent entity interface.\n */\n export interface KitComponent {\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ChannelReferenceAdditionalLookupCriteria entity interface.\n */\n export interface ChannelReferenceAdditionalLookupCriteria {\n OrderLookupAdditionalCriteriaTypeValue?: number;\n OrderLookupAdditionalCriteriaTypeParameterValue?: string;\n }\n \n /**\n * UserAlertFulfillmentLineParameter entity interface.\n */\n export interface UserAlertFulfillmentLineParameter extends FulfillmentLineParameter {\n ItemId?: string;\n ProductId?: number;\n UnitOfMeasure?: string;\n SerialNumberInLatestFulfillmentTransaction?: string;\n LatestFulfillmentTransactionOperationTypeValue?: number;\n }\n \n /**\n * ListingIdentity entity interface.\n */\n export interface ListingIdentity {\n ProductId?: number;\n LanguageId?: string;\n CatalogId?: number;\n Tag?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductRatingCount entity interface.\n */\n export interface ProductRatingCount {\n Rating?: number;\n Count?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * RegularStoreHours entity interface.\n */\n export interface RegularStoreHours {\n MondayOpenTime?: number;\n MondayCloseTime?: number;\n IsClosedOnMonday?: boolean;\n TuesdayOpenTime?: number;\n TuesdayCloseTime?: number;\n IsClosedOnTuesday?: boolean;\n WednesdayOpenTime?: number;\n WednesdayCloseTime?: number;\n IsClosedOnWednesday?: boolean;\n ThursdayOpenTime?: number;\n ThursdayCloseTime?: number;\n IsClosedOnThursday?: boolean;\n FridayOpenTime?: number;\n FridayCloseTime?: number;\n IsClosedOnFriday?: boolean;\n SaturdayOpenTime?: number;\n SaturdayCloseTime?: number;\n IsClosedOnSaturday?: boolean;\n SundayOpenTime?: number;\n SundayCloseTime?: number;\n IsClosedOnSunday?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ValidationPeriod entity interface.\n */\n export interface ValidationPeriod {\n RecordId?: number;\n PeriodId?: string;\n Description?: string;\n ValidFrom?: Date;\n ValidTo?: Date;\n StartingTime?: number;\n EndingTime?: number;\n IsTimeBounded?: number;\n MondayStartingTime?: number;\n MondayEndingTime?: number;\n IsMondayTimeBounded?: number;\n TuesdayStartingTime?: number;\n TuesdayEndingTime?: number;\n IsTuesdayTimeBounded?: number;\n WednesdayStartingTime?: number;\n WednesdayEndingTime?: number;\n IsWednesdayTimeBounded?: number;\n ThursdayStartingTime?: number;\n ThursdayEndingTime?: number;\n IsThursdayTimeBounded?: number;\n FridayStartingTime?: number;\n FridayEndingTime?: number;\n IsFridayTimeBounded?: number;\n SaturdayStartingTime?: number;\n SaturdayEndingTime?: number;\n IsSaturdayTimeBounded?: number;\n SundayStartingTime?: number;\n SundayEndingTime?: number;\n IsSundayTimeBounded?: number;\n IsEndTimeAfterMidnight?: number;\n IsMondayEndTimeAfterMidnight?: number;\n IsTuesdayEndTimeAfterMidnight?: number;\n IsWednesdayEndTimeAfterMidnight?: number;\n IsThursdayEndTimeAfterMidnight?: number;\n IsFridayEndTimeAfterMidnight?: number;\n IsSaturdayEndTimeAfterMidnight?: number;\n IsSundayEndTimeAfterMidnight?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ClientBookChange entity interface.\n */\n export interface ClientBookChange {\n FromStaffId?: string;\n ToStaffId?: string;\n CustomerId?: string;\n }\n \n /**\n * ChannelProfile entity interface.\n */\n export interface ChannelProfile {\n ProfileProperties?: ChannelProfileProperty[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * RetailSharedConfigurationParameter entity interface.\n */\n export interface RetailSharedConfigurationParameter {\n RecordId?: number;\n Name?: string;\n Value?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CDXDataStore entity interface.\n */\n export interface CDXDataStore {\n Name?: string;\n RecId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * UploadJobPackageRequest entity interface.\n */\n export interface UploadJobPackageRequest {\n JobId?: string;\n RerunUploadSessionId?: number;\n TargetStorage?: string;\n UploadJobDefintion?: string;\n UploadUrl?: string;\n }\n \n /**\n * ExtensibleAuditEventType entity interface.\n */\n export interface ExtensibleAuditEventType extends ExtensibleEnumeration {\n }\n \n /**\n * AuditEventFiscalTransaction entity interface.\n */\n export interface AuditEventFiscalTransaction {\n EventId?: number;\n LineNumber?: number;\n RegisterResponse?: string;\n Store?: string;\n TransDateTime?: Date;\n Terminal?: string;\n UploadType?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AuditEventFiscalRegistrationLine entity interface.\n */\n export interface AuditEventFiscalRegistrationLine {\n EventId?: number;\n RegisterResponse?: string;\n StoreId?: string;\n TransactionDateTime?: Date;\n TerminalId?: string;\n UploadType?: string;\n UploadTypeValue?: number;\n StaffId?: string;\n RecordGuid?: string;\n RegistrationStatusValue?: number;\n RegistrationProcessId?: string;\n ConnectorGroup?: string;\n ConnectorName?: string;\n ConnectorFunctionalityProfileId?: string;\n RegisterInfo?: string;\n CreatedDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * NotificationDetail entity interface.\n */\n export interface NotificationDetail {\n ActionProperty?: string;\n ItemCount?: number;\n DisplayText?: string;\n IsNew?: boolean;\n LastUpdatedDateTimeStr?: string;\n IsSuccess?: boolean;\n IsLiveContentOnly?: boolean;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationDocumentContext entity interface.\n */\n export interface FiscalIntegrationDocumentContext {\n AuditEvent?: AuditEvent;\n SignatureData?: FiscalIntegrationSequentialSignatureData[];\n }\n \n /**\n * FiscalIntegrationDocumentAdjustment entity interface.\n */\n export interface FiscalIntegrationDocumentAdjustment {\n TenderLineAdjustments?: FiscalTransactionTenderLineAdjustment[];\n SalesLineAdjustments?: FiscalTransactionSalesLineAdjustment[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationSignatureDataContext entity interface.\n */\n export interface FiscalIntegrationSignatureDataContext {\n SequentialSignatureKey?: string;\n SequentialNumber?: number;\n }\n \n /**\n * FiscalIntegrationRegistrationProcessLine entity interface.\n */\n export interface FiscalIntegrationRegistrationProcessLine {\n RegistrationProcessId?: string;\n SequenceNumber?: number;\n Priority?: number;\n ConnectorTypeValue?: number;\n FunctionalityProfileGroupId?: string;\n AllowSkip?: boolean;\n AllowMarkAsRegistered?: boolean;\n AllowPostpone?: boolean;\n Optional?: boolean;\n RegistrationSettings?: FiscalIntegrationRegistrationSettings;\n SupportedFiscalEventTypes?: number[];\n SupportedNonFiscalEventTypes?: number[];\n SequentialKeys?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * FiscalIntegrationRegistrationSettings entity interface.\n */\n export interface FiscalIntegrationRegistrationSettings {\n SkipReasonCode?: string;\n MarkAsRegisteredReasonCode?: string;\n PostponeReasonCode?: string;\n }\n \n /**\n * FiscalIntegrationFiscalRegistrationProcessSummaryLine entity interface.\n */\n export interface FiscalIntegrationFiscalRegistrationProcessSummaryLine {\n RegistrationProcessLine?: FiscalIntegrationRegistrationProcessLine;\n ConnectorName?: string;\n ConnectorTypeValue?: number;\n ConnectorLocationValue?: number;\n ConnectionProperties?: FiscalIntegrationConfigurationProperty[];\n ErrorCode?: number;\n }\n \n /**\n * FiscalIntegrationConfigurationProperty entity interface.\n */\n export interface FiscalIntegrationConfigurationProperty {\n LabelName?: string;\n Value?: string;\n }\n \n /**\n * FiscalIntegrationServiceFailureDetails entity interface.\n */\n export interface FiscalIntegrationServiceFailureDetails {\n FailureTypeValue?: number;\n IsRetryAllowed?: boolean;\n ErrorCode?: string;\n ErrorMessage?: string;\n }\n \n /**\n * CategoryPath entity interface.\n */\n export interface CategoryPath {\n Segments?: CategoryPathSegment[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * CategoryPathSegment entity interface.\n */\n export interface CategoryPathSegment {\n CategoryName?: string;\n CategoryId?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AttachedService entity interface.\n */\n export interface AttachedService {\n BaseUrl?: string;\n ServiceId?: string;\n StatusValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ExtensibleInventoryJournalType entity interface.\n */\n export interface ExtensibleInventoryJournalType extends ExtensibleEnumeration {\n }\n \n /**\n * CustomerTimelineItemType entity interface.\n */\n export interface CustomerTimelineItemType {\n Description?: string;\n TypeId?: string;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ProductWarehouseInventoryAvailability entity interface.\n */\n export interface ProductWarehouseInventoryAvailability {\n ProductId?: number;\n InventLocationId?: string;\n DataAreaId?: string;\n PhysicalInventory?: number;\n PhysicalReserved?: number;\n TotalAvailable?: number;\n TotalAvailableInventoryLevelLabel?: string;\n TotalAvailableInventoryLevelCode?: string;\n OrderedInTotal?: number;\n PhysicalAvailable?: number;\n PhysicalAvailableInventoryLevelLabel?: string;\n PhysicalAvailableInventoryLevelCode?: string;\n LastInventoryTransactionId?: number;\n UnpostedOnlineOrderedQuantity?: number;\n UnpostedFulfilledQuantity?: number;\n IsInventoryAvailabilityQuantityReturned?: boolean;\n UnprocessedQuantity?: number;\n QuantityUnitTypeValue?: number;\n UnitOfMeasure?: string;\n MaximumPurchasablePhysicalAvailableQuantity?: number;\n MaximumPurchasableTotalAvailableQuantity?: number;\n SumUncountedTransactions?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * QuantityUnitType entity interface.\n */\n export interface QuantityUnitType extends ExtensibleEnumeration {\n }\n \n /**\n * ProductInventoryAvailability entity interface.\n */\n export interface ProductInventoryAvailability {\n ProductId?: number;\n DataAreaId?: string;\n TotalAvailableQuantity?: number;\n TotalAvailableInventoryLevelLabel?: string;\n TotalAvailableInventoryLevelCode?: string;\n PhysicalAvailableQuantity?: number;\n PhysicalAvailableInventoryLevelLabel?: string;\n PhysicalAvailableInventoryLevelCode?: string;\n QuantityUnitTypeValue?: number;\n UnitOfMeasure?: string;\n MaximumPurchasablePhysicalAvailableQuantity?: number;\n MaximumPurchasableTotalAvailableQuantity?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * ParameterSet entity interface.\n */\n export interface ParameterSet {\n }\n \n /**\n * CartLineValidationResults entity interface.\n */\n export interface CartLineValidationResults {\n ValidationResultsByLineId?: CartLineValidationResultsByLineId;\n ValidationFailuresByCartLines?: LineDataValidationFailure[];\n }\n \n /**\n * CommerceException entity interface.\n */\n export interface CommerceException {\n LocalizedMessage?: string;\n ErrorResourceId?: string;\n }\n \n /**\n * DataValidationException entity interface.\n */\n export interface DataValidationException extends CommerceException {\n ValidationResults?: DataValidationFailure[];\n }\n \n /**\n * MissingRequiredReasonCodeException entity interface.\n */\n export interface MissingRequiredReasonCodeException extends DataValidationException {\n RequiredReasonCodes?: ReasonCode[];\n TransactionRequiredReasonCodeIds?: string[];\n ReasonCodeRequirements?: ReasonCodeRequirement[];\n }\n \n /**\n * SecurityException entity interface.\n */\n export interface SecurityException extends CommerceException {\n }\n \n /**\n * DeviceAuthenticationException entity interface.\n */\n export interface DeviceAuthenticationException extends SecurityException {\n }\n \n /**\n * HeadquarterTransactionServiceException entity interface.\n */\n export interface HeadquarterTransactionServiceException extends CommerceException {\n }\n \n /**\n * UserAuthenticationException entity interface.\n */\n export interface UserAuthenticationException extends SecurityException {\n }\n \n /**\n * UserAuthorizationException entity interface.\n */\n export interface UserAuthorizationException extends SecurityException {\n }\n \n /**\n * FeatureNotSupportedException entity interface.\n */\n export interface FeatureNotSupportedException extends CommerceException {\n }\n \n /**\n * CartValidationException entity interface.\n */\n export interface CartValidationException extends DataValidationException {\n }\n \n /**\n * TenderValidationException entity interface.\n */\n export interface TenderValidationException extends DataValidationException {\n TenderTypeId?: string;\n }\n \n /**\n * CommerceDataExchangeException entity interface.\n */\n export interface CommerceDataExchangeException extends CommerceException {\n }\n \n /**\n * ExtensibleEnumerationException entity interface.\n */\n export interface ExtensibleEnumerationException extends CommerceException {\n }\n \n /**\n * TaskManagementException entity interface.\n */\n export interface TaskManagementException extends CommerceException {\n TaskManagementErrors?: TaskManagementError[];\n }\n \n /**\n * TaskManagementServerException entity interface.\n */\n export interface TaskManagementServerException extends TaskManagementException {\n }\n \n /**\n * TaskManagementClientException entity interface.\n */\n export interface TaskManagementClientException extends TaskManagementException {\n }\n \n /**\n * PaymentException entity interface.\n */\n export interface PaymentException extends CommerceException {\n AdditionalContext?: string;\n PaymentSdkErrors?: PaymentError[];\n }\n \n /**\n * DataValidationFailure entity interface.\n */\n export interface DataValidationFailure {\n ErrorContext?: string;\n ErrorResourceId?: string;\n MemberNames?: string[];\n LocalizedMessage?: string;\n }\n \n /**\n * ItemDiscontinuedException entity interface.\n */\n export interface ItemDiscontinuedException extends CommerceException {\n RemovedUnavailableItemIds?: string;\n }\n \n /**\n * InventoryDocumentLockedByOtherTerminalException entity interface.\n */\n export interface InventoryDocumentLockedByOtherTerminalException extends DataValidationException {\n WorkingTerminalId?: string;\n CurrentTerminalId?: string;\n }\n \n /**\n * InventoryDocumentExceedMaximumQuantityException entity interface.\n */\n export interface InventoryDocumentExceedMaximumQuantityException extends DataValidationException {\n MaximumQuantity: number;\n AllowOverDelivery: boolean;\n }\n \n /**\n * CartLineValidationResultsByLineId entity interface.\n */\n export interface CartLineValidationResultsByLineId {\n LineIdToProductBehaviorMap?: KeyValuePair_2OfString_ProductBehavior[];\n ValidationResultsPairs?: LineValidationResult[];\n }\n \n /**\n * CommerceRuntimeCompositionException entity interface.\n */\n export interface CommerceRuntimeCompositionException extends CommerceException {\n }\n \n /**\n * ChecklistTaskValidationException entity interface.\n */\n export interface ChecklistTaskValidationException extends DataValidationException {\n }\n \n /**\n * InsufficientCredentialLengthException entity interface.\n */\n export interface InsufficientCredentialLengthException extends DataValidationException {\n ActualLength?: number;\n MinLength?: number;\n }\n \n /**\n * ExtensibleEnumerationCacheException entity interface.\n */\n export interface ExtensibleEnumerationCacheException extends CommerceException {\n }\n \n /**\n * ExtensionConfigurationException entity interface.\n */\n export interface ExtensionConfigurationException extends CommerceException {\n }\n \n /**\n * StaffPasswordExpiredException entity interface.\n */\n export interface StaffPasswordExpiredException extends UserAuthenticationException {\n StaffId?: string;\n }\n \n /**\n * ChannelConfigurationNotFoundException entity interface.\n */\n export interface ChannelConfigurationNotFoundException extends CommerceException {\n }\n \n /**\n * PaymentConfigurationException entity interface.\n */\n export interface PaymentConfigurationException extends CommerceException {\n PaymentConfigurationSdkErrors?: string[];\n }\n \n /**\n * SecretConfigurationNotFoundException entity interface.\n */\n export interface SecretConfigurationNotFoundException extends CommerceException {\n }\n \n /**\n * TenderTypePolicy entity interface.\n */\n export interface TenderTypePolicy {\n OriginalTenderType?: string;\n AllowedReturnTenderTypes?: string[];\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * AccountStatementRequest entity interface.\n */\n export interface AccountStatementRequest {\n RequestedUserId?: string;\n IsForFullOrganization?: boolean;\n FromDate?: Date;\n ToDate?: Date;\n RequestingUserEmail?: string;\n DeliveryTypeValue?: number;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * BusinessPartnerOperationRequestDetails entity interface.\n */\n export interface BusinessPartnerOperationRequestDetails {\n InvoiceId?: string;\n AccountStatementStartDateTime?: Date;\n AccountStatementEndDateTime?: Date;\n ExtensionProperties?: CommerceProperty[];\n }\n \n /**\n * TaskManagementError entity interface.\n */\n export interface TaskManagementError {\n ErrorResourceId?: string;\n LocalizedMessage?: string;\n TaskId?: string;\n }\n \n /**\n * LineDataValidationFailure entity interface.\n */\n export interface LineDataValidationFailure {\n DataValidationFailure?: DataValidationFailure;\n LineIndex?: number;\n }\n \n /**\n * WrongEndpointException entity interface.\n */\n export interface WrongEndpointException extends CommerceException {\n RedirectUri?: string;\n }\n \n /**\n * BadRequestException entity interface.\n */\n export interface BadRequestException extends CommerceException {\n }\n \n /**\n * KeyValuePair_2OfString_ProductBehavior entity interface.\n */\n export interface KeyValuePair_2OfString_ProductBehavior {\n }\n ","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport type CacheType = 'none' | 'instance' | 'application' | 'request';\n\n/**\n * BypassCache type.\n */\nexport type BypassCache = 'none' | 'get' | 'put' | 'getAndPut';\n\nexport enum ICacheSource {\n RequestCache,\n AppCache\n}\n\nexport interface ICacheKey {\n key: string;\n typeName: string;\n}\n\nexport interface ICacheItem {\n item: T;\n cacheType?: CacheType;\n shouldRefresh?: boolean;\n error?: boolean;\n s?: ICacheSource;\n}\n\n/**\n * Interface exposing methods for caching\n */\nexport interface ICache {\n /**\n * @function {put} - Method to insert an item in the cache\n * @param cacheKey {ICacheKey} - object to build the cache key\n * @param cacheItem {ICacheItem} - item that needs to be inserted in the cache\n */\n put(cacheKey: ICacheKey, item: ICacheItem): boolean;\n\n /**\n * @function {get} - Method to get the cached item\n * @param cacheKey {ICacheKey} - object to build the cache key\n * @return {ICacheItem} - cached value against the given cache key\n */\n get(cacheKey: ICacheKey): ICacheItem | undefined;\n\n /**\n * @function {getValue} - Method to get the cached item\n * @param cacheKey {ICacheKey} - object to build the cache key\n * @return {T} - cached value against the given cache key\n */\n getValue(cacheKey: ICacheKey): T | undefined;\n\n /**\n * @function {getAllItems} - Method to get all cached items for a given type\n * @param typeName {typeName} - typeName for which all items need to be fetched\n * @return {ICacheItem} - dictionary of cache items of the given typeName\n */\n getAllItems(typeName: string): { [cacheKey: string]: ICacheItem } | undefined;\n\n /**\n * @param cacheKey {ICacheKey} - object to build the cache key\n * @param toCache {ICache} - cache object to which the item needs to be copied\n * @return {ICacheItem} - cache item that was copied\n */\n copyTo(cacheKey: ICacheKey, toCache: ICache): ICacheItem | undefined;\n\n /**\n * @function {del} - Method to delete an item from the cache\n * @param key {ICacheKey[]} - Array of ICacheGetData items whose values need to be deleted from cache\n * @return {number} - returns true if the cache key is deleted successfully. Does not throw errors.\n */\n del(cacheKey: ICacheKey): boolean;\n\n /**\n * @function {flushAll} - Method to flush all data from the cache\n */\n flushAll(): void;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// NOTE: no-any is disabled intentionally, as promises require valid use of the any type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { observable } from 'mobx';\nimport { IODataMetadata } from './interfaces/IODataMetadata';\n\nexport type AsyncResultStatus = 'LOADING' | 'SUCCESS' | 'FAILED';\n\nexport const isAsyncResult = (item: { toString(): string }): item is AsyncResult => {\n return item && item.toString && typeof item.toString === 'function' && item.toString() === `[object AsyncResult]`;\n};\n\n/**\n * Utility Methods For AsyncResult\n */\nconst isThenable = (obj: any) => obj && typeof obj === 'object' && typeof obj.then === 'function';\n\n/**\n * TYPES & INTERFACES\n */\ninterface IHandler {\n onSuccess: HandlerOnSuccess;\n onFail: HandlerOnFail;\n}\n\ntype HandlerOnSuccess = (value: TIn) => TOut | PromiseLike;\ntype HandlerOnFail = (reason: any) => TOut | PromiseLike;\n\ntype Resolve = (value?: T | PromiseLike) => void;\ntype Reject = (value?: any) => void;\n\n/**\n * AsyncResult Class\n * Promise-style class which allows for observation of the status of the promise\n * and it's result during and after is execution.\n */\nexport class AsyncResult implements Promise {\n @observable public result?: T;\n\n @observable public status: AsyncResultStatus = 'LOADING';\n\n @observable public error?: Error;\n\n @observable public metadata: IODataMetadata = {};\n\n private _type: string = 'AsyncResult';\n\n public getType(): string {\n return this._type;\n }\n\n private _handlers: Array> = [];\n\n public static resolve(value?: U | PromiseLike): AsyncResult {\n return new AsyncResult(resolve => {\n return resolve(value);\n });\n }\n\n public static reject(reason?: any): AsyncResult {\n return new AsyncResult((resolve, reject) => {\n return reject(reason);\n });\n }\n\n /**\n * Class constructor, which starts running the passed executor\n * @param executor Passed function to be executed, resulting in resolution/rejection\n */\n constructor(executor: (resolve: Resolve, reject: Reject) => void) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /**\n * Method that allows for an executor to be passed to the promise after inital execution,\n * essentially \"rerunning\" the promise.\n * @param executor Passed function to be executed, resulting in resolution/rejection\n */\n public run(executor: (resolve: Resolve, reject: Reject) => void): void {\n this.status = 'LOADING';\n this.error = undefined;\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /**\n * Method which allows chaining of callbacks to the end of a fully executed AsyncResult\n * @param onSuccess Callback to be run on successful completion of executor\n * @param onFail Callback to be run when executor cannot be successfully completed\n */\n public then(\n onSuccess?: ((value: T) => TResult1 | PromiseLike) | undefined | null,\n onFail?: ((reason: any) => TResult2 | PromiseLike) | undefined | null\n ): AsyncResult {\n const asyncResult = new AsyncResult((resolve, reject) => {\n return this._attachHandler({\n onSuccess: result => {\n if (!onSuccess) {\n return resolve(result as any);\n }\n\n try {\n return resolve(onSuccess(result));\n } catch (e) {\n return reject(e);\n }\n },\n onFail: reason => {\n if (!onFail) {\n return reject(reason);\n }\n\n try {\n return resolve(onFail(reason));\n } catch (e) {\n return reject(e);\n }\n }\n });\n });\n\n // Always pass the metadata on a then\n asyncResult.metadata = this.metadata;\n\n return asyncResult;\n }\n\n /**\n * Hook to allow callback on the unsuccessful run of an executor\n * @param onFail Callback to run when executor fails\n */\n public catch(onFail?: ((reason: any) => TResult | PromiseLike) | undefined | null): AsyncResult {\n const defaultThen = (value: any) => value;\n return this.then(defaultThen, onFail);\n }\n\n /**\n * Hook to allow a callback to be executed on a successful or unsuccessful run of the executor\n * @param callback Callback to be run after original AsyncResult is completed\n */\n public finally(onfinally?: (() => void) | undefined | null): AsyncResult {\n return new AsyncResult((resolve, reject) => {\n let value: T | any;\n let failed: Boolean = false;\n\n return this.then(\n result => {\n value = result;\n return onfinally();\n },\n reason => {\n failed = true;\n value = reason;\n return onfinally();\n }\n ).then(() => {\n if (failed) {\n return reject(value);\n }\n\n return resolve(value);\n });\n });\n }\n\n public toString(): string {\n return `[object AsyncResult]`;\n }\n\n get [Symbol.toStringTag](): string {\n return '[object AsyncResult]';\n }\n\n private _attachHandler = (handler: IHandler) => {\n this._handlers.push(handler);\n\n this._executeHandlers();\n };\n\n private _executeHandlers = () => {\n if (this.status === 'LOADING') {\n return;\n }\n\n for (const handler of this._handlers) {\n if (this.status === 'FAILED') {\n handler.onFail(this.error);\n } else {\n handler.onSuccess(this.result as T);\n }\n }\n\n this._handlers = [];\n };\n\n private _resolve = (value?: T | PromiseLike) => {\n return this._updateStatus(value, 'SUCCESS');\n };\n\n private _reject = (reason: any) => {\n return this._updateStatus(reason, 'FAILED', true);\n };\n\n private _updateStatus(result: T | any, newStatus: AsyncResultStatus, isError: Boolean = false): void {\n // Wrap in setTimeout to ensure fully synchronous handlers\n // are still returned AFTER initial class construction\n setTimeout(() => {\n if (this.status !== 'LOADING') {\n return null;\n }\n\n if (isThenable(result)) {\n return (result as PromiseLike).then(this._resolve, this._reject);\n }\n\n if (isError) {\n this.error = result;\n } else {\n this.result = result;\n }\n\n this.status = newStatus;\n\n return this._executeHandlers();\n }, 0);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { EMPTY, hasElements } from '../extensions/StringExtensions';\nimport { ProxyError } from './ProxyError';\n\nexport class ErrorTypeEnum {\n public static SERVER_ERROR: string = 'string_29002';\n public static SERVICE_UNAVAILABLE: string = 'string_29278';\n public static SERVER_TIMEOUT: string = 'string_29279';\n public static RETAIL_SERVER_REDIRECT_ERROR = 'RETAIL_SERVER_REDIRECT_ERROR';\n public static GENERICERRORMESSAGE: string = 'string_29201';\n public static MICROSOFT_DYNAMICS_SERVER_INTERNAL_ERROR: string = ErrorTypeEnum.GENERICERRORMESSAGE;\n public static BAD_REQUEST: string = 'string_29274';\n public static NOT_AUTHORIZIED: string = 'string_29275';\n public static FORBIDDEN: string = 'string_29276';\n public static PRECONDITION_FAILED: string = 'string_29277';\n public static RETURN_NO_ORDERS_FOUND: string = 'string_1218';\n}\n\n/**\n * Forward links for device activation errors.\n */\nexport class DeviceActivationErrorsForwardLinks {\n public static MICROSOFT_DYNAMICS_COMMERCE_RUNTIME_CHANNELDATABASECONNECTIONFAILED: string =\n 'http://go.microsoft.com/fwlink/?LinkId=403590';\n public static MICROSOFT_DYNAMICS_COMMERCE_RUNTIME_REALTIMESERVICECONNECTIONFAILED: string =\n 'http://go.microsoft.com/fwlink/?LinkId=403591';\n public static MICROSOFT_DYNAMICS_COMMERCE_RUNTIME_TERMINALNOTASSIGNEDTOSTORE: string = 'http://go.microsoft.com/fwlink/?LinkId=403592';\n public static MICROSOFT_DYNAMICS_COMMERCE_RUNTIME_USERNOTASSIGNEDTOSTORE: string = 'http://go.microsoft.com/fwlink/?LinkId=403593';\n public static MICROSOFT_DYNAMICS_COMMERCE_RUNTIME_INCORRECTSTAFFIDORPASSWORD: string = 'http://go.microsoft.com/fwlink/?LinkId=403594';\n public static MICROSOFT_DYNAMICS_COMMERCE_RUNTIME_DEVICEALREADYACTIVATED: string = 'http://go.microsoft.com/fwlink/?LinkId=519136';\n public static SERVER_ERROR: string = 'http://go.microsoft.com/fwlink/?LinkId=519137';\n}\n\nexport class ErrorHelper {\n private static AGGREGATED_ERROR_RESOUCEIDS: string[] = [\n 'Microsoft_Dynamics_Commerce_Runtime_AggregateValidationError',\n 'Microsoft_Dynamics_Commerce_Runtime_AggregateCommunicationError',\n 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartLinesAggregateError'\n ];\n\n public static MICROSOFT_DYNAMICS_SERVER_INTERNAL_ERROR: string = 'Microsoft_Dynamics_Internal_Server_Error';\n\n public static isAggregatedErrorResourceId(errorResourceId: string): boolean {\n return ErrorHelper.AGGREGATED_ERROR_RESOUCEIDS.indexOf(errorResourceId) !== -1;\n }\n\n /**\n * Map response status code to error.\n *\n * @param {any} Error returned by retail server call.\n */\n public static MapResponseStatusCodeToError(errorMessage: string, statusCode: number, err?: any): ProxyError {\n let errorCode = '';\n let canRetry = false;\n\n switch (statusCode) {\n case 400:\n errorCode = ErrorTypeEnum.BAD_REQUEST;\n break;\n case 401:\n errorCode = ErrorTypeEnum.NOT_AUTHORIZIED;\n break;\n case 403:\n errorCode = ErrorTypeEnum.FORBIDDEN;\n break;\n case 412:\n errorCode = ErrorTypeEnum.PRECONDITION_FAILED;\n break;\n case 503:\n errorCode = ErrorTypeEnum.SERVICE_UNAVAILABLE;\n canRetry = true;\n break;\n case 500:\n default:\n errorCode = ErrorTypeEnum.SERVER_ERROR;\n errorMessage = 'The server error format is not supported or it does not have enough information.';\n\n // Temporary until the fix for Bug 681427 goes in\n // If no orders were found, than an error did not occur\n if (err && err.response && err.response.body && err.response.requestUri) {\n if (err.response.requestUri.indexOf('GetOrderByReceiptId') > -1) {\n if (err.response.body.indexOf('No orders were found') > -1) {\n errorMessage = ErrorTypeEnum.RETURN_NO_ORDERS_FOUND;\n }\n }\n }\n }\n\n if (errorMessage && errorMessage.toUpperCase() === 'TIMEOUT') {\n errorCode = ErrorTypeEnum.SERVER_TIMEOUT;\n }\n\n return new ProxyError(errorCode, errorMessage || EMPTY, EMPTY, canRetry, err);\n }\n\n /**\n * Checks whether all the provided errors are retryable. If no error code is provided or an error is undefined,\n * then the errors will be treated as not retryable.\n *\n * @return {boolean} True if the error codes are retryable, false if the error codes are not retryable or not defined\n */\n public static isRetryable(errors: ProxyError[]): boolean {\n const numErrors: number = !errors ? 0 : errors.length;\n let isRetryable: boolean = numErrors > 0;\n for (let i: number = 0; i < numErrors; i++) {\n if (errors[i]) {\n isRetryable = isRetryable && errors[i].CanRetry;\n } else {\n isRetryable = false;\n }\n }\n\n return isRetryable;\n }\n\n /**\n * Gets a string with all error codes.\n * @param {ProxyError[]} errors the error collection.\n * @return {string} a formated string containing all error codes.\n */\n public static getErrorResourceIds(errors: ProxyError[]): string {\n let result: string = '';\n\n if (hasElements(errors)) {\n const errorResourceIds: string[] = [];\n for (const error of errors) {\n errorResourceIds.push(error.ErrorCode);\n }\n\n result = errorResourceIds.join(', ');\n }\n\n return result;\n }\n\n /**\n * Gets a string with all error messages.\n * @param {ProxyError[]} errors the error collection.\n * @return {string} a formated string containing all error messages.\n */\n public static getErrorMessages(errors: ProxyError[]): string {\n let result: string = '';\n\n if (hasElements(errors)) {\n const errorResourceIds: string[] = [];\n for (const error of errors) {\n errorResourceIds.push(error.LocalizedErrorMessage);\n }\n\n result = errorResourceIds.join(', ');\n }\n\n return result;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CommerceException, DataValidationException, DataValidationFailure } from '../Entities/CommerceTypes.g';\nimport { EMPTY, hasElements } from '../extensions/StringExtensions';\nimport { genericWarning, Tracer } from '../logging';\nimport { ErrorTypeEnum, ErrorHelper } from './ErrorHelper';\nimport { ProxyError } from './ProxyError';\nimport { ICallerContext } from './../Interfaces';\nimport { isOboRequest } from './../externals/helper';\n\n/**\n * Error parser class.\n */\nexport class ErrorParser {\n private static DataValidationExceptionType: string = 'Microsoft.Dynamics.Commerce.Runtime.DataValidationException';\n private static CartValidationExceptionType: string = 'Microsoft.Dynamics.Commerce.Runtime.CartValidationException';\n private static StorageExceptionType: string = 'Microsoft.Dynamics.Commerce.Runtime.StorageException';\n\n /**\n * Parses an error message.\n *\n * @param {any} error The error message.\n * @return {ProxyError[]} The collection of error messages.\n */\n public static parseErrorMessage(error: any, callerContext?: ICallerContext): ProxyError[] {\n const response = error.response;\n let errors: ProxyError[] = [];\n const isObo = callerContext ? isOboRequest(callerContext) : false;\n if (response) {\n let handled = true;\n Tracer.Information(`Server response status code is '${response.statusCode}'`);\n switch (response.statusCode) {\n case 306: // Custom - Redirection\n const redirectUrl = response.headers['Location'];\n error.redirectUrl = redirectUrl;\n errors = [new ProxyError(ErrorTypeEnum.RETAIL_SERVER_REDIRECT_ERROR, response.statusText, EMPTY, false, error)];\n break;\n\n case 401: // Unauthorized (Generally Expired Token)\n if (process.env.CURRENT_ENVIRONMENT === 'web') {\n const redirectCountQueryString = 'rdc';\n const noRedirectQueryString = 'noredirect';\n try {\n const currentUrl = new URL(location.href);\n if (currentUrl.searchParams.get(noRedirectQueryString)) {\n break;\n }\n if (isObo) {\n break;\n }\n const rdc = parseInt(currentUrl.searchParams.get(redirectCountQueryString), 10) || 0;\n if (rdc && rdc >= 3) {\n break;\n }\n currentUrl.searchParams.set(redirectCountQueryString, `${rdc + 1}`);\n location.href = currentUrl.href;\n } catch (e) {\n break;\n }\n }\n\n break;\n\n case 408: // Request Timeout\n errors = [new ProxyError(ErrorTypeEnum.SERVER_TIMEOUT, response.statusText, EMPTY, false, error)];\n break;\n\n case 0: // WWAHost reports status code as 0, If server is unreachable.\n case 502: // Bad Gateway\n case 503: // Service Unavailable\n case 504: // Gateway timeout\n errors = [new ProxyError(ErrorTypeEnum.SERVICE_UNAVAILABLE, response.statusText, EMPTY, false, error)];\n break;\n\n default:\n handled = false;\n }\n\n if (!handled) {\n errors = ErrorParser.parseError(error);\n }\n }\n\n // If we couldn't create any error object from error message, add error parsing failure\n if (!errors || !errors.length) {\n errors = [new ProxyError(ErrorTypeEnum.SERVER_ERROR, 'Could not parse error message sent by the server.', EMPTY, false, error)];\n }\n\n return errors;\n }\n\n /**\n * Parses an error message sent from Hardware station.\n *\n * @param {any} error The error message.\n * @retunrs {ProxyError[]} The collection of error messages.\n */\n public static parseHardwareStationErrorMessage(error: any): ProxyError[] {\n let errors: ProxyError[] = [];\n\n if (error) {\n try {\n const response = error.responseText;\n\n if (response) {\n const jsonResponse = JSON.parse(response);\n\n // Parse errors in json format\n if (jsonResponse) {\n errors = [\n new ProxyError(\n jsonResponse.ErrorResourceId ? jsonResponse.ErrorResourceId : ErrorTypeEnum.SERVER_ERROR,\n jsonResponse.Message || '',\n EMPTY,\n false,\n error\n )\n ];\n } else {\n // If not in json, we cannot parse it\n errors = [\n new ProxyError(\n ErrorTypeEnum.SERVER_ERROR,\n 'The value of Content-Type on server response is not supported.',\n EMPTY,\n false,\n error\n )\n ];\n }\n } else {\n // In case we don't have a body, we don't know the error message but from http status\n errors = [ErrorHelper.MapResponseStatusCodeToError(error.statusText, error.status, error)];\n }\n } catch (ex) {\n const errorMessage: string = `parseHardwareStationErrorMessage: Failed parse error message '${ex.message}'.`;\n Tracer.Error(errorMessage, ex);\n }\n }\n\n // If we couldn't create any error object from error message, add error parsing failure\n if (!errors || !errors.length) {\n errors = [new ProxyError(ErrorTypeEnum.SERVER_ERROR, 'Could not parse error message sent by the server.', EMPTY, false, error)];\n }\n\n return errors;\n }\n\n public static parseJSONError(errorString: string, errorResponse?: any): ProxyError[] {\n let commerceErrors: ProxyError[] = [];\n\n try {\n const odataError: any = JSON.parse(errorString);\n odataError.CorrelationId = errorResponse.data.CorrelationId;\n\n // assign parsed data to errorResponse\n errorResponse.data = odataError;\n\n // due to odata json format limitation, a collection of errors is provided in the message field\n const localizedMessage: string = odataError.LocalizedMessage;\n const exceptionType: string = odataError.ErrorResourceId;\n\n if (exceptionType === ErrorTypeEnum.MICROSOFT_DYNAMICS_SERVER_INTERNAL_ERROR) {\n commerceErrors = [\n new ProxyError(\n ErrorTypeEnum.MICROSOFT_DYNAMICS_SERVER_INTERNAL_ERROR,\n localizedMessage || 'Server failed with uncaught exception. Please report this failure.',\n localizedMessage,\n false,\n errorResponse\n )\n ];\n } else if (localizedMessage != null && exceptionType != null) {\n commerceErrors = ErrorParser.convertExceptionToErrors(odataError, exceptionType, errorResponse);\n } else {\n throw new Error('Server exception is not in expected format.');\n }\n } catch (ex) {\n const errorMessage: string =\n 'DataServiceRequest::parseJSONError: Invalid json format from server. It was not possible to parse error message. {0}';\n Tracer.Error(errorMessage, ex);\n }\n\n if (!hasElements(commerceErrors)) {\n commerceErrors = [\n new ProxyError(\n ErrorTypeEnum.GENERICERRORMESSAGE,\n 'Could not parse error message from server. Possible invalid OData request, please check your request.',\n EMPTY,\n false,\n errorResponse\n )\n ];\n }\n\n return commerceErrors;\n }\n\n private static convertExceptionToErrors(serverException: CommerceException, exceptionType: string, errorResponse: any): ProxyError[] {\n let errors: ProxyError[] = [];\n\n switch (exceptionType) {\n // CartValidationExceptionType extends DataValidationExceptionType\n case ErrorParser.DataValidationExceptionType:\n case ErrorParser.CartValidationExceptionType:\n const dataValidation: DataValidationException = serverException as DataValidationException;\n // json is in odata format, array has elements inside result member\n errors = ErrorParser.getErrorsFromDataValidationFailures(dataValidation.ValidationResults as any);\n errors.push(\n new ProxyError(\n dataValidation.ErrorResourceId || ErrorTypeEnum.SERVER_ERROR,\n EMPTY,\n dataValidation.LocalizedMessage,\n false,\n errorResponse\n )\n );\n break;\n\n case ErrorParser.StorageExceptionType:\n errors.push(\n new ProxyError(ErrorTypeEnum.SERVICE_UNAVAILABLE, EMPTY, serverException.LocalizedMessage, false, errorResponse)\n );\n break;\n }\n\n if (errors.length === 0) {\n const error: ProxyError = new ProxyError(\n serverException.ErrorResourceId || ErrorTypeEnum.SERVER_ERROR,\n EMPTY,\n serverException.LocalizedMessage,\n false,\n errorResponse\n );\n error.commerceException = serverException;\n errors.push(error);\n }\n\n return errors;\n }\n\n private static getErrorsFromDataValidationFailures(failures: DataValidationFailure[]): ProxyError[] {\n const errors: ProxyError[] = [];\n failures = failures || [];\n\n for (const failure of failures) {\n errors.push(\n new ProxyError(\n failure.ErrorResourceId || ErrorTypeEnum.SERVER_ERROR,\n failure.ErrorContext || '',\n failure.LocalizedMessage,\n false,\n {}\n )\n );\n }\n\n return errors;\n }\n\n /**\n * Parses an error to get the error code and error message.\n *\n * @param {any} error The error message.\n * @retunrs {ProxyError[]} The collection of error messages.\n */\n private static parseError(error: any): ProxyError[] {\n const response = error.response;\n let errors: ProxyError[] = [];\n if (response.body && response.data) {\n // If we have a response body\n const contentType: string = (response.headers && (response.headers['Content-Type'] || response.headers['content-type'])) || '';\n const bodyString: string = response.data.Exception;\n // Parse errors in json format\n if (contentType.toLowerCase().indexOf('application/json') !== -1) {\n errors = ErrorParser.parseJSONError(bodyString, error.response);\n } else {\n const message: string = `Server error has been received with unsupported content type: '${contentType}'.`;\n genericWarning(message);\n }\n }\n // if we couldn't parse the errors from the body, we can only rely on status text and status code\n if (!hasElements(errors)) {\n // In case we don't have a body, we don't know the error message but from http status code\n errors = [ErrorHelper.MapResponseStatusCodeToError(response.statusText, response.statusCode, error)];\n }\n return errors;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// Following reference is added to fix the build dependency between CommerceContxt and DataServiceQuery.\n// This will eventually be moved to CommerceContext.ts when MPOS proxy and Commerce Proxy are merged.\nexport class ProxyErrorSDK extends Error {\n public errorCode: string;\n public errorMessage: string;\n public localizedErrorMessage: string = '';\n public canRetry: boolean = false;\n public commerceException: any;\n public formatData: any[] = [];\n public requestUri: any;\n public data: any;\n public statusCode: any;\n\n constructor(\n errorCode: string,\n errorMessage: string,\n canRetry: boolean\n ) {\n super();\n this.name = errorCode;\n this.message = errorMessage;\n this.errorCode = errorCode;\n this.errorMessage = errorMessage;\n this.canRetry = canRetry;\n Object.setPrototypeOf(this, ProxyErrorSDK.prototype);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// Following reference is added to fix the build dependency between CommerceContxt and DataServiceQuery.\n// This will eventually be moved to CommerceContext.ts when MPOS proxy and Commerce Proxy are merged.\n\nimport { ProxyErrorSDK } from './ProxyErrorSDK';\n\n'use strict';\n\n/**\n * Class for representing an error.\n */\nexport class ProxyError {\n private _errorCode: string;\n private _errorMessage: string;\n private _localizedErrorMessage: string;\n private _canRetry: boolean = false;\n private _commerceException: any;\n private _formatData: any[];\n private _extraData: any;\n\n constructor(errorCode: string, errorMessage: string, localizedErrorMessage, canRetry: boolean, extraData: any, ...formatData: any[]) {\n this._errorCode = errorCode;\n this._errorMessage = errorMessage;\n this._localizedErrorMessage = localizedErrorMessage;\n this._canRetry = canRetry;\n this._commerceException = null;\n this._formatData = formatData;\n if (extraData && typeof extraData == 'object' && extraData.request) {\n // Remove sensitive data (EUII) so that it doesn't get logged to AppInsights\n extraData.request.headers = {};\n extraData.request.data = {};\n extraData.request.body = {};\n }\n this._extraData = extraData;\n }\n\n /**\n * Takes a proxy error and returns a proper JS error version of it\n * @param proxyError The proxyError\n */\n public static toError(proxyError: ProxyError): Error {\n const errorName = proxyError.ErrorCode || 'Proxy Error';\n const errorMessage = proxyError.ErrorMessage || proxyError.LocalizedErrorMessage;\n const e = new ProxyErrorSDK(errorName, errorMessage, proxyError.CanRetry);\n\n // Assign extra error details to error.\n // ts-ignoring as the standard error contract only supports name and message\n if (proxyError.extraData) {\n e.requestUri = proxyError.extraData.requestUri;\n\n e.data = proxyError.extraData.data;\n\n e.statusCode = proxyError.extraData.statusCode;\n }\n\n return e;\n }\n\n /**\n * Gets the commerce exception that caused this error.\n *\n * @return {any} The commerce exception.\n */\n public get commerceException(): any {\n return this._commerceException;\n }\n\n /**\n * Sets the commerce exception that caused this error.\n *\n * @param {any} exception The commerce exception.\n */\n public set commerceException(exception: any) {\n this._commerceException = exception;\n }\n\n /**\n * Gets the error code.\n *\n * @return {string} The error code.\n */\n public get ErrorCode(): string {\n return this._errorCode;\n }\n\n /**\n * Gets the error message.\n *\n * @return {string} The error message.\n */\n public get ErrorMessage(): string {\n return this._errorMessage;\n }\n\n /**\n * Gets the localized error message.\n *\n * @return {string} The localized error message.\n */\n public get LocalizedErrorMessage(): string {\n return this._localizedErrorMessage;\n }\n\n /**\n * Gets the format data used on formatted error messages.\n *\n * @return {any[]} The format data.\n */\n public get formatData(): any[] {\n return this._formatData;\n }\n\n /**\n * Gets the additional information the might be supplied by the error.\n *\n * @return {any} The extra data.\n */\n public get extraData(): any {\n return this._extraData;\n }\n\n /**\n * Gets the error title. Defaults to the resource string string_29004 for the error title if\n * no error title is mapped for the error.\n */\n public get ErrorTitleResourceId(): string {\n const errorTitleResourceId = 'string_29004'; // Error string: There is a problem with the server\n return errorTitleResourceId;\n }\n\n /**\n * Gets whether the action that generated the error can be retried.\n *\n * @return {string} Whether the action that generated the error can be retried.\n */\n public get CanRetry(): boolean {\n return this._canRetry;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// TODO - refactor to incorporate inbuilt JS extension method\n// TODO - integrate Trace.error\n\nexport const EMPTY = '';\n\nexport function convertToString(obj: any, accumulator: string[] = [], depth: number = 0): string {\n if (!obj) {\n return null;\n }\n\n if (typeof obj === 'string') {\n return obj;\n }\n\n if (typeof obj !== 'object') {\n return obj.toString();\n }\n\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n const value = obj[prop];\n const stringifyValue = convertToString(value, accumulator, depth + 1);\n if (stringifyValue) {\n if (accumulator.length > 0 && depth === 0) {\n accumulator.push('&');\n }\n accumulator.push(prop);\n accumulator.push(typeof value === 'object' ? '.' : ':');\n accumulator.push(stringifyValue);\n }\n }\n }\n\n if (depth === 0) {\n return accumulator.join(EMPTY);\n }\n}\n\n/**\n * Verifies whether the object array has elements.\n *\n * @param {any[]} array The array.\n * @return {boolean} True if the object has elements, false otherwise.\n */\nexport function hasElements(array?: any[]): boolean {\n return !!array && array.length > 0;\n}\n\n/**\n * Verifies whether the string is empty or whitespace, but not null.\n *\n * @param {string} object The object.\n * @return {boolean} True if the object is empty or whitespace, false otherwise.\n */\nexport function isObjectNotEmptyOrNull(value: object): boolean {\n return value && typeof value === 'object' && Object.keys(value).length > 0;\n}\n\n/**\n * Verifies whether the string is empty, but not null.\n *\n * @param {string} object The object.\n * @return {boolean} True if the object is empty, false otherwise.\n */\nexport function isEmpty(object: string): boolean {\n if (object && typeof object !== 'string') {\n // Tracer.Error(\"StringExtensions.isEmpty() has received input parameter not of type string.\");\n }\n return object != null && object.length === 0;\n}\n\n/**\n * Verifies whether the string is empty or whitespace, but not null.\n *\n * @param {string} object The object.\n * @return {boolean} True if the object is empty or whitespace, false otherwise.\n */\nexport function isEmptyOrWhitespace(object: string): boolean {\n if (object && typeof object !== 'string') {\n // Tracer.Error(\"StringExtensions.isEmptyOrWhitespace() has received input parameter not of type string.\");\n }\n if (object) {\n // Make sure object is of type string\n object = object.toString();\n\n return typeof object.trim === 'function' && (object.trim() || '').length === 0;\n }\n return false;\n}\n\n/**\n * Verifies whether the string is null or whitespace.\n *\n * @param {string} object The object.\n * @return {boolean} True if the object is null or whitespace, false otherwise.\n */\nexport function isNullOrWhitespace(object: string): boolean {\n if (object && typeof object !== 'string') {\n // Tracer.Error(\"StringExtensions.isNullOrWhitespace() has received input parameter not of type string.\");\n }\n let returnValue = true;\n try {\n returnValue = !object;\n if (!returnValue) {\n // Make sure object is of type string\n object = object.toString();\n returnValue = object.trim().length === 0;\n }\n } catch (err) {\n // Commerce.Proxy.Tracer.Error(\"StringExtensions.isNullOrWhitespace() caught exception = {0}\", err.message);\n }\n\n return returnValue;\n}\n\n/**\n * Pad left with padString until the required length is reached.\n */\nexport function padLeft(object: string, padString: string, length: number): string {\n if (object && typeof object !== 'string') {\n // Tracer.Error(\"StringExtensions.padLeft() has received input parameter not of type string.\");\n }\n\n if (!padString || !object) {\n return object;\n }\n\n while (object.length < length) {\n object = padString + object;\n }\n return object;\n}\n\n/**\n * Pad right with padString until the required length is reached.\n */\nexport function padRight(object: string, padString: string, length: number): string {\n if (object && typeof object !== 'string') {\n // Tracer.Error(\"StringExtensions.padRight() has received input parameter not of type string.\");\n }\n\n if (!padString || !object) {\n return object;\n }\n\n while (object.length < length) {\n object += padString;\n }\n return object;\n}\n\n/**\n * Basic C# like string format function.\n */\nexport function format(object: string, ...params: any[]): string {\n if (object && typeof object !== 'string') {\n // Tracer.Error(\"StringExtensions.isEmptyOrWhitespace has received input parameter not of type string.\");\n }\n\n if (isNullOrWhitespace(object)) {\n return object;\n }\n\n if (params == null) {\n throw new Error('StringExtensions::format Invalid parameter (params) cannot be null.');\n }\n\n for (let index = 0; index < params.length; index++) {\n if (params[index] == null) {\n throw new Error('StringExtensions::format Invalid parameter (at index ' + index + ') cannot be null or undefined.');\n }\n\n // escape '$' to avoid '$0' issue, '$$$$' means '$$' escaped\n const param = params[index].toString().replace(/\\$/gi, '$$$$');\n const regexp = new RegExp('\\\\{' + index + '\\\\}', 'gi');\n object = object.replace(regexp, param);\n }\n\n return object;\n}\n\n/**\n * Returns an ordinal to indicate the ordering of the strings\n * -1: This object is less than comparison object\n * 0: This object is equal to the comparison object\n * 1: This object is greater than the comparison object\n */\nexport function compare(object: string, comparisonObject: string, ignoreCase?: boolean): number {\n if (!object && !comparisonObject) {\n return 0;\n } else if (!object) {\n return -1;\n } else if (!comparisonObject) {\n return 1;\n }\n\n const val1: string = ignoreCase ? object.toLowerCase() : object;\n const val2: string = ignoreCase ? comparisonObject.toLowerCase() : comparisonObject;\n\n return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;\n}\n\n/**\n * Replaces new line character with
for display.\n */\nexport function replaceNewLineWithBr(text: string) {\n if (text) {\n return replaceAll(text, '\\n', '
');\n }\n\n return text;\n}\n\n/**\n * Replaces all instances of @txtToReplace\n */\nexport function replaceAll(txt, txtToReplace, valueToReplaceWith) {\n return txt.replace(new RegExp(txtToReplace, 'g'), valueToReplaceWith);\n}\n\n/**\n * Escapes single quote to be send as part of URLs.\n */\nexport function escapeSingleQuote(text: string) {\n return text.replace(/(')/g, '\\'$1');\n}\n\n/**\n * Removes the trailing slashes from the URI.\n *\n * @param {string} uri The URI to clean.\n * @return {string} The uri without trailing slashes.\n */\nexport function CleanUri(uri: string): string {\n if (isNullOrWhitespace(uri)) {\n return EMPTY;\n }\n\n // the cutoff index for the string\n let cutoffIndex = uri.length - 1;\n\n while (cutoffIndex >= 0 && (uri[cutoffIndex] === '/' || uri[cutoffIndex] === '\\\\')) {\n --cutoffIndex;\n }\n\n // if it ever becomes negative, cutoffIndex + 1 = 0\n return uri.substr(0, cutoffIndex + 1);\n}\n\n/**\n * Determines whether the end of string matches a specified string.\n *\n * @param {string} str: The string to search in.\n * @param {string} suffix: The string to compare to the substring at the end of str.\n * @param {boolean} caseSensitive: Determines if the comparison case sensitive (false, by default)\n * @return {boolean} true if suffix matches the end of str; otherwise, false.\n */\nexport function endsWith(str: string, suffix: string, caseSensitive: boolean = false): boolean {\n if (!str || !suffix) {\n return false;\n }\n if (suffix.length > str.length) {\n return false;\n }\n\n const originalString: string = caseSensitive ? str : str.toLowerCase();\n const subString: string = caseSensitive ? suffix : suffix.toLowerCase();\n return originalString.indexOf(subString, originalString.length - subString.length) !== -1;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport axios from 'axios';\nimport { jsonHandler } from './handler';\n\n/**\n * OData request interface.\n */\nexport interface IODataRequest {\n /**\n * OData endpoint URI\n */\n requestUri: string;\n\n /**\n * HTTP method (GET, POST, PUT, DELETE)\n */\n method: string;\n\n /**\n * Payload of the request (in intermediate format)\n */\n data: any;\n\n /**\n * Object that contains HTTP headers as name value pairs\n */\n headers?: Object;\n\n /**\n * (Optional) Username to send for BASIC authentication\n */\n user?: string;\n\n /**\n * (Optional) Password to send for BASIC authentication\n */\n password?: string;\n\n /**\n * (Optional) Whether or not to use cross domain cookies.\n */\n useCrossDomainCookies?: boolean;\n}\n\nconst normalHeaders = {\n accept: 'Accept',\n 'content-type': 'Content-Type',\n 'odata-version': 'OData-Version',\n 'odata-maxversion': 'OData-MaxVersion'\n};\n\nconst isAbsoluteUrl = url => {\n /// Checks whether the specified URL is an absolute URL.\n /// URL to check.\n /// true if the url is an absolute URL; false otherwise.\n\n return url.indexOf('http://') === 0 || url.indexOf('https://') === 0 || url.indexOf('file://') === 0;\n};\n\nconst normalizeHeaders = headers => {\n /// Normalizes headers so they can be found with consistent casing.\n /// Dictionary of name/value pairs.\n\n for (const name in headers) {\n if (headers.hasOwnProperty(name)) {\n const lowerName = name.toLowerCase();\n const normalName = normalHeaders[lowerName];\n if (normalName && name !== normalName) {\n const val = headers[name];\n delete headers[name];\n headers[normalName] = val;\n }\n }\n }\n};\n\nconst defaultHttpClient = {\n callbackParameterName: '$callback',\n formatQueryString: '$format=json',\n enableJsonpCallback: false,\n\n request(request, success, error) {\n /// Performs a network request.\n /// Request description.\n /// Success callback with the response object.\n /// Error callback with an error object.\n /// Object with an 'abort' method for the operation.\n const result = { abort: null, handleTimeout: null };\n\n const cancelToken = axios.CancelToken.source();\n\n let done = false;\n result.abort = () => {\n if (done) {\n return;\n }\n done = true;\n cancelToken.cancel('Request aborted');\n error({ message: 'Request aborted' });\n };\n\n request.handleTimeout = () => {\n if (!done) {\n done = true;\n cancelToken.cancel('Request aborted');\n error({ message: 'Request timed out' });\n }\n };\n\n const url = request.requestUri;\n const enableJsonpCallback = request.enableJsonpCallback || false;\n if (!enableJsonpCallback || !isAbsoluteUrl(url)) {\n let authenticationCreds;\n if (request.user) {\n authenticationCreds = {\n username: request.user,\n password: request.password || ''\n };\n }\n // console.log('\\r\\nDataServiceRequest - \\r\\n\\n', request);\n let axiosTimeout = request.timeoutMS || 10000;\n // check if on client side.\n if (process.env.CURRENT_ENVIRONMENT === 'web') {\n // @ts-ignore -using client window object\n if (typeof window != undefined && window.___initialData___) {\n // @ts-ignore -using client window object\n if (window.___initialData___._clientPlatformSetting?.clientSideDataActionTimeoutInMs) {\n // @ts-ignore -using client window object\n axiosTimeout = window.___initialData___._clientPlatformSetting.clientSideDataActionTimeoutInMs;\n }\n }\n } else {\n const serverSideDataActionTimeoutInMs = process.env.serverSideDataActionTimeoutInMs;\n axiosTimeout =\n serverSideDataActionTimeoutInMs && serverSideDataActionTimeoutInMs !== ''\n ? Number(serverSideDataActionTimeoutInMs)\n : 4000;\n }\n axios\n .request({\n method: request.method || 'get',\n url,\n data: request.body,\n auth: authenticationCreds,\n headers: request.headers || {},\n timeout: axiosTimeout,\n cancelToken: cancelToken.token\n })\n .then(axiosResponse => {\n const response = {\n requestUri: url,\n statusCode: axiosResponse.status,\n statusText: axiosResponse.statusText,\n headers: axiosResponse.headers,\n body: axiosResponse.data\n };\n done = true;\n success(response);\n })\n .catch(axiosError => {\n const response = {\n requestUri: url,\n statusCode: axiosError.response ? parseInt(axiosError.response.status, 10) : 0,\n statusText: axiosError.name,\n body: axiosError.message,\n data: axiosError.response ? axiosError.response.data : {},\n headers: axiosError.response ? axiosError.response.headers : {}\n };\n error({ message: 'HTTP request failed', request, response });\n });\n } else {\n error({\n message: 'Only requests to non-absolute urls are supported at this time without JSONP callback'\n });\n }\n return result;\n }\n};\n\nconst prepareRequest = (request, handler, context) => {\n /// Prepares a request object so that it can be sent through the network.\n /// Object that represents the request to be sent.\n /// Handler for data serialization\n /// Context used for preparing the request\n\n // Default to GET if no method has been specified.\n if (!request.method) {\n request.method = 'GET';\n }\n\n if (!request.headers) {\n request.headers = {};\n } else {\n normalizeHeaders(request.headers);\n }\n\n if (request.headers.Accept === undefined) {\n request.headers.Accept = handler.accept;\n }\n\n if (request.data && request.body === undefined) {\n handler.write(request, context);\n }\n\n if (!request.headers['OData-MaxVersion']) {\n request.headers['OData-MaxVersion'] = handler.maxDataServiceVersion || '4.0';\n }\n};\n\nconst invokeRequest = (request, success, error, handler, httpClient, context) => {\n /// Sends a request containing OData payload to a server.\n /// Object that represents the request to be sent..\n /// Callback for a successful read operation.\n /// Callback for handling errors.\n /// Handler for data serialization.\n /// HTTP client layer.\n /// Context used for processing the request\n\n return httpClient.request(\n request,\n response => {\n try {\n if (response.headers) {\n normalizeHeaders(response.headers);\n }\n\n if (response.data === undefined && response.statusCode !== 204) {\n if (!handler.read(response, context)) {\n throw { message: 'Handler could not parse response.' };\n }\n }\n } catch (err) {\n if (err.request === undefined) {\n err.request = request;\n }\n if (err.response === undefined) {\n err.response = response;\n }\n error(err);\n return;\n }\n\n success(response.data, response);\n },\n error\n );\n};\n\nexport const ODataHttpRequest = (request, success, error) => {\n /// Sends a request containing OData payload to a server.\n /// Object that represents the request to be sent.\n /// Callback for a successful read operation.\n /// Callback for handling errors.\n /// Handler for data serialization.\n /// HTTP client layer.\n /// Conceptual metadata for this request.\n\n success = success || (data => process.env.NODE_ENV !== 'production' && console.log(JSON.stringify(data)));\n error =\n error ||\n (err => {\n throw err;\n });\n\n // Augment the request with additional defaults.\n request.recognizeDates = request.recognizeDates || false;\n request.useJsonLight = request.useJsonLight || false;\n request.inferJsonLightFeedAsObject = request.inferJsonLightFeedAsObject || false;\n request.callbackParameterName = request.callbackParameterName || defaultHttpClient.callbackParameterName;\n request.formatQueryString = request.formatQueryString || defaultHttpClient.formatQueryString;\n request.enableJsonpCallback = request.enableJsonpCallback || defaultHttpClient.enableJsonpCallback;\n\n // Create the base context for read/write operations, also specifying complete settings.\n const context = {\n recognizeDates: request.recognizeDates,\n callbackParameterName: request.callbackParameterName,\n formatQueryString: request.formatQueryString,\n enableJsonpCallback: request.enableJsonpCallback,\n useJsonLight: request.useJsonLight,\n inferJsonLightFeedAsObject: request.inferJsonLightFeedAsObject\n };\n\n try {\n prepareRequest(request, jsonHandler, context);\n return invokeRequest(request, success, error, jsonHandler, defaultHttpClient, context);\n } catch (err) {\n error(err);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport const MAX_DATA_SERVICE_VERSION = '4.0';\nexport const jsonMediaType = 'application/json';\n\nconst CONTENT_TYPE_HEADER_NAME = 'Content-Type';\nconst ODATA_VERSION = 'OData-Version';\nconst ODATA_MAX_VERSION = 'OData-MaxVersion';\n\nconst contentType = str => {\n /// Parses a string into an object with media type and properties.\n /// String with media type to parse.\n /// null if the string is empty; an object with 'mediaType' and a 'properties' dictionary otherwise.\n\n if (!str) {\n return null;\n }\n\n const contentTypeParts = str.split(';');\n const properties = {};\n\n let i;\n let len;\n for (i = 1, len = contentTypeParts.length; i < len; i++) {\n const contentTypeParams = contentTypeParts[i].split('=');\n properties[contentTypeParams[0].trim()] = contentTypeParams[1];\n }\n\n return { mediaType: contentTypeParts[0].trim(), properties };\n};\n\nexport const jsonContentType = contentType(jsonMediaType);\n\nconst contentTypeToString = contentTypeObj => {\n /// Serializes an object with media type and properties dictionary into a string.\n /// Object with media type and properties dictionary to serialize.\n /// String representation of the media type object; undefined if contentType is null or undefined.\n\n if (!contentTypeObj) {\n return undefined;\n }\n\n let result = contentTypeObj.mediaType;\n for (const property in contentTypeObj.properties) {\n if (contentTypeObj.properties.hasOwnProperty(property)) {\n result += ';' + property + '=' + contentTypeObj.properties[property];\n }\n }\n return result;\n};\n\nconst createReadWriteContext = (contentTypeStr, dataServiceVersion, context, handler) => {\n /// Creates an object that is going to be used as the context for the handler's parser and serializer.\n /// Object with media type and properties dictionary.\n /// String indicating the version of the protocol to use.\n /// Operation context.\n /// Handler object that is processing a resquest or response.\n /// Context object.\n\n // First create a clone\n const rwContext = { ...context };\n\n // And then override with provided parameters\n rwContext['contentType'] = contentTypeStr || jsonContentType;\n rwContext['dataServiceVersion'] = dataServiceVersion;\n rwContext['handler'] = handler;\n\n return rwContext;\n};\n\nconst versionRE = /^\\s?(\\d+\\.\\d+);?.*$/;\nconst getDataServiceVersion = headerVersion => {\n /// Gets the value of the OData-Version header from a request or response.\n /// Object representing a request or a response.\n /// Data service version; undefined if the header cannot be found.\n\n if (headerVersion) {\n const matches = versionRE.exec(headerVersion);\n if (matches && matches.length) {\n return matches[1];\n }\n }\n};\n\nconst handlerRead = (handler, response, context) => {\n /// Invokes the parser associated with a handler for reading the payload of a HTTP response.\n /// Handler object that is processing the response.\n /// Parser function that will process the response payload.\n /// HTTP response whose payload is going to be processed.\n /// Object used as the context for processing the response.\n /// True if the handler processed the response payload and the response.data property was set; false otherwise.\n\n if (!response || !response.headers) {\n return false;\n }\n\n const cType = contentType(response.headers[CONTENT_TYPE_HEADER_NAME]);\n const version = getDataServiceVersion(response) || '';\n const body = response.body;\n\n if (!body) {\n return false;\n }\n\n if (jsonMediaType.indexOf(cType.mediaType) >= 0) {\n const readContext = createReadWriteContext(cType, version, context, handler);\n readContext.response = response;\n response.data = typeof body === 'string' ? JSON.parse(body) : body;\n return response.data !== undefined;\n }\n\n return false;\n};\n\nconst maxVersion = (left, right) => {\n /// Compares to version strings and returns the higher one.\n /// Version string in the form \"major.minor.rev\"\n /// Version string in the form \"major.minor.rev\"\n /// The higher version string.\n\n if (left === right) {\n return left;\n }\n\n const leftParts = left.split('.');\n const rightParts = right.split('.');\n\n const len = leftParts.length >= rightParts.length ? leftParts.length : rightParts.length;\n\n for (let i = 0; i < len; i++) {\n const leftVersion = leftParts[i] && parseInt(leftParts[i], 10);\n const rightVersion = rightParts[i] && parseInt(rightParts[i], 10);\n if (leftVersion > rightVersion) {\n return left;\n }\n if (leftVersion < rightVersion) {\n return right;\n }\n }\n};\n\nconst handlerWrite = (handler, request, context) => {\n /// Invokes the serializer associated with a handler for generating the payload of a HTTP request.\n /// Handler object that is processing the request.\n /// Serializer function that will generate the request payload.\n /// HTTP request whose payload is going to be generated.\n /// Object used as the context for serializing the request.\n /// True if the handler serialized the request payload and the request.body property was set; false otherwise.\n if (!request || !request.headers) {\n return false;\n }\n\n const cType = contentType(request.headers[CONTENT_TYPE_HEADER_NAME]);\n const version = getDataServiceVersion(request.headers[ODATA_VERSION]);\n\n if (!cType || jsonMediaType.indexOf(cType.mediaType)) {\n const writeContext = createReadWriteContext(cType, version, context, handler);\n writeContext.request = request;\n request.body = request.data;\n\n if (request.body !== undefined) {\n request.headers[ODATA_VERSION] = version ? maxVersion(version, '4.0') : '4.0';\n request.headers.ContentType = request.headers[CONTENT_TYPE_HEADER_NAME] || contentTypeToString(writeContext.contentType);\n request.headers[ODATA_MAX_VERSION] = request.headers[ODATA_MAX_VERSION] || handler.maxDataServiceVersion;\n return true;\n }\n }\n\n return false;\n};\n\nexport const jsonHandler = {\n accept: jsonMediaType,\n maxDataServiceVersion: MAX_DATA_SERVICE_VERSION,\n read(response, context) {\n return handlerRead(this, response, context);\n },\n\n write(request, context) {\n return handlerWrite(this, request, context);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\nimport { ICallerContext } from './../Interfaces';\n\nconst EDM = 'Edm.';\nconst EDM_BOOLEAN = EDM + 'Boolean';\nconst EDM_BYTE = EDM + 'Byte';\nconst EDM_DATETIME = EDM + 'DateTime';\nconst EDM_DATETIMEOFFSET = EDM + 'DateTimeOffset';\nconst EDM_DECIMAL = EDM + 'Decimal';\nconst EDM_DOUBLE = EDM + 'Double';\nconst EDM_INT16 = EDM + 'Int16';\nconst EDM_INT32 = EDM + 'Int32';\nconst EDM_INT64 = EDM + 'Int64';\nconst EDM_SBYTE = EDM + 'SByte';\nconst EDM_SINGLE = EDM + 'Single';\nconst EDM_TIME = EDM + 'Time';\n\nconst OBO_REQUEST = 'isOBORequest';\n\nconst parseBool = propertyValue => {\n /// Parses a string into a boolean value.\n /// Value to parse.\n /// true if the property value is 'true'; false otherwise.\n\n if (typeof propertyValue === 'boolean') {\n return propertyValue;\n }\n\n return typeof propertyValue === 'string' && propertyValue.toLowerCase() === 'true';\n};\n\nconst formatNumberWidth = (value, width, append) => {\n /// Formats the specified value to the given width.\n /// Number to format (non-negative).\n /// Minimum width for number.\n /// Flag indicating if the value is padded at the beginning (false) or at the end (true).\n /// Text representation.\n let result = value.toString(10);\n while (result.length < width) {\n if (append) {\n result += '0';\n } else {\n result = '0' + result;\n }\n }\n\n return result;\n};\n\nconst parseTimezone = timezone => {\n /// Parses a timezone description in (+|-)nn:nn format.\n /// Timezone offset.\n /// \n /// An object with a (d)irection property of 1 for + and -1 for -,\n /// offset (h)ours and offset (m)inutes.\n /// \n\n let direction = timezone.substring(0, 1);\n direction = direction === '+' ? 1 : -1;\n\n const offsetHours = parseInt(timezone.substring(1), 10);\n const offsetMinutes = parseInt(timezone.substring(timezone.indexOf(':') + 1), 10);\n return { d: direction, h: offsetHours, m: offsetMinutes };\n};\n\n// The captured indices for this expression are:\n// 0 - complete input\n// 1 - direction\n// 2,3,4 - years, months, days\n// 5,6,7,8 - hours, minutes, seconds, miliseconds\nconst parseTimeRE = /^([+-])?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)(?:\\.(\\d+))?S)?)?/;\n\n// The captured indices for this expression are:\n// 0 - complete input\n// 1,2,3 - year with optional minus sign, month, day\n// 4,5,6 - hours, minutes, seconds\n// 7 - optional milliseconds\n// 8 - everything else (presumably offset information)\nconst parseDateTimeRE = /^(-?\\d{4,})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(.*)$/;\n\nconst getCanonicalTimezone = timezone => {\n /// Gets the canonical timezone representation.\n /// Timezone representation.\n /// An 'Z' string if the timezone is absent or 0; the timezone otherwise.\n\n return !timezone || timezone === 'Z' || timezone === '+00:00' || timezone === '-00:00' ? 'Z' : timezone;\n};\n\nconst parseDuration = duration => {\n /// Parses a string in xsd:duration format.\n /// Duration value.\n /// \n /// This method will throw an exception if the input string has a year or a month component.\n /// \n /// Object representing the time\n\n const parts = parseTimeRE.exec(duration);\n\n if (parts === null) {\n throw { message: 'Invalid duration value.' };\n }\n\n const years = parts[2] || '0';\n const months = parts[3] || '0';\n const days = parseInt(parts[4], 10) || 0;\n const hours = parseInt(parts[5], 10) || 0;\n const minutes = parseInt(parts[6], 10) || 0;\n const seconds = parseFloat(parts[7]) || 0;\n\n if (years !== '0' || months !== '0') {\n throw { message: 'Unsupported duration value.' };\n }\n\n let ms: any = parts[8];\n let ns: any = 0;\n if (!ms) {\n ms = 0;\n } else {\n if (ms.length > 7) {\n throw { message: 'Cannot parse duration value to given precision.' };\n }\n\n ns = formatNumberWidth(ms.substring(3), 4, true);\n ms = formatNumberWidth(ms.substring(0, 3), 3, true);\n\n ms = parseInt(ms, 10);\n ns = parseInt(ns, 10);\n }\n\n ms += seconds * 1000 + minutes * 60000 + hours * 3600000 + days * 86400000;\n\n if (parts[1] === '-') {\n ms = -ms;\n }\n\n const result: any = { ms, __edmType: 'Edm.Time' };\n\n if (ns) {\n result.ns = ns;\n }\n return result;\n};\n\nconst parseDateTimeOffset = (value, withOffset, nullOnError) => {\n /// Parses a string into a DateTime value.\n /// Value to parse.\n /// Whether offset is expected.\n /// The parsed value.\n\n // We cannot parse this in cases of failure to match or if offset information is specified.\n const parts = parseDateTimeRE.exec(value);\n const offset = parts ? getCanonicalTimezone(parts[8]) : null;\n\n if (!parts || (!withOffset && offset !== 'Z')) {\n if (nullOnError) {\n return null;\n }\n throw { message: 'Invalid date/time value' };\n }\n\n // Pre-parse years, account for year '0' being invalid in dateTime.\n let year = parseInt(parts[1], 10);\n if (year <= 0) {\n year++;\n }\n\n // Pre-parse optional milliseconds, fill in default. Fail if value is too precise.\n let ms: any = parts[7];\n let ns: any = 0;\n if (!ms) {\n ms = 0;\n } else {\n if (ms.length > 7) {\n if (nullOnError) {\n return null;\n }\n throw { message: 'Cannot parse date/time value to given precision.' };\n }\n\n ns = formatNumberWidth(ms.substring(3), 4, true);\n ms = formatNumberWidth(ms.substring(0, 3), 3, true);\n\n ms = parseInt(ms, 10);\n ns = parseInt(ns, 10);\n }\n\n // Pre-parse other time components and offset them if necessary.\n let hours = parseInt(parts[4], 10);\n let minutes = parseInt(parts[5], 10);\n const seconds = parseInt(parts[6], 10);\n if (offset !== 'Z') {\n // The offset is reversed to get back the UTC date, which is\n // what the API will eventually have.\n const timezone = parseTimezone(offset);\n const direction = -timezone.d;\n hours += timezone.h * direction;\n minutes += timezone.m * direction;\n }\n\n // Set the date and time separately with setFullYear, so years 0-99 aren't biased like in Date.UTC.\n const result: any = new Date();\n result.setUTCFullYear(\n year, // Year.\n parseInt(parts[2], 10) - 1, // Month (zero-based for Date.UTC and setFullYear).\n parseInt(parts[3], 10) // Date.\n );\n result.setUTCHours(hours, minutes, seconds, ms);\n\n if (isNaN(result.valueOf())) {\n if (nullOnError) {\n return null;\n }\n throw { message: 'Invalid date/time value' };\n }\n\n if (withOffset) {\n result.__edmType = 'Edm.DateTimeOffset';\n result.__offset = offset;\n }\n\n if (ns) {\n result.__ns = ns;\n }\n\n return result;\n};\n\nexport const jsonLightReadStringPropertyValue = (value, propertyType, recognizeDates) => {\n /// Convertes the value of a string property in a JSON light object to its library representation.\n /// String value to convert.\n /// Type name of the property.\n /// Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\n /// String property value in its library representation.\n\n switch (propertyType) {\n case EDM_BOOLEAN:\n return parseBool(value);\n case EDM_BYTE:\n case EDM_INT16:\n case EDM_INT32:\n case EDM_INT64:\n case EDM_SBYTE:\n return parseInt(value, 10);\n case EDM_DOUBLE:\n case EDM_SINGLE:\n case EDM_DECIMAL:\n return parseFloat(value);\n case EDM_TIME:\n return parseDuration(value);\n case EDM_DATETIME:\n const dateStr = value || '';\n const time = dateStr.substring(dateStr.indexOf('T') + 1);\n const timezoneOffsetIndex = time.indexOf('-');\n timezoneOffsetIndex === -1 ? time.indexOf('+') : timezoneOffsetIndex;\n\n if (timezoneOffsetIndex !== -1) {\n return parseDateTimeOffset(value, true, /* nullOnError */ false);\n } else {\n return parseDateTimeOffset(value, false, /* nullOnError */ false);\n }\n case EDM_DATETIMEOFFSET:\n return parseDateTimeOffset(value, true, /* nullOnError */ false);\n }\n\n if (recognizeDates) {\n return (\n parseDateTimeOffset(value, false, /* nullOnError */ true) || parseDateTimeOffset(value, true, /* nullOnError */ true) || value\n );\n }\n return value;\n};\n\n// isOBORequest representing whether current user is on behalf of or not\nexport const isOboRequest = (callerContext: ICallerContext): boolean => {\n const { user } = callerContext.requestContext;\n return user[OBO_REQUEST] || false;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum EventLevel {\n LogAlways = 0,\n Critical = 1,\n Error = 2,\n Warning = 3,\n Informational = 4,\n Verbose = 5\n}\n\nexport enum EventChannel {\n Admin = 16,\n Operational = 17,\n Analytic = 18,\n Debug = 19\n}\n\nexport interface ILoggingSink {\n writeEvent(event: Event): void;\n setSessionInfo(\n appSessionId: string,\n userSessionId: string,\n deviceId: string,\n deviceNumber: string,\n terminalId: string,\n userId: string,\n tenantId: string,\n offlineAvailability: string,\n offlineCurrentMode: string,\n screenResolution: string\n ): void;\n setInstrumentationKey(instrumentationKey: string): void;\n}\n\nexport class Utils {\n public static getParameterNames(func: Function): string[] {\n return [];\n }\n\n public static generateGuid(): string {\n return '';\n }\n\n public static emptyGuid(): string {\n return '';\n }\n}\n\nexport enum EventType {\n None = 0,\n Custom = 1,\n PageView = 2\n}\n\nexport class PageViewMetadata {\n public PageName: string;\n}\n\nexport class EventStaticMetadata {\n public Name: string;\n public Id: number;\n public Version: number;\n public Level: EventLevel;\n public LevelName: string;\n public Channel: EventChannel;\n public ChannelName: string;\n public Keywords: string[];\n public Task: string;\n public OpCode: string;\n public Message: string;\n}\n\nexport class EventCoreFields {\n public ClientTimestamp: number;\n public AppSessionId: string;\n public UserSessionId: string;\n public DeviceId: string;\n public DeviceNumber: string;\n public TerminalId: string;\n public UserId: string;\n public TenantId: string;\n public OfflineAvailability: string;\n public OfflineCurrentMode: string;\n public ScreenResolution: string;\n}\n\nexport class Event {\n public Type: EventType;\n public PageViewMetadata: PageViewMetadata;\n public StaticMetadata: EventStaticMetadata;\n public CoreFields: EventCoreFields;\n public Payload: {\n [name: string]: any;\n };\n constructor(\n type: EventType,\n appSessionId: string,\n userSessionId: string,\n deviceId: string,\n deviceNumber: string,\n terminalId: string,\n userId: string,\n tenantId: string,\n offlineAvailability: string,\n offlineCurrentMode: string,\n screenResolution: string\n ) {}\n}\n\nexport class DebuggingConsoleSink implements ILoggingSink {\n public setSessionInfo(\n appSessionId: string,\n userSessionId: string,\n deviceId: string,\n deviceNumber: string,\n terminalId: string,\n userId: string,\n tenantId: string,\n offlineAvailability: string,\n offlineCurrentMode: string\n ): void {}\n\n public setInstrumentationKey(instrumentationKey: string): void {}\n\n public writeEvent(event: Event): void {}\n}\n\nexport class LoggerBase {\n public static writeEvent(\n name: string,\n eventId: number,\n version: number,\n channel: EventChannel,\n level: EventLevel,\n keywords: string[],\n task: string,\n opCode: string,\n message: string\n ) {\n // console.log(`name: ${name}, eventId: ${eventId}, version: ${version}, channel: ${this.getEnumKeyForValue(EventChannel, channel)}`);\n // console.log(\n // `level: ${this.getEnumKeyForValue(\n // EventLevel,\n // level\n // )}, keywords: ${keywords.toString()}, task: ${task}, opCode: ${opCode}, message: ${message}`\n // );\n }\n\n public static addLoggingSink(loggingSink: ILoggingSink): void {}\n\n public static getEnumKeyForValue(enumType: any, value: number): string {\n for (const key in Object.keys(enumType)) {\n if (enumType[key] === value) {\n return key;\n }\n }\n return '';\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { EventChannel, EventLevel, ILoggingSink, LoggerBase } from './ConsoleEventWriter';\n\n/**\n * Attaches the logging sink to the LoggerBase.\n *\n * @method attachLoggingSink\n * @param sink {ILoggingSink} Sink to attach to Retail Logger.\n */\nexport function attachLoggingSink(sink: ILoggingSink) {\n LoggerBase.addLoggingSink(sink);\n}\n\nexport const modelManagersRetailServerRequestStarted = (requestId: string, requestUrl: string): void => {\n LoggerBase.writeEvent(\n 'ModelManagersRetailServerRequestStarted',\n 44004,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n \"The Retail Server Request with request id '{0}' and request url '{1}' started.\"\n );\n};\n\nexport const modelManagersRetailServerRequestError = (requestId: string, requestUrl: string, error: string): void => {\n LoggerBase.writeEvent(\n 'ModelManagersRetailServerRequestError',\n 44005,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n \"The Retail Server Request with request id '{0}' and request url '{1}' failed. Error: {2}.\"\n );\n};\n\nexport const modelManagersRetailServerRequestFinished = (requestId: string, requestUrl: string): void => {\n LoggerBase.writeEvent(\n 'ModelManagersRetailServerRequestFinished',\n 44006,\n EventChannel.Debug,\n 1,\n EventLevel.Informational,\n [],\n '',\n '',\n \"The Retail Server Request with request id '{0}' and request url '{1}' succeeded.\"\n );\n};\n\nexport const genericWarning = (message: string): void => {\n LoggerBase.writeEvent('GenericWarning', 44001, 1, EventChannel.Operational, EventLevel.Warning, [], '', '', '{0}');\n};\n\nexport const genericError = (message: string): void => {\n LoggerBase.writeEvent('GenericEvent', 44000, 1, EventChannel.Operational, EventLevel.Error, [], '', '', '{0}');\n};\n\nexport const genericInfo = (message: string): void => {\n LoggerBase.writeEvent('GenericInfo', 44002, 1, EventChannel.Operational, EventLevel.Informational, [], '', '', '{0}');\n};\n\n/**\n * Class represents proxy events.\n * Event Code Range: 44000 - 44999.\n */\nexport class RetailLogger {\n public static LogEvent(eventName: Function, error?: string): void {\n error ? eventName(error) : eventName();\n }\n\n // Core - Event Range: 44000 - 44099.\n public static genericError(message: string): void {\n LoggerBase.writeEvent('GenericEvent', 44000, 1, EventChannel.Operational, EventLevel.Error, [], '', '', '{0}');\n }\n\n public static genericWarning(message: string): void {\n LoggerBase.writeEvent('GenericWarning', 44001, 1, EventChannel.Operational, EventLevel.Warning, [], '', '', '{0}');\n }\n\n public static genericInfo(message: string): void {\n LoggerBase.writeEvent('GenericInfo', 44002, 1, EventChannel.Operational, EventLevel.Informational, [], '', '', '{0}');\n }\n\n public static modelManagersRetailServerRequestStarted(requestId: string, requestUrl: string): void {\n LoggerBase.writeEvent(\n 'ModelManagersRetailServerRequestStarted',\n 44004,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n \"The Retail Server Request with request id '{0}' and request url '{1}' started.\"\n );\n }\n\n public static modelManagersRetailServerRequestError(requestId: string, requestUrl: string, error: string): void {\n LoggerBase.writeEvent(\n 'ModelManagersRetailServerRequestError',\n 44005,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n \"The Retail Server Request with request id '{0}' and request url '{1}' failed. Error: {2}.\"\n );\n }\n\n public static modelManagersRetailServerRequestFinished(requestId: string, requestUrl: string): void {\n LoggerBase.writeEvent(\n 'ModelManagersRetailServerRequestFinished',\n 44006,\n EventChannel.Debug,\n 1,\n EventLevel.Informational,\n [],\n '',\n '',\n \"The Retail Server Request with request id '{0}' and request url '{1}' succeeded.\"\n );\n }\n\n public static initEntitySetInvalidError(entitySetId: string): void {\n LoggerBase.writeEvent(\n 'InitEntitySetInvalidError',\n 44007,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n \"A method with invalid InitEntitySet id '{0}' was reported.\"\n );\n }\n\n public static initEntitySetMultipleTimesError(entitySetId: string): void {\n LoggerBase.writeEvent(\n 'InitEntitySetMultipleTimesError',\n 44008,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n \"A method with InitEntitySet ID '{0}' was reported multiple times.\"\n );\n }\n\n public static initEntitySetNoMethodNumberError(): void {\n LoggerBase.writeEvent(\n 'InitEntitySetNoMethodNumberError',\n 44009,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'The value InitEntitySet.All does not represent the number of methods that can be run'\n );\n }\n\n public static initPaymentEntitySetInvalidError(entitySetId: string): void {\n LoggerBase.writeEvent(\n 'InitPaymentEntitySetInvalidError',\n 44010,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n \"A method with invalid InitPaymentEntitySet id '{0}' was reported.\"\n );\n }\n\n public static initPaymentEntitySetMultipleTimesError(entitySetId: string): void {\n LoggerBase.writeEvent(\n 'InitPaymentEntitySetMultipleTimesError',\n 44011,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n \"A method with InitPaymentEntitySet ID '{0}' was reported multiple times.\"\n );\n }\n\n public static initPaymentEntitySetNoMethodNumberError(): void {\n LoggerBase.writeEvent(\n 'InitPaymentEntitySetNoMethodNumberError',\n 44012,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'The value InitPaymentEntitySet.All does not represent the number of methods that can be run'\n );\n }\n\n // Shopping Cart Service - Event Range: 44100 - 44199.\n public static shoppingCartServiceGetShoppingCartStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartServiceGetShoppingCartStarted',\n 44100,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get shopping cart started.'\n );\n }\n\n public static shoppingCartServiceGetShoppingCartError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartServiceGetShoppingCartError',\n 44101,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get shopping cart failed with error {0}.'\n );\n }\n\n public static shoppingCartServiceGetShoppingCartFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartServiceGetShoppingCartFinished',\n 44102,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get shopping cart finished.'\n );\n }\n\n public static shoppingCartServiceRemoveFromCartStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartServiceRemoveFromCartStarted',\n 44104,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Removing item from cart started.'\n );\n }\n\n public static shoppingCartServiceRemoveFromCartError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartServiceRemoveFromCartError',\n 44105,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Removing item from cart failed with error {0}.'\n );\n }\n\n public static shoppingCartServiceRemoveFromCartFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartServiceRemoveFromCartFinished',\n 44106,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Removing item from cart finished.'\n );\n }\n\n public static shoppingCartApplyPromotionCodeStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartApplyPromotionCodeStarted',\n 44108,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Applying promotion code started.'\n );\n }\n\n public static shoppingCartApplyPromotionCodeError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartApplyPromotionCodeError',\n 44109,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Applying promotion code failed with error {0}.'\n );\n }\n\n public static shoppingCartApplyPromotionCodeFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartApplyPromotionCodeFinished',\n 44110,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Applying promotion code finished.'\n );\n }\n\n public static shoppingCartUpdateQuantityStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartUpdateQuantityStarted',\n 44112,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Updating quantity started.'\n );\n }\n\n public static shoppingCartUpdateQuantityError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartUpdateQuantityError',\n 44113,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Updating quantity failed with error {0}.'\n );\n }\n\n public static shoppingCartUpdateQuantityFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartUpdateQuantityFinished',\n 44114,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Updating quantity finished.'\n );\n }\n\n public static shoppingCartRemovePromotionCodeStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartRemovePromotionCodeStarted',\n 44116,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Removing promotion code started.'\n );\n }\n\n public static shoppingCartRemovePromotionCodeError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartRemovePromotionCodeError',\n 44117,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Removing promotion code failed with error {0}.'\n );\n }\n\n public static shoppingCartRemovePromotionCodeFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartRemovePromotionCodeFinished',\n 44118,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Removing promotion code finished.'\n );\n }\n\n public static shoppingCartUpdateLoyaltyCardIdStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartUpdateLoyaltyCardIdStarted',\n 44120,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Updating loyalty card id started.'\n );\n }\n\n public static shoppingCartUpdateLoyaltyCardIdError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartUpdateLoyaltyCardIdError',\n 44121,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Updating loyalty card id failed with error {0}.'\n );\n }\n\n public static shoppingCartUpdateLoyaltyCardIdFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartUpdateLoyaltyCardIdFinished',\n 44122,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Updating loyalty card id finished.'\n );\n }\n\n public static shoppingCartCommenceCheckoutStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartCommenceCheckoutStarted',\n 44124,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Commence checkout started.'\n );\n }\n\n public static shoppingCartCommenceCheckoutError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartCommenceCheckoutError',\n 44125,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Commence checkout failed with error {0}.'\n );\n }\n\n public static shoppingCartCommenceCheckoutFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartCommenceCheckoutFinished',\n 44126,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Commence checkout finished.'\n );\n }\n\n public static shoppingCartGetPromotionsStarted(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartGetPromotionsStarted',\n 44128,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting promotions started.'\n );\n }\n\n public static shoppingCartGetPromotionsError(error: string): void {\n LoggerBase.writeEvent(\n 'ShoppingCartGetPromotionsError',\n 44129,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting promotions failed with error {0}.'\n );\n }\n\n public static shoppingCartGetPromotionsFinished(): void {\n LoggerBase.writeEvent(\n 'ShoppingCartGetPromotionsFinished',\n 44130,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting promotions finished.'\n );\n }\n\n public static getSimpleProductsByIdStarted(): void {\n LoggerBase.writeEvent(\n 'getSimpleProductsByIdStarted',\n 44132,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting simple products by ids started.'\n );\n }\n\n public static getSimpleProductsByIdError(error: string): void {\n LoggerBase.writeEvent(\n 'getSimpleProductsByIdError',\n 44133,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting simple products by ids failed with error {0}.'\n );\n }\n\n public static getSimpleProductsByIdFinished(): void {\n LoggerBase.writeEvent(\n 'getSimpleProductsByIdFinished',\n 44134,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting simple products by ids finished.'\n );\n }\n\n public static getKitComponentsError(): void {\n LoggerBase.writeEvent(\n 'GetKitComponentsError',\n 44136,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'One of the kit components could not be retrieved.'\n );\n }\n\n public static searchProductsByProductIdsStarted(): void {\n LoggerBase.writeEvent(\n 'SearchProductsByProductIdsStarted',\n 44140,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Searching products by product ids started.'\n );\n }\n\n public static searchProductsByProductIdsError(error: string): void {\n LoggerBase.writeEvent(\n 'SearchProductsByProductIdsError',\n 44141,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Searching products by product ids failed with error {0}.'\n );\n }\n\n public static searchProductsByProductIdsFinished(): void {\n LoggerBase.writeEvent(\n 'SearchProductsByProductIdsFinished',\n 44142,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Searching products by product ids finished.'\n );\n }\n\n // Checkout Service - Event Range: 44200 - 44299.\n public static checkoutServiceGetAllDeliveryOptionDescriptionsStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetAllDeliveryOptionDescriptionsStarted',\n 44200,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get all delivery option descriptions started.'\n );\n }\n\n public static checkoutServiceGetAllDeliveryOptionDescriptionsError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetAllDeliveryOptionDescriptionsError',\n 44201,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get all delivery option descriptions failed with error {0}.'\n );\n }\n\n public static checkoutServiceGetAllDeliveryOptionDescriptionsFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetAllDeliveryOptionDescriptionsFinished',\n 44202,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get all delivery option descriptions finished.'\n );\n }\n\n public static checkoutServiceGetDeliveryPreferencesStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetDeliveryPreferencesStarted',\n 44204,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting delivery preferences started.'\n );\n }\n\n public static checkoutServiceGetDeliveryPreferencesError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetDeliveryPreferencesError',\n 44205,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting delivery preferences failed with error {0}.'\n );\n }\n\n public static checkoutServiceGetDeliveryPreferencesFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetDeliveryPreferencesFinished',\n 44206,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting delivery preferences finished.'\n );\n }\n\n public static checkoutServiceGetOrderDeliveryOptionsStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetOrderDeliveryOptionsStarted',\n 44208,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting order delivery options started.'\n );\n }\n\n public static checkoutServiceGetOrderDeliveryOptionsError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetOrderDeliveryOptionsError',\n 44209,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting order delivery options failed with error {0}.'\n );\n }\n\n public static checkoutServiceGetOrderDeliveryOptionsFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetOrderDeliveryOptionsFinished',\n 44210,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting order delivery options finished.'\n );\n }\n\n public static checkoutServiceGetItemDeliveryOptionsStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetItemDeliveryOptionsStarted',\n 44212,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting item delivery options started.'\n );\n }\n\n public static checkoutServiceGetItemDeliveryOptionsError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetItemDeliveryOptionsError',\n 44213,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting item delivery options failed with error {0}.'\n );\n }\n\n public static checkoutServiceGetItemDeliveryOptionsFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetItemDeliveryOptionsFinished',\n 44214,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting item delivery options finished.'\n );\n }\n\n public static checkoutServiceUpdateDeliverySpecificationsStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceUpdateDeliverySpecificationsStarted',\n 44216,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update of order delivery specifications started.'\n );\n }\n\n public static checkoutServiceUpdateDeliverySpecificationsError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceUpdateDeliverySpecificationsError',\n 44217,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Update of order delivery specifications failed with error {0}.'\n );\n }\n\n public static checkoutServiceUpdateDeliverySpecificationsFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceUpdateDeliverySpecificationsFinished',\n 44218,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update of order delivery specifications finished.'\n );\n }\n\n public static checkoutServiceUpdateLineDeliverySpecificationsStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceUpdateLineDeliverySpecificationsStarted',\n 44220,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update of line delivery specifications started.'\n );\n }\n\n public static checkoutServiceUpdateLineDeliverySpecificationsError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceUpdateLineDeliverySpecificationsError',\n 44221,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Update of line delivery specifications failed with error {0}.'\n );\n }\n\n public static checkoutServiceUpdateLineDeliverySpecificationsFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceUpdateLineDeliverySpecificationsFinished',\n 44222,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update of line delivery specifications finished.'\n );\n }\n\n public static checkoutServiceGetPaymentCardTypesStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetPaymentCardTypesStarted',\n 44224,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting payment card types started.'\n );\n }\n\n public static checkoutServiceGetPaymentCardTypesError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetPaymentCardTypesError',\n 44225,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting payment card types failed with error {0}.'\n );\n }\n\n public static checkoutServiceGetPaymentCardTypesFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetPaymentCardTypesFinished',\n 44226,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting payment card types finished.'\n );\n }\n\n public static checkoutServiceGetGiftCardBalanceStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetGiftCardBalanceStarted',\n 44228,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting gift card balance started.'\n );\n }\n\n public static checkoutServiceGetGiftCardBalanceError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetGiftCardBalanceError',\n 44229,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Getting gift card balance failed with error {0}.'\n );\n }\n\n public static checkoutServiceGetGiftCardBalanceFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetGiftCardBalanceFinished',\n 44230,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Getting gift card balance finished.'\n );\n }\n\n public static checkoutServiceSubmitOrderStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceSubmitOrderStarted',\n 44232,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Submit order started.'\n );\n }\n\n public static checkoutServiceSubmitOrderError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceSubmitOrderError',\n 44233,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Submit order failed with error {0}.'\n );\n }\n\n public static checkoutServiceSubmitOrderFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceSubmitOrderFinished',\n 44234,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Submit order finished.'\n );\n }\n\n public static checkoutServiceGetCardPaymentAcceptUrlStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetCardPaymentAcceptUrlStarted',\n 44235,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get card payment accept url started.'\n );\n }\n\n public static checkoutServiceGetCardPaymentAcceptUrlFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetCardPaymentAcceptUrlFinished',\n 44236,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get card payment accept url finished.'\n );\n }\n\n public static checkoutServiceGetCardPaymentAcceptUrlError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceGetCardPaymentAcceptUrlError',\n 44237,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get card payment accept url failed with error {0}.'\n );\n }\n\n public static checkoutServiceRetrieveCardPaymentAcceptResultStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceRetrieveCardPaymentAcceptResultStarted',\n 44238,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Retrieve card payment accept result started.'\n );\n }\n\n public static checkoutServiceRetrieveCardPaymentAcceptResultFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceRetrieveCardPaymentAcceptResultFinished',\n 44239,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Retrieve card payment accept result finished.'\n );\n }\n\n public static checkoutServiceRetrieveCardPaymentAcceptResultError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceRetrieveCardPaymentAcceptResultError',\n 44240,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Retrieve card payment accept result failed with error {0}.'\n );\n }\n\n public static checkoutServiceCleanUpAfterSuccessfulOrderStarted(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceCleanUpAfterSuccessfulOrderStarted',\n 44241,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Shopping cart clean failed post successful submit order started.'\n );\n }\n\n public static checkoutServiceCleanUpAfterSuccessfulOrderError(error: string): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceCleanUpAfterSuccessfulOrderError',\n 44242,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Shopping cart clean failed post successful submit order with error {0}.'\n );\n }\n\n public static checkoutServiceCleanUpAfterSuccessfulOrderFinished(): void {\n LoggerBase.writeEvent(\n 'CheckoutServiceCleanUpAfterSuccessfulOrderFinished',\n 44243,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Shopping cart clean failed post successful submit order finished.'\n );\n }\n\n // Channel Service - Event Range: 44300 - 44349.\n public static channelServiceGetChannelConfigurationStarted(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetChannelConfigurationStarted',\n 44300,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get channel Configuration started.'\n );\n }\n\n public static channelServiceGetChannelConfigurationError(error: string): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetChannelConfigurationError',\n 44301,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get channel Configuration failed with error {0}.'\n );\n }\n\n public static channelServiceGetChannelConfigurationFinished(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetChannelConfigurationFinished',\n 44302,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get channel Configuration finished.'\n );\n }\n\n public static channelServiceGetCountryRegionInfoStarted(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetCountryRegionInfoStarted',\n 44304,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get country region info started.'\n );\n }\n\n public static channelServiceGetCountryRegionInfoError(error: string): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetCountryRegionInfoError',\n 44305,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get country region info failed with error {0}.'\n );\n }\n\n public static channelServiceGetCountryRegionInfoFinished(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetCountryRegionInfoFinished',\n 44306,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get country region info finished.'\n );\n }\n\n public static channelServiceGetStateProvinceInfoStarted(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetStateProvinceInfoStarted',\n 44308,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get state province info started.'\n );\n }\n\n public static channelServiceGetStateProvinceInfoError(error: string): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetStateProvinceInfoError',\n 44309,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get state province info error {0}.'\n );\n }\n\n public static channelServiceGetStateProvinceInfoFinished(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetStateProvinceInfoFinished',\n 44310,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get state province info finished.'\n );\n }\n\n public static channelServiceGetTenderTypesStarted(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetTenderTypesStarted',\n 44312,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get tender types started.'\n );\n }\n\n public static channelServiceGetTenderTypesError(error: string): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetTenderTypesError',\n 44313,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get tender types failed with error {0}.'\n );\n }\n\n public static channelServiceGetTenderTypesFinished(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetTenderTypesFinished',\n 44314,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get tender types finished.'\n );\n }\n\n public static channelServiceGetCardTypesStarted(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetCardTypesStarted',\n 44315,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get card types started.'\n );\n }\n\n public static channelServiceGetCardTypesError(error: string): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetCardTypesError',\n 44316,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get card types failed with error {0}.'\n );\n }\n\n public static channelServiceGetCardTypesFinished(): void {\n LoggerBase.writeEvent(\n 'ChannelServiceGetCardTypesFinished',\n 44317,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get card types finished.'\n );\n }\n\n // Item Availability Service - Event Range: 44350 - 44369.\n public static storeProductAvailabilityServiceGetNearbyStoresWithAvailabilityStarted(): void {\n LoggerBase.writeEvent(\n 'StoreProductAvailabilityServiceGetNearbyStoresWithAvailabilityStarted',\n 44350,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get nearby stores with availability started.'\n );\n }\n\n public static storeProductAvailabilityServiceGetNearbyStoresWithAvailabilityError(error: string): void {\n LoggerBase.writeEvent(\n 'StoreProductAvailabilityServiceGetNearbyStoresWithAvailabilityError',\n 44351,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get nearby stores with availability failed with error {0}.'\n );\n }\n\n public static storeProductAvailabilityServiceGetNearbyStoresWithAvailabilityFinished(): void {\n LoggerBase.writeEvent(\n 'StoreProductAvailabilityServiceGetNearbyStoresWithAvailabilityFinished',\n 44352,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get nearby stores with availability finished.'\n );\n }\n\n public static storeProductAvailabilityServiceGetNearbyStoresStarted(): void {\n LoggerBase.writeEvent(\n 'StoreProductAvailabilityServiceGetNearbyStoresStarted',\n 44354,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get nearby stores started.'\n );\n }\n\n public static storeProductAvailabilityServiceGetNearbyStoresError(error: string): void {\n LoggerBase.writeEvent(\n 'StoreProductAvailabilityServiceGetNearbyStoresError',\n 44355,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get nearby stores failed with error {0}.'\n );\n }\n\n public static storeProductAvailabilityServiceGetNearbyStoresFinished(): void {\n LoggerBase.writeEvent(\n 'StoreProductAvailabilityServiceGetNearbyStoresFinished',\n 44356,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get nearby stores finished.'\n );\n }\n\n // Loyalty Service - Event Range: 44370 - 44399.\n public static loyaltyServiceGetLoyaltyCardsStarted(): void {\n LoggerBase.writeEvent(\n 'LoyaltyServiceGetLoyaltyCardsStarted',\n 44370,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get loyalty cards started.'\n );\n }\n\n public static loyaltyServiceGetLoyaltyCardsError(error: string): void {\n LoggerBase.writeEvent(\n 'LoyaltyServiceGetLoyaltyCardsError',\n 44371,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get loyalty cards failed with error {0}.'\n );\n }\n\n public static loyaltyServiceGetLoyaltyCardsFinished(): void {\n LoggerBase.writeEvent(\n 'LoyaltyServiceGetLoyaltyCardsFinished',\n 44372,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get loyalty cards finished.'\n );\n }\n\n public static loyaltyServiceUpdateLoyaltyCardIdStarted(): void {\n LoggerBase.writeEvent(\n 'loyaltyServiceUpdateLoyaltyCardIdStarted',\n 44374,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update loyalty card id started.'\n );\n }\n\n public static loyaltyServiceUpdateLoyaltyCardIdError(error: string): void {\n LoggerBase.writeEvent(\n 'LoyaltyServiceUpdateLoyaltyCardIdError',\n 44375,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Update loyalty card id failed with error {0}.'\n );\n }\n\n public static loyaltyServiceUpdateLoyaltyCardIdFinished(): void {\n LoggerBase.writeEvent(\n 'LoyaltyServiceUpdateLoyaltyCardIdFinished',\n 44376,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update loyalty card id finished.'\n );\n }\n\n // Customer Service - Event Range: 44400 - 44499.\n public static customerServiceGetCustomerStarted(): void {\n LoggerBase.writeEvent(\n 'CustomerServiceGetCustomerStarted',\n 44400,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get customer started.'\n );\n }\n\n public static customerServiceGetCustomerError(error: string): void {\n LoggerBase.writeEvent(\n 'CustomerServiceGetCustomerError',\n 44401,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get customer failed with error {0}.'\n );\n }\n\n public static customerServiceGetCustomerFinished(): void {\n LoggerBase.writeEvent(\n 'CustomerServiceGetCustomerFinished',\n 44402,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get customer finished.'\n );\n }\n\n public static customerServiceIsAuthenticationSessionStarted(): void {\n LoggerBase.writeEvent(\n 'CustomerServiceIsAuthenticationSessionStarted',\n 44403,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Is authentication session started.'\n );\n }\n\n public static customerServiceIsAuthenticationSessionError(error: string): void {\n LoggerBase.writeEvent(\n 'CustomerServiceIsAuthenticationSessionError',\n 44404,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Is authentication session failed with error {0}.'\n );\n }\n\n public static customerServiceIsAuthenticationSessionFinished(): void {\n LoggerBase.writeEvent(\n 'CustomerServiceIsAuthenticationSessionFinished',\n 44405,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Is authentication session finished.'\n );\n }\n\n // Order Service - Event Range: 44500 - 44599.\n public static getOrderHistoryStarted(): void {\n LoggerBase.writeEvent(\n 'GetOrderHistoryStarted',\n 44500,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get order history started.'\n );\n }\n\n public static getOrderHistoryError(error: string): void {\n LoggerBase.writeEvent(\n 'GetOrderHistoryError',\n 44501,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get order history failed with error {0}.'\n );\n }\n\n public static getOrderHistoryFinished(): void {\n LoggerBase.writeEvent(\n 'GetOrderHistoryFinished',\n 44502,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get order history finished.'\n );\n }\n\n public static getOrderDetailsStarted(): void {\n LoggerBase.writeEvent(\n 'GetOrderDetailsStarted',\n 44504,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get order details started.'\n );\n }\n\n public static getOrderDetailsError(error: string): void {\n LoggerBase.writeEvent(\n 'GetOrderDetailsError',\n 44505,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get order details failed with error {0}.'\n );\n }\n\n public static getOrderDetailsFinished(): void {\n LoggerBase.writeEvent(\n 'GetOrderDetailsFinished',\n 44506,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get order details finished.'\n );\n }\n\n // Commerce list realtime service - Event Range: 44600 - 44699.\n public static createWishListStarted(): void {\n LoggerBase.writeEvent(\n 'CreateWishListStarted',\n 44600,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Create wish list started.'\n );\n }\n\n public static createWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'CreateWishListError',\n 44601,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Create wish list failed with error {0}.'\n );\n }\n\n public static createWishListFinished(): void {\n LoggerBase.writeEvent(\n 'CreateWishListFinished',\n 44602,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Create wish list finished.'\n );\n }\n\n public static deleteWishListStarted(): void {\n LoggerBase.writeEvent(\n 'DeleteWishListStarted',\n 44604,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Delete wish list started.'\n );\n }\n\n public static deleteWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'DeleteWishListError',\n 44605,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Delete wish list failed with error {0}.'\n );\n }\n\n public static deleteWishListFinished(): void {\n LoggerBase.writeEvent(\n 'DeleteWishListFinished',\n 44606,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Delete wish list finished.'\n );\n }\n\n public static updateWishListStarted(): void {\n LoggerBase.writeEvent(\n 'UpdateWishListStarted',\n 44608,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update wish list started.'\n );\n }\n\n public static updateWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'UpdateWishListError',\n 44609,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Update wish list failed with error {0}.'\n );\n }\n\n public static updateWishListFinished(): void {\n LoggerBase.writeEvent(\n 'UpdateWishListFinished',\n 44610,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update wish list finished.'\n );\n }\n\n public static getWishListsStarted(): void {\n LoggerBase.writeEvent(\n 'GetWishListsStarted',\n 44612,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get wish lists started.'\n );\n }\n\n public static getWishListsError(error: string): void {\n LoggerBase.writeEvent(\n 'GetWishListsError',\n 44613,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get wish lists failed with error {0}.'\n );\n }\n\n public static getWishListsFinished(): void {\n LoggerBase.writeEvent(\n 'GetWishListsFinished',\n 44614,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get wish lists finished.'\n );\n }\n\n public static getWishListStarted(): void {\n LoggerBase.writeEvent(\n 'GetWishListStarted',\n 44616,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get wish list started.'\n );\n }\n\n public static getWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'GetWishListError',\n 44617,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Get wish list failed with error {0}.'\n );\n }\n\n public static getWishListFinished(): void {\n LoggerBase.writeEvent(\n 'GetWishListFinished',\n 44618,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Get wish list finished.'\n );\n }\n\n public static addLinesToWishListStarted(): void {\n LoggerBase.writeEvent(\n 'AddLinesToWishListStarted',\n 44620,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Add lines to wish list started.'\n );\n }\n\n public static addLinesToWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'AddLinesToWishListError',\n 44621,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Add lines to wish list failed with error {0}.'\n );\n }\n\n public static addLinesToWishListFinished(): void {\n LoggerBase.writeEvent(\n 'AddLinesToWishListFinished',\n 44622,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Add lines to wish list finished.'\n );\n }\n\n public static removeItemsFromWishListStarted(): void {\n LoggerBase.writeEvent(\n 'RemoveItemsFromWishListStarted',\n 44624,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Remove items from wish list started.'\n );\n }\n\n public static removeItemsFromWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'RemoveItemsFromWishListError',\n 44625,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Remove items from wish list failed with error {0}.'\n );\n }\n\n public static removeItemsFromWishListFinished(): void {\n LoggerBase.writeEvent(\n 'RemoveItemsFromWishListFinished',\n 44626,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Remove items from wish list finished.'\n );\n }\n\n public static updateLinesOnWishListStarted(): void {\n LoggerBase.writeEvent(\n 'UpdateLinesOnWishListStarted',\n 44628,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update lines on wish list started.'\n );\n }\n\n public static updateLinesOnWishListError(error: string): void {\n LoggerBase.writeEvent(\n 'UpdateLinesOnWishListError',\n 44629,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Update lines on wish list failed with error {0}.'\n );\n }\n\n public static updateLinesOnWishListFinished(): void {\n LoggerBase.writeEvent(\n 'UpdateLinesOnWishListFinished',\n 44630,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Update lines on wish list finished.'\n );\n }\n\n public static addItemsToCartStarted(): void {\n LoggerBase.writeEvent(\n 'AddItemsToCartStarted',\n 44632,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Add items to cart started.'\n );\n }\n\n public static addItemsToCartError(error: string): void {\n LoggerBase.writeEvent(\n 'AddItemsToCartError',\n 44633,\n 1,\n EventChannel.Operational,\n EventLevel.Error,\n [],\n '',\n '',\n 'Add items to cart failed with error {0}.'\n );\n }\n\n public static addItemsToCartFinished(): void {\n LoggerBase.writeEvent(\n 'AddItemsToCartFinished',\n 44634,\n 1,\n EventChannel.Debug,\n EventLevel.Informational,\n [],\n '',\n '',\n 'Add items to cart finished.'\n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProxyError } from '../exceptions';\nimport { EMPTY, format } from '../extensions/StringExtensions';\nimport { DebuggingConsoleSink } from './ConsoleEventWriter';\nimport { attachLoggingSink, genericError, genericInfo, genericWarning } from './RetailLogger';\n\n/**\n * The tracer class allows information to be logged on the device for Information, Warning or Error\n * The same method call can be used for each type\n * Example:\n * Commerce.Proxy.Tracer.Information(\"Message {0} {1}\", [\"Arg1\", \"Arg2\"]); // With parameters to be formatted\n * Commerce.Proxy.Tracer.Information(\"Message\"); // Without parameters\n *\n * Example of different tracer logs\n * Dynamics-Information: <> <>\n * Dynamics-Warning: <> <>\n * Dynamics-Error: <> <>\n */\n\nexport class Tracer {\n private static TracerDynamics: string = 'Dynamics-';\n private static TracerDynamicsError: string = 'Error: ';\n\n private static TracingOn: boolean = true;\n\n private static Counters: any[] = new Array();\n private static Timers: any[] = new Array();\n\n public static init(): boolean {\n attachLoggingSink(new DebuggingConsoleSink());\n return true;\n }\n\n public static _initialized: boolean = Tracer.init();\n\n /**\n * Traces an informational message in the specified format.\n */\n public static Information(informationformat: string, ...args: any[]): void {\n if (Tracer.TracingOn) {\n genericInfo(Tracer.GetMessage.apply(null, [Tracer.TracerDynamicsError, informationformat, ...args]));\n }\n }\n\n /**\n * Traces a warning message in the specified format.\n */\n public static Warning(warningFormat: string, ...args: any[]): void {\n if (Tracer.TracingOn) {\n genericWarning(Tracer.GetMessage.apply(null, [Tracer.TracerDynamicsError, warningFormat, ...args]));\n }\n }\n\n /**\n * Traces an error message in the specified format.\n */\n public static Error(errorFormat: string, ...args: any[]): void {\n if (Tracer.TracingOn) {\n genericError(Tracer.GetMessage.apply(null, [Tracer.TracerDynamicsError, errorFormat, ...args]));\n }\n }\n\n /**\n * Traces an error message in the specified format.\n */\n public static Errors(errors: ProxyError[], formatString: string, ...args: any[]): void {\n if (Tracer.TracingOn && errors !== null && errors.length > 0) {\n let errorMessage: string = '';\n let errorCode: string = '';\n let errorString: string = '';\n\n errors.forEach(error => {\n errorMessage = error.ErrorMessage || EMPTY;\n errorCode = error.ErrorCode || EMPTY;\n errorString = JSON.stringify(error);\n Tracer.Error(\n formatString +\n ' ' +\n format(\" \\n ErrorMessage: {0}; \\n ErrorCode: {1}; \\n ErrorObject: '{2}'\", errorMessage, errorCode, errorString),\n args\n );\n });\n }\n }\n\n public static StartCounter(uniqueFunctionName: string): void {\n let counter;\n if (Tracer.Counters[uniqueFunctionName] === undefined) {\n counter = new PerformanceCounters();\n counter.Name = uniqueFunctionName;\n } else {\n counter = Tracer.Counters[uniqueFunctionName];\n }\n counter.Count += 1;\n Tracer.Counters[uniqueFunctionName] = counter;\n const now = new Date().getTime();\n Tracer.Timers.push(now);\n }\n\n public static EndCounter(uniqueFunctionName: string): void {\n const now = new Date().getTime();\n const startTime = Tracer.Timers.pop();\n const counter = Tracer.Counters[uniqueFunctionName];\n counter.TotalTime += now - startTime;\n }\n\n public static DumpCounters() {\n for (const item in Tracer.Counters) {\n if (Tracer.Counters.hasOwnProperty(item)) {\n Tracer.Information(\n 'Method = {0} Number of calls = {1} TotalTime = {2}mS Avg = {3}mS',\n Tracer.Counters[item].Name,\n Tracer.Counters[item].Count,\n Tracer.Counters[item].TotalTime,\n Tracer.Counters[item].TotalTime / Tracer.Counters[item].Count\n );\n }\n }\n }\n\n private static GetMessage(type: string, formatString: string, ...args: any[]) {\n const now = '' + new Date().getTime() + 'mS';\n if (Tracer.TracingOn) {\n if (!args) {\n return Tracer.TracerDynamics + type + '\\t' + formatString + '\\t' + now;\n } else {\n return (\n Tracer.TracerDynamics + type + '\\t' + format.apply(null, [formatString, Array.prototype.slice.call(args)]) + '\\t' + now\n );\n }\n }\n }\n}\n\nclass PerformanceCounters {\n public Name: string;\n public Count: number = 0;\n public TotalTime: number = 0;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from './async-result';\nimport { IDataServiceRequest } from './Interfaces';\n\n/**\n * Calls the Retail action\n */\nexport function retailAction(input: IDataServiceRequest, callerContext: unknown): Promise {\n return input.execute(callerContext);\n}\n\nretailAction.prototype = {\n isAction: true,\n isObservable: true\n};\n\nexport function callActionOrExecute(request: IDataServiceRequest, callerContext: any): AsyncResult {\n return callerContext.chainAction ? callerContext.chainAction(retailAction, request) : request.execute(callerContext);\n}\n\nexport function executeAction(request: IDataServiceRequest, context: any): AsyncResult {\n if (!context) {\n throw new Error('context is undefined while executing action');\n }\n\n if (context.callerContext && context.callerContext.chainAction) {\n context.bypassCache && request.overrideCacheType(context.bypassCache);\n return context.callerContext.chainAction(retailAction, request);\n } else if (context.chainAction) {\n return context.chainAction(retailAction, request);\n }\n\n return new AsyncResult((resolve, reject) => {\n request\n .execute(context)\n .then(result => {\n resolve(result);\n })\n .catch(error => {\n reject(error);\n });\n });\n}\n","module.exports = React;","module.exports = ReactDOM;"],"names":["FinancingStateInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","async","financingStateAction","input","ctx","financingStaticData","createObservableDataAction","action","inputData","GetCardPaymentAcceptPointInput","buildCacheKey","this","paymenTenderType","apiSettings","showBillingAddress","createCheckoutPaymentInstrumentInput","config","getCardPaymentAcceptPointInput","showBillingAddres","requestContext","getCardPaymentAcceptPointAction","telemetry","exception","Error","checkoutState","getCheckoutState","catch","error","isEmptyOrNullObject","checkoutCart","cart","CartLines","length","requestUrl","url","URL","origin","get","window","cardPaymentAcceptSettings","HostPageOrigin","AdaptorPath","CardPaymentEnabled","CardTokenizationEnabled","HideBillingAddress","TenderTypeId","PaymentAmount","getCardPaymentAcceptPointAsync","callerContext","bypassCache","Id","then","cardPaymentAcceptPoint","AcceptPageUrl","AcceptPageContent","debug","getCardPaymentAcceptPointActionDataAction","id","ExtensionProperties","filter","i","Key","Value","DecimalValue","componentDictionary","c","cn","log","console","handleMissingImplementationDetails","functionName","connectorName","connectorType","connectorDictionary","connectorProviderImpl","require","connectorListenerImpl","connectorDomainsList","default","provider","listener","connectorDomains","validateConnectorRegistration","connectorImpl","__proto__","initialize","getConfigForClientSideInit","initializeClientSide","getExperiments","getVariantsForUser","activateExperiment","logEvent","e","undefined","verifyExperimentationReigstration","registerAllModules","requiredModules","binding","modules","dataActions","handleError","modPath","errObject","errorObject","process","exit","map","module","toLowerCase","isNotRegistered","moduleName","findIndex","registerActionId","actionPath","prototype","Object","keys","forEach","exportName","Action","registerSanitizedActionPath","sanitizedActionPath","dataAction","RegistrationId","$type","da","iNM","ns","n","p","pdp","md","name","path","runOn","definitionExtensions","themeSettings","viewDictionary","createAccordionStateInput","result","GenericInput","getGenericActionDataAction","getGenericAction","ActiveImageInput","_cacheKey","activePoints","ArrayExtensions","activePointData","itemId","toString","createInput","getActiveImageproductAction","context","itemIds","push","ItemId","searchCriteriaInput","Context","ChannelId","channelId","CatalogId","getCatalogId","IncludeAttributes","ItemIds","ProductsDataActions","actionDataAction","GetAddressPurposesInput","getAddressPurposesAction","getAddressPurposesAsync","queryResultSettings","QueryResultSettingsProxy","getAddressPurposesActionDataAction","GetCountryRegionsInput","locale","getCountryRegionsAction","getCountryRegionsByLanguageIdAsync","getCountryRegionsActionDataAction","GetCountryStateInput","getCountryStateAction","countryInput","countryRegionsInfo","channelConfiguration","channel","marketISOCode","ChannelCountryRegionISOCode","currentCountryRegion","find","countryRegion","ISOCode","countryRegionId","CountryRegionId","stateInput","GetStateProvincesInput","getStateProvinceAction","getCountryStateActionDataAction","getStateProvincesAsync","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","value","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","key","MsDyn365","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","actionContext","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","trim","query","encodeURI","geolocationApiUrl","app","Promise","resolve","script","document","createElement","setAttribute","data","remove","resourceSets","resources","point","coordinates","body","appendChild","StringExtensions","getElementById","lang","market","reject","type","defer","src","mapAPIReady","isMapApiLoaded","addEventListener","createStoreSelectorStateInput","GetBotFrameworkInput","Msdyn365","ISecretValue","msdyn365Commerce","getSecretValue","baseUrl","apiToken","args","shouldShowBillingAddress","paymentTenderType","amountDue","AmountDue","RequireShippingAddress","CartsDataActions","shouldEnableSinglePaymentAuthorizationCheckout","shouldPassLocaleToiFrame","Locale","ActiveCheckoutCartProductsInput","getActiveCheckoutCartProductsAction","hasInvoiceLine","getSimpleProducts","cartLine","ProductId","ProductInput","Boolean","products","getActiveCheckoutCartProductsActionDataAction","createDataActionHook","actionId","postReaderHook","_inputs","_msdyn365","cartObject","Array","isArray","addedCartLines","telemetryData","addedProducts","getProductInfoFromCartLinesAsync","TelemetryEvent","cartId","cartVersion","Version","orderId","OrderNumber","preReaderHook","inputs","actionInput","queryParams","addCartLinesParams","cartLines","cartLineProductUnits","simpleProduct","productInfo","getProductInfoFromSimpleProduct","productSku","simpleProducts","product","salesOrder","salesObject","saleLineProductUnits","SalesLines","affiliation","revenue","NetAmountWithoutTax","tax","TaxAmount","activeCart","removeCartLineIds","removedCartLineIds","productTransaction","removedCartLines","removedProducts","indexOf","LineId","some","removeCartLinesParams","cartLineIds","productPromises","getByIdAsync","RecordId","productPrice","Price","productQuantity","Quantity","reason","all","recordId","productId","MasterProductId","productName","Name","Description","productChannelId","productChannelName","productCategoryId","productCategoryName","productCurrency","updatedCartLines","updatedProducts","updateCartLinesParams","userId","eventName","payload","attributes","variantSet1","variantId","experimentId","variantSet2","variantSet3","variantSet4","experiments","friendlyName","description","status","State","link","variations","weight","createdDate","lastModifiedDate","lastModifiedBy","match","secretManager","GetChannelIdentitiesInput","getChannelsAction","channels","getChannelsAsync","getChannels","channelIdentities","getChannelsActionDataAction","searchArea","Radius","Math","max","DistanceUnitValue","GetOrgUnitLocationsInput","getOrgUnitLocationsAction","orgUnitLocations","getOrgUnitLocationsByAreaAsync","getOrgUnitLocations","getOrgUnitLocationsActionDataAction","orderTypes","GetSalesOrderConfirmationWithHydrationsInput","orderType","getSalesOrderConfirmationWithHydrationsAction","trace","getSalesOrderDetailsBySalesIdAsync","getSalesOrderDetailsByTransactionIdAsync","getSalesOrder","TransactionTypeValue","TransactionType","productIds","salesLine","productInputs","getProducts","validProducts","ObjectExtensions","deliveryOptions","getDeliveryOptionsAsync","message","getSalesOrderConfirmationWithHydrationsActionDataAction","salesId","transactionId","transaction","GetSalesOrderDetailsByConfirmationInput","channelReferenceLookupCriteria","confirmationId","ChannelReferenceId","getSalesOrderDetailsByChannelReferenceIdAction","SalesOrdersDataActions","getSalesOrderDetailsByLookupCriteria","propertyName","propertyValue","addtionalLookupParameter","queryArray","entries","index","additionalFieldName","additionalFieldValue","orderStatusLookUpParameterTypeName","orderStatusLookUpParameterValue","getQueryStringParameters","orderLookupExtensibleEnum","StoreOperationsDataActions","item","TypeName","ExtensibleEnumerations","channelReferenceAdditionalLookupCriteria","retailProxyValue","toLocaleLowerCase","retailProxyTypeValue","OrderLookupAdditionalCriteriaTypeValue","OrderLookupAdditionalCriteriaTypeParameterValue","additionalItem","ChannelReferenceAdditionalLookupCriteria","GetSalesOrderWithHydrationsInput","getSalesOrderWithHydrationsAction","user","isAuthenticated","SearchLocation","saleline","IsVoided","getSalesOrderWithHydrationsActionDataAction","retailActionDataAction","retailAction","createGetTenderTypesInput","ActiveOrderTemplateLinesInput","buildCacheKeyWithUrlTokens","shouldCacheOutput","orderTemplateId","QueryResultSettings","count","getActiveOrderTemplateLines","getFullOrderTemplate","GetFullOrderTemplateInput","getActiveOrderTemplateLinesDataAction","CategoryPageSummaryInput","currentCategoryResult","getCurrentCategory","CurrentCategoryInput","createGetCurrentCategoryInput","currentCategory","categoryUrl","localName","getFriendlyName","NameTranslations","neutralizedName","NeutralizedName","getCategoryUrl","canonicalDomain","skipCount","skip","Url","urlParams","URLSearchParams","search","set","title","sharingImageUrl","OfflineImage","canonicalUrl","faviconUrl","sharingImage","PageSummaryInput","keywords","ListItemType","ListPageSummaryInput","getSubListItem","sitePathOfRequest","imageList","getImages","fields","content","images","sublistHref","listName","_name","sitePath","Title","ShortDescription","shortDescription","BackgroundColor","backgroundColor","ForegroundColor","foregroundColor","Href","Images","getSitePath","resultImageList","image","href","imageItem","altText","width","height","createGetListInput","listData","pageData","list","items","_id","getInputListData","listItems","productList","parentImageList","itemsPerPage","Number","isNaN","getItemsPerPage","getSkipCount","productItems","sum","clonedList","productItem","catalogId","ListInput","getList","ProductPageSummaryInput","simpleProductsData","getByIdsAsync","simpleProductData","productUrl","productBrand","getProductUrlSync","productAttributes","getAttributeValuesAsync","productAttribute","TextValue","getProductBrand","generateImageUrl","PrimaryImageUrl","price","AdjustedPrice","getSelectedProductIdFromActionInput","GetProductsInPreviewProductComparisonInput","createGetProductsInPreviewProductComparisonInput","ProductComparisonState","getProductsInPreviewProductComparisonAction","newInput","ProductComparisonItem","getProductsInPreviewProductComparisonDataAction","addedDate","Date","super","getItemId","_comparisonItems","listModifiedEvent","Event","_lastUpdateDate","now","setItems","_update","addItem","clearAll","currentItem","removeItemById","hasItem","includes","hasItemById","trigger","_requestContext","subscribe","instanceId","handler","cookies","_getCookieStorageKey","_retrieveItemsFromCookies","_instance","_productComparisonItemsLocalStorageKey","customerAccountNumber","_readFromCookie","cookieContext","cookieKey","isConsentGiven","secure","maxAge","GetProductsInProductComparisonInput","createGetProductsInProductComparisonInput","loadProductsSpecifications","productsSpecificationsPromises","AttributesForSelectedVariantInput","ProductDetails","specificationsList","getAttributesForSelectedVariantAction","loadProductSpecifications","productsSpecifications","getProductsInProductComparisonAction","productsPromises","fullProductInput","FullProductInput","ProductDetailsCriteria","productsInfo","getFullProductsAction","loadFullProducts","ratingsPromises","GetRatingsSummaryInput","rnr","ratingInput","getRatingsSummary","ratings","loadRatings","productDimensions","productsDimensionPromises","dimensionResult","Dimensions","ProductsDimensionAvailabilitiesInput","DimensionTypeValue","getDimensionAvailabilitiesForProductsAction","dimensions","masterId","productsDimensions","loadProductsDimensions","productData","ProductPrice","rating","specifications","productSpecifications","dimension","selectedProduct","createAttributesForSelectedVariantInput","activeProduct","selectedVariantInput","SelectedVariantInput","getSelectedVariant","productResult","attributeValues","channelInventoryConfiguration","getAttributeValuesByConfiguration","ActiveProductListInput","productListId","getActiveProductList","fullProductListInput","GetFullProductListInput","getFullProductList","getActiveProductListDataAction","createInputForProductReviews","GetProductReviewsInput","getRnrPartnerId","getRnrEndpointId","getReviewsForGivenProduct","tenantId","localeListFilter","pageSize","inputIsValid","serviceEndpoint","orderBy","skipItems","starFilters","pageToken","sendRequest","response","isTakenDown","pagingInfo","getReviewsForGivenProductDataAction","getUserReviewDataAction","authorization","errorMessage","headers","Authorization","statusText","userInfo","GetUserReviewInput","token","getRnrAuthEndpointId","dataSources","createRatingsReviewsStateInput","filterKey","AddressManagementInput","address","userAccountNumber","createAddressManagementInput","doAddressManagementOperation","operationHandler","customerInput","GetCustomerInput","customer","getCustomer","newCustomer","updatedCustomer","updateAsync","update","createReadAsync","AccountNumber","Addresses","addAddressHandler","isBatched","AddItemToProductListInput","quantity","unitOfMeasure","productListLineToAdd","ProductListId","UnitOfMeasure","productListLine","ProductListsDataActions","AddOrganizationUserInput","newUser","getCurrentAsync","businessPartner","BusinessPartnerId","createBusinessPartnerUserAsync","requestOptions","oun","cartTenderLines","cartTenderLineItem","TokenizedPaymentCard","House","CardTokenInfo","billingAddress","Phone","ThreeLetterISORegionName","Street","City","ZipCode","Country","toUpperCase","Address1","Zip","requestBody","receiptEmail","sendCommerceRequest","CreateProductListInput","templateName","templateType","orderTemplate","ProductListTypeValue","createdProductList","deleteAddressHandler","cur","DeleteOrganizationUserInput","deleteAsync","EditOrganizationUserInput","updatedUser","cacheKey","cacheObjectType","AddressInput","createGetAddressInput","getAddressAction","getAddressActionDataAction","GetAttributeDefinitionsInput","attributeDefinitionCriteria","getAttributeDefinitionsActionDataAction","CustomerAttributeGroupId","getAttributeDefinitionsAsync","AttributeGroupIdentifier","getSelectedVariantActionDataAction","ProductAvailabilitiesForCartLineItems","getDeliveryMode","featureSate","channelDeliveryOptionConfig","pickupDeliveryMode","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","getAvailabilitiesForCartLineItems","shippingItems","bopisItems","productAvailabilities","getCartState","getOrgUnitConfigurationAsync","getActiveCartProductsAction","ActiveCartProductsInput","featureState","getFeatureStateActionDataAction","FeatureStateInput","getFeatureState","retailMultiplePickUpOptionEnabled","IsEnabled","getChannelDeliveryOptionConfigurationAsync","PickupDeliveryModeCode","EmailDeliveryModeCode","x","searchCriteria","createInventoryAvailabilitySearchCriteria","shippingProductAvailabilities","getEstimatedAvailabilityAsync","ProductWarehouseInventoryAvailabilities","mapAggregatedProductInventoryInformation","productWarehouses","bopisItem","productWarehouse","InventLocationId","WarehouseId","InventLocationDataAreaId","DataAreaId","quantityUnitTypeSales","getProductWarehouseAvail","getEstimatedProductWarehouseAvailabilityAsync","productWarehouseMapping","mapProductInventoryInformation","getAvailabilitiesForCartLineItemsDataAction","GetBusinessPartnerOperationRequestsInput","fromDate","toDate","getBusinessPartnerOperationRequestsAction","userInput","GetCurrentBusinessPartnerUserInput","getCurrentBusinessPartnerUser","B2BUserId","getOperationRequestsAsync","CatalogsInput","createCatalogsInput","getCatalogAction","CatalogsDataActions","getCatalogActionDataAction","CategoriesInput","mappedToHierarchy","maxItems","_mappedToHierarchy","getLocale","mapCategoryToHierarchy","categoryList","categoryMap","reduce","memo","category","nameTranslations","nameTranslation","Language","Text","categoryHierarchy","zeroCategory","element","parentId","ParentCategory","parent","Children","createCategoriesHierarchyInput","topItems","topCategories","parseInt","getCategoryHierarchyAction","categories","getCategoryAction","RawCategoriesInput","getCategoryHierarchyActionDataAction","CategoriesDataActions","GetCategoryPathsInput","categoryPathLooksups","constructedCacheKey","categoryPath","createGetCategoryPathsInput","getCategoryPathsAction","categoryPathResults","getCategoryPathsAsync","CategoryPath","getCategoriesUrlSync","slice","getCategoryPathsActionDataAction","GetChannelDeliveryConfigurationInput","accountNumber","GetCheckoutCartInput","CartCookieName","Cookie","copyAsync","createGetCurrentBusinessPartnerUserInput","IsB2b","CurrentCategoryHierarchyInput","activeCategoryId","urlTokens","pageType","categoryId","activeCategoryParsedId","findCategoryHierarchy","innerCategoryHierarchy","getCurrentCategoryHierarchyAction","fullCategoryHierarchy","getCategoriesHierarchy","reverse","getCurrentCategoryHierarchyActionDataAction","categorySlug","tempActionContext","parameterizeFeatureFlags","getParameterizeFeatureFlags","parameterize","join","searchCategory","foundCategory","cat","Slug","matchingChild","getCurrentCategoryAction","categoryInput","getCategoryHierarchy","getCurrentCategoryActionDataAction","GetCustomerBalanceInput","createGetCustomerBalanceInput","getCustomerBalanceAction","getCustomerBalanceAsync","InvoiceAccount","getCustomerBalanceActionDataAction","createGetCustomerLoyaltyCardsInput","cacheType","getCustomerActionDataAction","CustomersDataActions","ProductDeliveryOptionsForCartLineItems","getDeliveryOptionsForCartLineItems","getDeliveryOptionsForCartLineItemsDataAction","GetDeliveryOptionsForSelectedVariantInput","customerId","createDeliveryOptionsForSelectedVariantInput","getDeliveryOptionsForSelectedVariantAction","ItemTypeValue","ReleasedProductType","FilterDeliveryModeOption","getDeliveryOptionsForSelectedVariantActionDataAction","DimensionAvailabilitiesForProductSearchResultInput","dimensionContext","productsDimensionInputs","inventoryLevel","filteredProductAttributes","AttributeValues","attributeValue","checkIfShouldDisplayAsSwatch","productionDimensionType","ProductDimensionType","dimensionForProducts","productsDimensionAvailabilities","dimensionInput","dimensionValuesWithInventory","inventoryLevelCode","getInventoryLevelCodeFromDimensionValue","DimensionValue","isDisabled","InventoryLevelValues","masterProductId","warning","requestDimensionType","promise","shippingInventoryConfiguration","RequestedDimensionTypeValue","MatchingDimensionValues","DefaultWarehouseOnly","FilterByChannelFulfillmentGroup","DeliveryModeTypeFilterValue","productDimension","GetDimensionsForSelectedVariantInput","matchingDimensionValues","getDimensionsForSelectedVariantAction","activeProducts","promises","dimensionValues","dimensionValuesResults","newDimension","oldDimension","DimensionValues","getDimensionsForSelectedVariantActionDataAction","getDimensionValuesFromQuery","featureNames","createGetFeatureStateInput","getFeatureStateAction","GetFullAvailableInventoryNearbyInput","_productId","_latitude","_longitude","_radius","_DistanceUnitValue","_IgnoreLocation","radius","IgnoreLocation","createGetFullAvailableInventoryNearbyInput","getFullAvailableInventoryNearbyAction","retailMulitplePickupMFeatureState","productInventoryInformation","productWarehouseInformation","DeliveryModeTypeFilter","storeMap","Map","stores","store","InventoryLocationId","locationDeliveryOptions","orgUnitChannel","channelCollection","channelIdList","getChannelDeliveryOptionsAsync","channelDeliveryOptions","_getLocationPickUpDeliveryModes","availabilityPromiseList","locationDeliveryOption","_channeldeliveryoption","orgUnitLocation","channelDeleiveryOptions","OrgUnitNumber","OrgUnitAvailability","getStoreHoursAsync","hours","itemAvailabilities","has","AvailableQuantity","ProductAvailableQuantity","availability","OrgUnitLocation","ItemAvailabilities","ProductInventoryInformation","OrgUnitPickUpDeliveryModes","StoreHours","_getAvailabilityWithHours","getFullAvailableInventoryNearbyActionDataAction","QuickOrderTemplate","quickOrderTemplateLines","totalLines","inputParameters","GetProductListInput","getProductList","productLists","inputLines","GetProductListLinesInput","getProductListLines","linesState","lines","totalCount","FullProductsRefineSearchByCategoryInput","queryResultSettingsProxy","refinementCriteria","criteria","hasSortingColumn","Sorting","Columns","fullProductInputs","refineSearchByCategoryAsync","searchResults","productSearchResult","getFullProducts","productDetailsCriteria","getProductDetailsCriteriaFromActionInput","FullProductsRefineSearchByTextInput","searchText","getRefinedProducts","getRefinedFullProducts","refineSearchByTextAsync","searchInputData","parseSearchData","q","getPrice","getRating","generateKey","productCollection","validProductIds","Set","ratingsAndPricePromises","_getActivePrices","_getProductRatings","projectDomain","validInputs","affiliations","getCartFromCustomer","AffiliationLines","getActivePricesAsync","fullProduct","versionLt","retailServerProxyVersion","CustomerContextualPrice","getProductRatingsAsync","productRating","ProductRating","split","ActiveWishlistInput","getActiveWishlistItems","wishlists","getByCustomerAsync","CommerceListLines","commerceListLine","documentId","itemsCount","DocumentId","ItemsCount","ItemsPerPage","SkipCount","Items","ProductItems","inputArray","GetProducts","productMap","listitem","getInutListData","GetLoyaltyCardInput","createGetLoyaltyCardInput","getLoyaltyAction","getCustomerLoyaltyCardsAsync","cards","firstCard","getLoyaltyCardAsync","CardNumber","card","LoyaltyEnrollmentDate","LoyaltyEnrollmentDateLocal","getLoyaltyActionDataAction","GetLoyaltyTransactionEstimationInput","createGetLoyaltyTransactionEstimationInput","getLoyaltyTransactionEstimationAction","_getCart","_getLoyalty","_getOrgUnits","getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync","Currency","points","loyaltyCardInput","getLoyalty","getLoyaltyTransactionEstimationActionDataAction","MediaLocationsByIdInput","createMediaLocationsByIdInput","getMediaLocationsByIdAction","getMediaLocationsAsync","mediaLocation","Uri","AltText","getMediaLocationsByIdActionDataAction","MediaLocationsForSelectedVariantInput","createMediaLocationsForSelectedVariantInput","getMediaLocationsForSelectedVariantAction","AsyncResult","productVariant","getMediaLocationsForSelectedVariantActionDataAction","createGetOrderShipmentsHistoryInput","Paging","Top","Skip","createGetOrgUnitConfigurationInput","OrganizationUsersCountInput","createGetOrganizationUsersCountInput","getOrganizationUsersCount","getUsersAsync","users","OrganizationUsersInput","createGetOrganizationUsersInput","getOrganizationUsers","getOrganizationUsersDataAction","GetOrganizationWideOrderHistoryInput","convertToString","getOrderHistoryAsync","ProductPickUpOptionsForCartLineItems","getPickUpOptionsForCartLineItems","getPickUpOptionsForCartLineItemsDataAction","PriceForProductSearchResultInput","getPriceForProductSearchResultDataAction","productRecIds","productPrices","productResults","activePrice","BasePrice","TradeAgreementPrice","PriceForSelectedVariantInput","createActivePriceForSelectedVariantInput","getPriceForSelectedVariantAction","featureStates","ProductTypeValue","ProductType","getPriceForSelectedVariantActionDataAction","ProductAvailabilitiesForSelectedVariantInput","createProductAvailabilitiesForSelectedVariantInput","getProductAvailabilitiesForSelectedVariantAction","enableStockCheck","shippingSearchCriteria","pickupSearchCriteria","shippingAvailability","shippingInventory","deliveryType","pickupAvailability","pickupInventory","mergeProductWarehouseToProductAvailabities","productsWarehouseInventory","productAvailable","TotalAvailable","getProductAvailabilitiesForSelectedVariantActionDataAction","ProductDimensionsWithAvailabilitiesInput","createProductDimensionsWithAvailabilitiesInput","getProductDimensionsWithAvailabilitiesAction","getProductDimensionsWithAvailabilities","QuickOrderTemplateLine","quickOrderTemplateLinesState","productListLines","metadata","listLine","fullProductsInfo","line","productListSearchCriteria","ProductListType","ProductsByCategoryInput","cacheKeyHint","searchByCategoryAsync","productSearchResults","cartState","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","isQuantityLimitsFeatureEnabledInHq","customerInfo","isOrderQuantityLimitsFeatureEnabled","productIdsByWarehouseId","resultProducts","entryWarehouseId","entryProductIds","accum","getActiveCartProductsActionWhenQuantityLimitsFeatureIsOn","getActiveCartProductsActionDataAction","PromotionOptionsForCartLineItems","getAvailablePromotionsAsync","getRatingsSummaryDataAction","RefinersByCategoryInput","getRefinersByCategoryAsync","RefinersByTextInput","getRefinersByTextAsync","GetRelatedProductsInput","relationType","querySettings","productRelationTypes","getRelationTypesAsync","productRelationTypeId","_productRelationType","foundProductRelationTypeId","productRelationType","searchProductRelationType","getRelatedProductsAsync","stack","GetScanResultInput","sku","skuNumber","readAsync","scanResults","Product","getDimensionsForSelectedVariant","ScanResult","ProductDimensionFull","SearchConfigurationInput","getSearchConfigurationAsync","hasUnmatchedDimension","matchedTargetDimension","targetDimension","checkIfHasUnmatchedDimensions","newImageUrl","generateProductImageUrl","fullDimensions","fullDimensionPromises","getFullDimensions","ProductIds","variantProductId","variantImageUrl","getProductVariant","matchedTargetDimensionFromApi","warehouseId","getSimpleProductsAction","productIdMapping","getProductPromises","catalogIds","mappedProducts","GetOrgUnitLocationsByAreaInput","_Latitude","_Longitude","_Radius","createGetOrgUnitLocationsByAreaInput","getOrgUnitLocationsByArea","locationPromiseList","_getLocationWithHours","getOrgUnitLocationsByAreaDataAction","createGetByCustomerInput","GetInvoiceDetailsInput","invoiceId","CreateGetInvoiceDetailsInput","getInvoiceDetails","InvoiceId","getInvoiceDetailsDataAction","GetInvoiceInput","CreateGetInvoiceInput","getInvoice","InvoiceIds","InvoiceTypeValues","InvoiceType","InvoicePaidStatusValues","InvoicePaidStatus","invoices","GetInvoicesInput","CreateGetInvoicesInput","getInvoices","CustomerId","getInvoicesDataAction","IssueLoyaltyInput","updateCart","updateLoyaltyCardId","loyaltyCardNumber","issueLoyaltyCardAsync","CustomerAccount","issuedCard","AddItemToOrderTemplateInput","addProductListLinesAsync","AddOrderTemplateToCartInput","chunkCount","getPaginatedOrderTemplateLinesInput","GetPaginatedOrderTemplateLinesInput","orderTemplateLines","getPaginatedOrderTemplateLinesAction","productLine","TrackingId","UnitOfMeasureSymbol","addCartLinesAsync","ValidationResults","concat","refreshCart","CreateOrderTemplateInput","createProductListAsync","inputParams","GetOrderTemplatesInput","getOrderTemplates","OrderTemplate","GetFullOrderTemplatesInput","getPrices","getRatings","orderTemplates","inputLinesRequests","inputLinesResponses","productLinesResponse","GetOrderTemplatesPreviewInput","createGetOrderTemplatesPreviewInput","getOrderTemplatesPreview","getFullOrderTemplates","getOrderTemplatesPreviewDataAction","createGetOrderTemplatesInput","getOrderTemplatesAction","searchAsync","orderTemplateLinesState","getProductListLinesAsync","OrderTemplateLine","UpdateOrderTemplateHeaderInput","updatedProductList","UpdateOrderTemplateInput","getLinesInput","getPaginatedOrderTemplateLines","linesToUpdate","lineToUpdate","updatedLines","updateProductListLinesAsync","updatedLine","createRefineSearchByCategoryInput","refinementCriterion","querySettingsProxy","createSearchByTextInput","createSearchOrgUnitLocationsInputFunc","OrgUnitsDataActions","updateAddressHandler","IsPrimary","updateCustomerAttributesInput","customerAttributes","phone","vatNumber","VatNumber","Attributes","updateCustomerPersonalizationInput","isOptOut","preferenceType","OptOutWebActivityTracking","OptOutPersonalization","setPrimaryAddress","primaryAddresses","addresses","addr","fromModuleData","sortingCriteria","top","defaultPageSizeForAPI","column","ColumnName","IsDescending","sep","candidateName","enableUrlLocalization","enableUrlEncoding","encodeURIComponent","replace","getCategorySlug","categoryName","getUrlSync","getInvoiceDetailsPageUrlSync","substr","getProductPageUrlSync","Dictionary","_values","_length","keyValuePair","setValue","removeValue","hasValue","getValue","getValueWithDefaultValue","defaultValue","isEmpty","clear","getValues","getKeys","getKeyValuePairs","_subscribers","instance","unsubscribe","unsubscribeAll","subscriber","hasElements","validValues","values","from","predicate","arrayLine","firstArray","secondArray","comparator","valueFromFirstArray","valueFromSecondArray","otherItem","array","newArray","EnumExtensions","enumClass","getNumericValues","isNullOrEmpty","endpoint","proxyUrl","endsWith","substring","InventoryLevels","totalAvailable","TotalAvailableInventoryLevelCode","physicalAvailable","PhysicalAvailableInventoryLevelCode","getInventoryLevelCodeFromProductAvailability","productAvailability","displayLabelEnabled","inventoryCode","inventoryRanges","physicalProductMap","mapInventoryWithPhysicalBufferEnabled","totalAvailableProductMap","mapInventoryWithTotalAvailableBufferEnabled","mapInventoryWithThresholdEnabled","productWarehouseInventoryAvailability","productQty","outOfStockThreshold","productAvailableQuantity","IsProductAvailable","shouldRenderLabel","MaximumPurchasablePhysicalAvailableQuantity","PhysicalAvailable","StockLevelCode","StockLevelLabel","PhysicalAvailableInventoryLevelLabel","MaximumPurchasableTotalAvailableQuantity","TotalAvailableInventoryLevelLabel","isAggregatedInventory","warehouseAggregation","productWarehouseInventoryInformation","AggregatedProductInventoryAvailabilities","PhysicalAvailableQuantity","TotalAvailableQuantity","isDefaultWareHouse","isFilterByChannelFulfillmentGroup","defaultDeliveryMode","inventoryAvailabilitySearchCriteria","QuantityUnitTypeValue","SearchArea","FinitePromiseQueueError","FinitePromiseQueue","PromiseQueue","maxQueueLength","InvalidMaxQueueLengthPassed","_maxQueueLength","promiseBody","totalElementsCount","_queue","_isBusy","shift","ProcessWasDiscardedFromTheQueue","enqueue","PromiseQueueElement","_dequeue","_canProcess","_processElement","_processNext","rnds8","Uint8Array","rng","bind","msCrypto","uuid","REGEX","byteToHex","arr","offset","arguments","validate","TypeError","options","buf","rnds","random","Guid","Random","uuidv4","_guid","EmailRegex","html5EmailRegex","PasswordRegex","PhoneRegex","imageUrl","generateImageUrlFromSdk","DimensionTypes","DimensionSwatchDisplayTypes","dimensionType","displayType","productCard","dimensionsToDisplayOnProductCard","dimensionsInProductCard","none","dimensionsToDisplayAsSwatch","dimensionsAsSwatchType","generateSwatchImageUrl","startsWith","baseImageUrl","buildWishlistLine","wishlistId","CommerceListId","hidePrice","hideRating","base","defaultCacheKey","separator","arg","getFallbackImageUrl","parsedItemId","convertProductDimensionTypeToDimensionTypes","productDimensionType","color","configuration","size","style","convertDimensionTypeToProductDimensionType","setDimensionValuesToQuery","inputUrl","dimensionValue","searchParams","history","replaceState","state","host","location","parseDimensionsFromUrl","urlParameters","parsedDimensions","localDimensionType","parseDimensionFromUrl","attribute","InventoryProductAttributeRecordId","ProductAvailabilitySortableAttributeRecordId","validateCartLinesInventory","emailDeliveryModeCode","cartLineMap","isValid","productIdWithErrors","IsInvoiceLine","IsGiftCardLine","cartLineTotal","delete","productAvailabilityMap","cartLineQty","availableQuantity","cartLineProduct","isStockedItem","Behavior","IsStockedProduct","isEmailDelivery","BaseCollectionInput","refiners","includeAttributes","isUpdateRefinerPanel","toJS","refiner","RefinerRecordId","LeftValueBoundString","RightValueBoundString","createBaseCollectionInput","inputClassConstuctor","queryRefiners","hydrateRefinersFromUrl","updateRefinerPanel","getUpdateRefinerPanel","sorting","decodeURIComponent","recommendation","Recommendation","InventoryInStockRefinerValueInput","inventoryProductAttributeRecordId","getProductRefinerHierarchy","GetFullProductsByCollectionInput","ProductListInventoryFilteringOptions","returnProducts","metadataCount","productSearchResultsWithImages","inventoryConfiguration","getInventoryConfigurationAsync","InventoryOutOfStockAttributeValueText","channelInventoryConfigurationId","inventoryAwareSortableAttributeId","searchProductId","Refinement","SkipVariantExpansion","productListInventoryDisplay","HideOOS","refinerValue","refinerInput","inventoryRefiner","getInventoryRefinersAction","Values","getInventoryInStockRefinerValueAsync","SortOOS","sortColumnName","CategoryIds","searchByCriteriaAsync","SearchCondition","searchObject","RecommendationListId","Ids","sortOptions","sortByOptionRelevanceDesc","sortByOptionRatingAsc","sortByOptionRatingDesc","sortByOptionNameAsc","sortByOptionNameDesc","sortByOptionPriceAsc","sortByOptionPriceDesc","sortByOptionBestSelling","sortByOptionNewScore","sortByOptionTrendingScore","MappedSearchInput","getMappedSearchConfiguration","searchConfiguration","ProductSortColumns","sortColumn","getMappedSearchConfigurationDataAction","getProductSearchRefinersAsync","productRefiners","productRefiner","DefaultValues","RefinersByCollectionInput","defaultCategoryIdValue","defaultProductIdValue","compressedRefinerKeys","compressedRefinerArray","parseQueryParam","compressedRefiner","parsedRefiner","refinerKey","buildListPageUrl","fullUrl","sortingColumns","sortedRefiners","sort","first","second","compressedRefiners","compressRefiners","getCurrentUrl","ListPageState","activeFilters","sortingCritera","currentPageNumber","featureProduct","ListPageStateInput","listPageStateAction","createListPageInput","createSearchStateInput","createTabStateInput","currWishlist","getActiveWishlistItemsDataAction","ProductAvailabilitiesForWishlistItems","getAvailabilitiesForWishlistItems","getAvailabilitiesForWishlistItemsDataAction","businessPartnerUsersQuery","b2BUserId","DataServiceQuery","createCreateInput","entity","create","request","executeAction","createUpdateInput","createDeleteAsync","read","createReadAllAsync","resultSettings","readAllAsync","createRequestAccountStatementInput","accountStatementParameters","createDataServiceRequestForOperation","returnEntity","requestAccountStatementAsync","createRequestInvoiceCopyInput","requestInvoiceCopyAsync","createGetOperationRequestsInput","startDateTime","endDateTime","createGetCurrentInput","businessPartnersQuery","businessPartnerId","createBusinessPartnerAsync","createGetOrderHistoryInput","createCreateProspectInput","businessPartnerProspect","createProspectAsync","createGetManagedBusinessPartnersInput","getManagedBusinessPartnersAsync","createGetUsersInput","cartsQuery","createCartAsync","createSearchInput","cartSearchCriteria","createCheckoutInput","tokenizedPaymentCard","receiptNumberSequence","checkoutAsync","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","loyaltyCardId","currencyCode","createGetPaymentsHistoryInput","getPaymentsHistoryAsync","createGetLineDeliveryOptionsByChannelIdInput","lineShippingAddresses","filterOption","getLineDeliveryOptionsByChannelIdAsync","createGetLineDeliveryOptionsInput","getLineDeliveryOptionsAsync","createGetDeliveryPreferencesInput","getDeliveryPreferencesAsync","createGetDeliveryOptionsInput","shippingAddress","ignoreLinesWithDeliveryMode","createUpdateLineDeliverySpecificationsInput","lineDeliverySpecifications","updateLineDeliverySpecificationsAsync","createUpdateDeliverySpecificationInput","deliverySpecification","updateDeliverySpecificationAsync","createAddChargeInput","moduleTypeValue","chargeCode","amount","addChargeAsync","createOverrideChargeInput","chargeLineId","reasonCodeLines","overrideChargeAsync","createAddCartLineChargeInput","cartLineId","addCartLineChargeAsync","createOverrideCartLineChargeInput","overrideCartLineChargeAsync","createVoidInput","voidAsync","createAddCartLinesInput","createAddReturnCartLinesInput","returnCartLines","returnTransactionSearchLocation","addReturnCartLinesAsync","createUpdateCartLinesInput","updateCartLinesAsync","createVoidCartLinesInput","voidCartLinesAsync","createRemoveCartLinesInput","removeCartLinesAsync","createAddTenderLineInput","cartTenderLine","addTenderLineAsync","createCalculateTenderDiscountInput","tenderLine","calculateTenderDiscountAsync","createAddPreprocessedTenderLineInput","preprocessedTenderLine","addPreprocessedTenderLineAsync","createValidateTenderLineForAddInput","validateTenderLineForAddAsync","createUpdateTenderLineSignatureInput","tenderLineId","signatureData","updateTenderLineSignatureAsync","createGetDeclinedOrVoidedCardReceiptsInput","receiptRetrievalCriteria","getDeclinedOrVoidedCardReceiptsAsync","createCopyInput","targetCartType","createAddInvoicedSalesLinesToCartInput","invoicedSalesLinesIds","addInvoicedSalesLinesToCartAsync","createRecallInvoicedSalesLinesInput","recallInvoicedSalesLineLookups","recallInvoicedSalesLinesAsync","createVoidTenderLineInput","isPreprocessed","forceVoid","voidTenderLineAsync","createIssueGiftCardInput","giftCardId","lineDescription","tenderTypeId","issueGiftCardAsync","createRefillGiftCardInput","refillGiftCardAsync","createCashOutGiftCardInput","cashOutGiftCardAsync","createSuspendInput","suspendAsync","createSuspendWithJournalInput","journalCartId","suspendWithJournalAsync","createResumeInput","resumeAsync","createResumeFromReceiptIdInput","receiptId","resumeFromReceiptIdAsync","createRemoveDiscountCodesInput","discountCodes","removeDiscountCodesAsync","createGetSuspendedInput","getSuspendedAsync","createOverrideCartLinePriceInput","overrideCartLinePriceAsync","createGetCardPaymentAcceptPointInput","extensionProperties","createRetrieveCardPaymentAcceptResultInput","resultAccessCode","settings","retrieveCardPaymentAcceptResultAsync","createRecallOrderInput","recallOrderAsync","createRecallQuoteInput","quoteId","recallQuoteAsync","createRecalculateOrderInput","recalculateOrderAsync","createResetAllChargesInput","resetAllChargesAsync","createGetPromotionsInput","getPromotionsAsync","createGetAvailablePromotionsInput","createRecallSalesInvoiceInput","recallSalesInvoiceAsync","createAddOrderInvoiceInput","addOrderInvoiceAsync","createAddInvoicesInput","invoiceIds","addInvoicesAsync","createUpdateCommissionSalesGroupInput","commissionSalesGroup","isUserInitiated","updateCommissionSalesGroupAsync","createAddCouponsInput","couponCodes","isLegacyDiscountCode","addCouponsAsync","createRemoveCouponsInput","removeCouponsAsync","createGetCartLineUserAlertsForAddInput","getCartLineUserAlertsForAddAsync","createGetCartLineUserAlertsInput","getCartLineUserAlertsAsync","createGetChargeCodesInput","getChargeCodesAsync","createGetReceiptTypesInput","getReceiptTypesAsync","createSetInvoiceLinePriceInput","setInvoiceLinePriceAsync","createAddDiscountCodeInput","discountCode","addDiscountCodeAsync","createGetReturnOptionsInput","getReturnOptionsAsync","createValidateForCheckoutInput","validateForCheckoutAsync","createGetTenderSuggestionsInput","getTenderSuggestionsAsync","catalogsQuery","createProductCatalogAsync","createGetCatalogsInput","activeOnly","getCatalogsAsync","categoriesQuery","createCategoryAsync","createGetCategoriesInput","getCategoriesAsync","createGetAttributesInput","getAttributesAsync","createGetCatalogAttributesInput","categoryIds","getCatalogAttributesAsync","createGetChildrenInput","getChildrenAsync","commerceListsQuery","createCommerceListAsync","addLinesAsync","commerceListLines","createAddLinesInput","removeLinesAsync","createRemoveLinesInput","customersQuery","createCustomerAsync","customerSearchCriteria","createSearchByFieldsInput","customerSearchByFieldCriteria","CustomerSearchByFieldCriteria","searchByFieldsAsync","createGetByAccountNumbersInput","accountNumbers","searchLocationValue","getByAccountNumbersAsync","createCreateCustomerTimelineItemInput","customerTimelineItem","createCustomerTimelineItemAsync","createUpdateCustomerTimelineItemInput","updateCustomerTimelineItemAsync","createGetRefinersInput","refinerSourceTypes","getRefinersAsync","nextPageToken","getOrderShipmentsHistoryAsync","createPostNonTransactionalActivityLoyaltyPointsInput","affiliationId","activityTypeId","postNonTransactionalActivityLoyaltyPointsAsync","createGetPurchaseHistoryInput","getPurchaseHistoryAsync","createGetCustomerSearchFieldsInput","getCustomerSearchFieldsAsync","createGetCustomerTimelineItemTypesInput","getCustomerTimelineItemTypesAsync","createGetCustomerTimelineItemsInput","getCustomerTimelineItemsAsync","createGetCustomerTimelineRefinersInput","getCustomerTimelineRefinersAsync","createGetTitlesInput","getTitlesAsync","orgUnitsQuery","orgUnitNumber","createOrgUnitAsync","createGetTillLayoutInput","includeImage","getTillLayoutAsync","storeSearchCriteria","deliveryModeTypeFilter","createSearchOrgUnitLocationsInput","orgUnitLocationSearchCriteria","searchOrgUnitLocationsAsync","createGetStoreHoursInput","storeNumber","createGetChannelDeliveryOptionsInput","channelIds","createGetAvailableInventoryInput","barcode","getAvailableInventoryAsync","createGetAvailableInventoryNearbyInput","getAvailableInventoryNearbyAsync","createGetProductAvailabilityByDimensionsInput","inventLocationIds","productDimensionCombinations","getProductAvailabilityByDimensionsAsync","createSearchProductAvailabilityInput","orgUnitAvailabilitySearchCriteria","searchProductAvailabilityAsync","createGetTerminalInfoInput","deviceType","getTerminalInfoAsync","createGetProductAvailabilityInput","getProductAvailabilityAsync","productListsQuery","createGetProductListLinesInput","createAddProductListLinesInput","createUpdateProductListLinesInput","createRemoveProductListLinesInput","removeProductListLinesAsync","createCopyCartToProductListInput","isRewrite","isQuantityAggregate","copyCartToProductListAsync","productsQuery","createProductAsync","productSearchCriteria","createGetDimensionValuesInput","kitVariantResolutionContext","getDimensionValuesAsync","createGetDimensionValuesWithEstimatedAvailabilitiesInput","getDimensionValuesWithEstimatedAvailabilitiesAsync","createGetVariantsByDimensionValuesInput","getVariantsByDimensionValuesAsync","createGetVariantsByComponentsInSlotsInput","matchingSlotToComponentRelationship","getVariantsByComponentsInSlotsAsync","createGetByIdsInput","inventLocationId","createCompareInput","compareAsync","createGetRecommendedProductsInput","getRecommendedProductsAsync","createRefineSearchByTextInput","createGetProductSearchRefinersInput","createChangesInput","changesAsync","createBeginReadChangedProductsInput","changedProductSearchCriteria","beginReadChangedProductsAsync","createReadChangedProductsInput","readChangedProductsAsync","createGetDeletedListingsInput","getDeletedListingsAsync","createGetAssortedProductIdsInput","includeFutureAssortedProducts","getAssortedProductIdsAsync","createCheckProductsExistenceInput","productExistenceCriteria","checkProductsExistenceAsync","createGetDeletedCatalogsInput","getDeletedCatalogsAsync","createGetDeletedLanguagesInput","getDeletedLanguagesAsync","createGetProductRatingsInput","createGetProductAssortmentIntervalsInput","getProductAssortmentIntervalsAsync","createDeleteListingsByCatalogsInput","deleteListingsByCatalogsAsync","createDeleteListingsByLanguagesInput","languages","deleteListingsByLanguagesAsync","createEndReadChangedProductsInput","session","endReadChangedProductsAsync","createUpdateListingPublishingStatusInput","publishingStatuses","updateListingPublishingStatusAsync","createGetCatalogProductAttributesInput","getCatalogProductAttributesAsync","createGetPricesInput","inventoryDimensionId","unitOfMeasureSymbol","getPricesAsync","createGetProductAvailabilitiesInput","getProductAvailabilitiesAsync","createGetActivePricesInput","activeDate","affiliationLoyaltyTiers","includeSimpleDiscountsInContextualPrice","includeVariantPriceRange","includeAttainablePricesAndDiscounts","createGetFilteredSlotComponentsInput","slotId","selectedComponents","getFilteredSlotComponentsAsync","createGetComponentByProductSlotRelationInput","componentRelation","getComponentByProductSlotRelationAsync","createGetSearchSuggestionsInput","hitPrefix","hitSuffix","getSearchSuggestionsAsync","categoryPathLookups","CategoryPathLookups","createGetUnitsOfMeasureInput","getUnitsOfMeasureAsync","createSearchByCategoryInput","searchByTextAsync","createSearchByCriteriaInput","createGetByLookupClausesInput","productLookupClauses","getByLookupClausesAsync","createGetRefinersByCategoryInput","createGetRefinersByTextInput","createGetRefinerValuesByCategoryInput","refinerId","refinerSourceValue","getRefinerValuesByCategoryAsync","createGetRefinerValuesByTextInput","getRefinerValuesByTextAsync","createGetChannelProductAttributesInput","getChannelProductAttributesAsync","createGetByIdInput","createGetAttributeValuesInput","createGetMediaLocationsInput","createGetMediaBlobsInput","getMediaBlobsAsync","createGetDefaultComponentsInput","getDefaultComponentsAsync","createGetSlotComponentsInput","getSlotComponentsAsync","createGetAllRelationTypesInput","getAllRelationTypesAsync","createGetRelationTypesInput","createGetRelatedProductsInput","relationTypeId","createGetApplicableWarrantiesInput","warrantableProductIds","getApplicableWarrantiesAsync","createGetPriceInput","getPriceAsync","createCalculateProductPriceInput","calculateProductPriceAsync","createGetEstimatedProductWarehouseAvailabilityInput","quantityUnitType","createGetEstimatedAvailabilityInput","recommendationsQuery","getElementsAsync","recommendationCriteria","createGetElementsInput","salesOrdersQuery","createSalesOrderAsync","salesOrderSearchCriteria","createSearchSalesTransactionsByReceiptIdInput","searchSalesTransactionsByReceiptIdAsync","createSearchOrdersInput","orderSearchCriteria","searchOrdersAsync","createGetFulfillmentLinesInput","fulfillmentLineSearchCriteria","getFulfillmentLinesAsync","createGetReceiptsInput","getReceiptsAsync","createSendReceiptInput","recipientAddresses","sendReceiptAsync","createGetGiftReceiptsInput","salesLineNumbers","SalesLineNumbers","getGiftReceiptsAsync","createGetByReceiptIdInput","orderStoreNumber","orderTerminalId","getByReceiptIdAsync","createGetSalesOrderDetailsByTransactionIdInput","createGetSalesOrderDetailsBySalesIdInput","createGetOrderByChannelReferenceLookupCriteriaInput","getOrderByChannelReferenceLookupCriteriaAsync","createGetSalesOrderDetailsByQuotationIdInput","quotationId","getSalesOrderDetailsByQuotationIdAsync","createShipFulfillmentLinesInput","shipFulfillmentLines","ShipFulfillmentLines","shipFulfillmentLinesAsync","createAcceptFulfillmentLinesInput","fulfillmentLineParameter","FulfillmentLineParameter","acceptFulfillmentLinesAsync","createPickFulfillmentLinesInput","pickFulfillmentLinesAsync","createPackFulfillmentLinesInput","packFulfillmentLinesAsync","createMarkFulfillmentLinesAsPackedInput","markFulfillmentLinesAsPackedAsync","createMarkAsPickedInput","markAsPickedAsync","createGetFulfillmentPickingListsInput","pickingListFulfillmentLine","hardwareProfileId","getFulfillmentPickingListsAsync","createGetFulfillmentPackingSlipsInput","packFulfillmentLines","getFulfillmentPackingSlipsAsync","createGetFulfillmentPackingSlipsByIdInput","packingSlipId","PackingSlipId","getFulfillmentPackingSlipsByIdAsync","createRejectFulfillmentLinesInput","rejectFulfillmentLines","RejectFulfillmentLines","rejectFulfillmentLinesAsync","createGetInvoicesBySalesIdInput","getInvoicesBySalesIdAsync","createGetOrderInvoicesInput","getOrderInvoicesAsync","createGetInvoicesInput","invoiceSearchCriteria","getInvoicesAsync","createGetInvoiceDetailsInput","invoiceDetailsSearchCriteria","getInvoiceDetailsAsync","createGetInvoicedSalesLinesBySalesIdsInput","salesIds","getInvoicedSalesLinesBySalesIdsAsync","createCreatePickingListInput","createPickingListAsync","createCreatePickingListForItemsInput","pickAndPackSalesLineParameters","createPickingListForItemsAsync","createGetPickingListsInput","getPickingListsAsync","createCreatePackingSlipInput","createPackingSlipAsync","createGetFulfillmentLineUserAlertsInput","fulfillmentOperation","FulfillmentOperation","getFulfillmentLineUserAlertsAsync","createCheckInForOrderPickupInput","channelReferenceId","checkInForOrderPickupAsync","createGetPackingSlipsDataInput","getPackingSlipsDataAsync","scanResultsQuery","scannedText","ScannedText","storeQuery","createRoundAmountByTenderTypeInput","roundAmountByTenderTypeAsync","createGetAffiliationsByNameInput","affiliationNames","getAffiliationsByNameAsync","createVoidSuspendedTransactionsInput","suspendedCartIds","shiftId","shiftTerminalId","voidSuspendedTransactionsAsync","createGetMerchantPropertiesByServiceAccountIdInput","serviceAccountIds","getMerchantPropertiesByServiceAccountIdAsync","createGetStoreSafesInput","getStoreSafesAsync","createGetShiftReconciliationLinesInput","shiftReconciliationLineRetrievalCriteria","getShiftReconciliationLinesAsync","createReconcileLinesInput","shiftReconciliationLines","reconcileLinesAsync","createUndoReconciliationInput","undoReconciliationAsync","createGetReceiptMasksInput","receiptTransactionType","getReceiptMasksAsync","searchSuggestionCriteria","createStartSessionInput","overrideSession","startSessionAsync","createEndSessionInput","endSessionAsync","createActivateDeviceInput","deviceNumber","terminalId","deviceId","forceActivate","activateDeviceAsync","createMassActivateDeviceInput","massActivateDeviceAsync","createDeactivateDeviceInput","deactivateDeviceAsync","createCreateHardwareStationTokenInput","createHardwareStationTokenAsync","createValidateHardwareStationTokenInput","hardwareStationToken","validateHardwareStationTokenAsync","createGetBarcodeByIdInput","barcodeId","getBarcodeByIdAsync","createGetButtonGridByIdInput","buttonGridId","getButtonGridByIdAsync","createGetButtonGridsWithoutImageInput","getButtonGridsWithoutImageAsync","createGetButtonGridsByIdsInput","getButtonGridsByIdsCriteria","getButtonGridsByIdsAsync","createGetImageBlobsByPictureIdsInput","pictureIds","getImageBlobsByPictureIdsAsync","createGetCardTypesInput","getCardTypesAsync","createResolveCardTypesInput","cardNumberPrefix","cardType","paymentToken","resolveCardTypesAsync","createGetSupportedPaymentCardTypesInput","getSupportedPaymentCardTypesAsync","createGetCitiesInput","stateProvinceId","countyId","getCitiesAsync","createGetCountryRegionsForShippingInput","getCountryRegionsForShippingAsync","createGetCountryRegionsByLanguageIdInput","languageId","createGetOnlineChannelInput","getOnlineChannelAsync","createGetCountiesInput","getCountiesAsync","createGetCreditMemoByIdInput","creditMemoId","getCreditMemoByIdAsync","createGetDownloadIntervalInput","dataStoreName","getDownloadIntervalAsync","createGetTerminalDataStoreNameInput","getTerminalDataStoreNameAsync","createGetDownloadLinkInput","downloadSessionId","getDownloadLinkAsync","createGetDataDownloadParametersByTerminalInput","terminalDataDownloadRequestInfo","TerminalDataDownloadRequestInfo","getDataDownloadParametersByTerminalAsync","createGetDataUploadParametersByTerminalInput","terminalDataUploadRequestInfo","TerminalDataUploadRequestInfo","getDataUploadParametersByTerminalAsync","createGetDownloadSessionsInput","getDownloadSessionsAsync","createGetInitialDownloadSessionsInput","getInitialDownloadSessionsAsync","createGetUploadJobDefinitionsInput","getUploadJobDefinitionsAsync","createGetUploadIntervalInput","getUploadIntervalAsync","createPostOfflineTransactionsInput","offlineTransactionForMPOS","postOfflineTransactionsAsync","createSetOfflineTerminalStateInput","offlineTerminalState","setOfflineTerminalStateAsync","createGetRetailTrialPlanOfferInput","getRetailTrialPlanOfferAsync","createGetLatestNumberSequenceInput","getLatestNumberSequenceAsync","createGetReceiptNumberResetInfoInput","getReceiptNumberResetInfoAsync","createGetLoyaltyRewardPointActivityTimelineInput","cardNumber","rewardPointId","getLoyaltyRewardPointActivityTimelineAsync","createGetLoyaltyRewardPointActivityTimelineForExpiredPointsInput","getLoyaltyRewardPointActivityTimelineForExpiredPointsAsync","createCalculateTotalCurrencyAmountInput","currenciesAmount","calculateTotalCurrencyAmountAsync","createGetDiscountCodeInput","getDiscountCodeAsync","createGetDiscountCodesByOfferIdInput","offerId","getDiscountCodesByOfferIdAsync","createGetDiscountCodesByKeywordInput","keyword","getDiscountCodesByKeywordAsync","createGetDistrictsInput","cityName","getDistrictsAsync","createGetHardwareStationProfilesInput","getHardwareStationProfilesAsync","createGetHardwareProfileByIdInput","getHardwareProfileByIdAsync","createGetLocalizedStringsInput","textId","getLocalizedStringsAsync","createGetOperationPermissionByIdInput","operationId","getOperationPermissionByIdAsync","createGetReasonCodesByIdInput","reasonCodeGroupId","getReasonCodesByIdAsync","createSearchReportDataSetInput","reportId","parameters","searchReportDataSetAsync","createGetReportDataSetByIdInput","getReportDataSetByIdAsync","createGetSrsReportDataSetInput","getSrsReportDataSetAsync","createGetIncomeExpenseAccountsInput","incomeExpenseAccountType","getIncomeExpenseAccountsAsync","createGetStateProvincesInput","createGetZipCodesInput","district","getZipCodesAsync","createGetAddressFromZipCodeInput","zipPostalCode","getAddressFromZipCodeAsync","createDisassembleKitTransactionsInput","kitTransaction","disassembleKitTransactionsAsync","createIssueLoyaltyCardInput","loyaltyCard","createGetLoyaltyCardTransactionsInput","getLoyaltyCardTransactionsAsync","createGetLoyaltyRewardPointsExpiringSoonInput","daysToExpiry","getLoyaltyRewardPointsExpiringSoonAsync","createSearchJournalTransactionsInput","searchJournalTransactionsAsync","createGetGiftCardInput","pin","expirationMonth","expirationYear","getGiftCardAsync","createGetGiftCardInquiryInput","getGiftCardInquiryAsync","createGetNonSalesTransactionsInput","nonSalesTenderTypeValue","getNonSalesTransactionsAsync","createCreateNonSalesTransactionInput","nonSalesTransaction","createNonSalesTransactionAsync","createCreateDropAndDeclareTransactionInput","dropAndDeclareTransaction","createDropAndDeclareTransactionAsync","createGetTaxOverridesInput","overrideBy","getTaxOverridesAsync","invoiceAccountNumber","createInitiateLinkToExistingCustomerInput","email","activationToken","emailTemplateId","emailProperties","ActivationToken","initiateLinkToExistingCustomerAsync","createFinalizeLinkToExistingCustomerInput","finalizeLinkToExistingCustomerAsync","createUnlinkFromExistingCustomerInput","unlinkFromExistingCustomerAsync","createGetOfflineSyncStatusInput","getOfflineSyncStatusAsync","createGetOfflinePendingTransactionCountInput","getOfflinePendingTransactionCountAsync","createGetOfflinePendingTransactionCountByShiftInput","getOfflinePendingTransactionCountByShiftAsync","createGetOfflineOpenShiftsInput","filterByCurrentUser","includeAllShiftsForStore","getOfflineOpenShiftsAsync","createDeleteOfflineShiftsInput","deleteOfflineShiftsAsync","createUpdateDownloadSessionInput","downloadSession","updateDownloadSessionAsync","createUpdateApplicationVersionInput","appVersion","updateApplicationVersionAsync","createGetStorageAccessTokenForUploadInput","getStorageAccessTokenForUploadAsync","createGetBusinessProcessModelLibrariesInput","getBusinessProcessModelLibrariesAsync","createGetBusinessProcessModelLibraryInput","businessProcessModelFrameworkLineId","hierarchyDepth","getBusinessProcessModelLibraryAsync","createSearchTaskGuidesByTitleInput","taskGuideSearchText","queryTypeValue","searchTaskGuidesByTitleAsync","createGenerateBusinessProcessModelPackageInput","taskRecording","generateBusinessProcessModelPackageAsync","createDownloadRecordingInput","businessProcessModelLineId","downloadRecordingAsync","createLoadRecordingFromFileInput","recordingUrl","loadRecordingFromFileAsync","createGenerateRecordingFileInput","generateRecordingFileAsync","createGenerateTrainingDocumentInput","generateTrainingDocumentAsync","createGenerateRecordingBundleInput","generateRecordingBundleAsync","createUploadRecordingInput","uploadRecordingAsync","createGetAttributeDefinitionsInput","createGetAttributeGroupDefinitionsInput","attributeGroupDefinitionCriteria","getAttributeGroupDefinitionsAsync","createSaveFiscalTransactionInput","fiscalTransaction","saveFiscalTransactionAsync","createValidatePrintReceiptCopyAllowedInput","salesOrderToPrint","validatePrintReceiptCopyAllowedAsync","createRegisterAuditEventInput","auditEvent","registerAuditEventAsync","createRegisterAndGetAuditEventInput","registerAndGetAuditEventAsync","createGetInventoryAvailableToPromiseInput","getInventoryAvailableToPromiseAsync","createGetSalesOrdersWithNoFiscalTransactionsInput","getSalesOrdersWithNoFiscalTransactionsAsync","createGetNotificationsInput","subscribedOperations","getNotificationsAsync","createAcknowledgeNotificationsInput","lastPullDateTime","acknowledgeNotificationsAsync","createSearchPurchaseHistoryInput","searchPurchaseHistoryAsync","createGetFiscalIntegrationFiscalDocumentInput","functionalityProfileGroupId","fiscalIntegrationDocumentRetrievalCriteria","getFiscalIntegrationFiscalDocumentAsync","createGetFiscalIntegrationNonFiscalDocumentInput","getFiscalIntegrationNonFiscalDocumentAsync","createGetFiscalIntegrationFiscalServiceSetupDocumentInput","getFiscalIntegrationFiscalServiceSetupDocumentAsync","createGetFiscalIntegrationFiscalServiceReadDataDocumentInput","getFiscalIntegrationFiscalServiceReadDataDocumentAsync","createProcessFiscalIntegrationFiscalServiceReadDataResultInput","documentToProcess","processFiscalIntegrationFiscalServiceReadDataResultAsync","createSaveFiscalIntegrationRegistrationResultInput","registrationResult","saveFiscalIntegrationRegistrationResultAsync","createGetFiscalIntegrationRegistrationProcessInput","getFiscalIntegrationRegistrationProcessAsync","createGetChannelSupportedFiscalIntegrationEventsByGroupInput","getChannelSupportedFiscalIntegrationEventsByGroupAsync","createGetFiscalIntegrationTechnicalProfilesInput","getFiscalIntegrationTechnicalProfilesAsync","createGetFiscalIntegrationTechnicalProfilesByFunctionalityGroupIdsInput","getFiscalIntegrationTechnicalProfilesByFunctionalityGroupIdsAsync","createGetFiscalRegistrationProcessSummaryInput","getFiscalRegistrationProcessSummaryAsync","createBackupFiscalRegistrationProcessContextInput","fiscalProcessCompleted","fiscalIntegrationSerializedContext","backupFiscalRegistrationProcessContextAsync","createGetActiveFiscalRegistrationProcessContextBackupInput","getActiveFiscalRegistrationProcessContextBackupAsync","createGetFiscalIntegrationTechnicalProfilesBySearchCriteriaInput","fiscalIntegrationTechnicalProfileSearchCriteria","getFiscalIntegrationTechnicalProfilesBySearchCriteriaAsync","createGetFiscalIntegrationServiceStatusInput","fiscalIntegrationServiceInfo","getFiscalIntegrationServiceStatusAsync","createSubmitFiscalIntegrationDocumentInput","documentToSubmit","submitFiscalIntegrationDocumentAsync","createGetFeatureStatesInput","getFeatureStatesAsync","createGetLastFiscalIntegrationSequentialSignaturesInput","sequentialKeys","getLastFiscalIntegrationSequentialSignaturesAsync","createCreateFiscalTransactionInput","createFiscalTransactionAsync","createGetEstimatedPickupTimeslotAvailabilitiesInput","getEstimatedPickupTimeslotAvailabilitiesAsync","createCalculateSalesDocumentInput","salesDocument","calculateSalesDocumentAsync","createSearchVendorsInput","searchVendorsAsync","createValidateVendorApprovedForItemInput","vendorAccountNumber","validateVendorApprovedForItemAsync","createGetButtonGridsInput","getButtonGridsAsync","createGetButtonGridsByScreenSizeInput","getButtonGridsByScreenSizeAsync","createGetOperationalInsightsConfigurationInput","getOperationalInsightsConfigurationAsync","createGetCashDeclarationsInput","getCashDeclarationsAsync","createGetCountryRegionsInput","getCountryRegionsAsync","createGetCustomerGroupsInput","getCustomerGroupsAsync","createGetChannelDeliveryOptionConfigurationInput","createGetChannelsByTypeInput","channelType","getChannelsByTypeAsync","createGetChannelsInput","createSearchChannelsInput","searchChannelsAsync","createGetEnvironmentConfigurationInput","getEnvironmentConfigurationAsync","createGetSearchConfigurationInput","createGetExtensionPackageDefinitionsInput","getExtensionPackageDefinitionsAsync","createGetExtensionProfileInput","getExtensionProfileAsync","createGetDeviceConfigurationInput","getDeviceConfigurationAsync","createGetVisualProfileInput","getVisualProfileAsync","createGetLanguagesInput","getLanguagesAsync","createGetAffiliationsInput","getAffiliationsAsync","createGetOperationPermissionsInput","getOperationPermissionsAsync","createGetReasonCodesInput","getReasonCodesAsync","createGetReturnOrderReasonCodesInput","getReturnOrderReasonCodesAsync","createGetSalesTaxGroupsInput","getSalesTaxGroupsAsync","getTenderTypesAsync","createGetDiscountCodesInput","getDiscountCodesAsync","createGetCurrenciesInput","getCurrenciesAsync","createGetCurrenciesAmountInput","getCurrenciesAmountAsync","createGetCommissionSalesGroupsInput","getCommissionSalesGroupsAsync","createSearchCommissionSalesGroupsInput","searchCommissionSalesGroupsAsync","createGetPaymentMerchantInformationInput","getPaymentMerchantInformationAsync","createGetPaymentPropertiesIfModifiedInput","merchantInformationHash","getPaymentPropertiesIfModifiedAsync","createGetOnlineChannelPublishStatusInput","getOnlineChannelPublishStatusAsync","createSetOnlineChannelPublishStatusInput","publishingStatus","statusMessage","setOnlineChannelPublishStatusAsync","createGetInventoryConfigurationInput","createGetPurchaseConfigurationInput","getPurchaseConfigurationAsync","createSearchJournalNamesInput","searchJournalNamesAsync","createGetAvailableDevicesInput","getAvailableDevicesAsync","createGetUserDefinedSecretStringInput","secretName","getUserDefinedSecretStringAsync","createGetUserDefinedSecretCertificateInput","getUserDefinedSecretCertificateAsync","createGetImageBlobInput","imageId","getImageBlobAsync","createGetExtensibleEnumerationsInput","getExtensibleEnumerationsAsync","createGetAddressPurposesInput","createGetReturnPolicyInput","getReturnPolicyAsync","createGetEmailReceiptSettingsInput","getEmailReceiptSettingsAsync","createCheckFiscalIntegrationComplianceInput","checkFiscalIntegrationComplianceAsync","entitySet","entityType","returnType","_query","tokens","filterSettings","expand","expands","inlineCount","object","_createODataParameters","_createRequest","isReturnTypeACollection","setGetAllRecords","isGetAllRecords","operationName","isAction","DataServiceRequest","GET","POST","ODATA_TOTAL_COUNT_PROPERTY","serverWorkerNotUpdated","DEFAULT_HEADER","Prefer","OBO_REQUEST","GET_ACCOUNT_SELECTION_COOKIE","fetchCommerceModels","isServiceWorkerSupportedOnClient","navigator","parseOdataResult","resultType","serviceWorker","Models","skipSerializationFromSW","initialData","features","enable_service_worker","disableRetailProxySW","shouldSkipSerializationFromSW","___initialData___","ready","initServerWorker","getSerializedResponseFromServiceWorker","resultSet","call","hasNextPage","timerId","dynamicImportPromise","setTimeout","serializePromise","messageChannel","MessageChannel","port1","onmessage","serializedData","clearTimeout","active","postMessage","port2","race","_cacheKeyFromReturnType","getActionId","_actionId","_cacheObjectType","_cacheKeyFromInput","getDataCacheType","overrideCacheType","Tracer","recurseEverything","_hasOperationName","_method","getActionIdFromInput","getCacheObjectValueFromReturnType","entityIdentifier","_cacheKeyIdentifierFromReturnType","EntityIdentifier","buildCacheFromInput","_callerContext","_totalCount","_otherOdata","batchRequestUri","requests","requestId","odataBatchRequest","requestUri","method","__batchRequests","batchRequests","changeRequests","odataRequest","_requestUri","toJson","__changeRequests","modifyDataInPlace","clone","prop","hasOwnProperty","property","arrayToJson","toDateTimeOffset","dateTime","__edmType","__offset","pad","val","sign","getTimezoneOffset","abs","floor","minutes","EMPTY","formattedKey","parameter","paramValue","parameterSeparator","cacheKeyIdentifierFromReturnType","isObjectNotEmptyOrNull","cacheKeyValue","execute","getRequestUri","buildQueryHeader","loadPage","getAllPages","executeBatch","ODataHttpRequest","buildBatchRequest","responses","parseBatchResponses","__batchResponses","errors","ErrorParser","formatKey","formatFunctionParameter","addParameter","orderByColumns","isNullOrWhitespace","format","ApiVersion","results","loadPageResults","headerName","isOBORequest","accountSelectionCustomerId","accountSelectionCookie","accountSelectionCustomerIdParts","tokenName","tokenValue","accessToken","cookieData","appSessionCookie","userSessionCookie","appSessionId","userSessionId","Utils","modelManagersRetailServerRequestStarted","modelManagersRetailServerRequestFinished","otherOdata","setMetadata","modelManagersRetailServerRequestError","odataList","newData","batchResponses","__changeResponses","AutoExitMethodType","CardType","PublishingAction","ListingPublishingActionStatus","OnlineChannelPublishStatusType","ReceiptTransactionType","EmployeePriceOverrideType","KeyInPriceRestriction","KeyInQuantityRestriction","NumberSequenceSeedType","ReasonCodeSourceType","TriggerFunctionType","QueryType","ChangeAction","PeriodicDiscountOfferType","SearchFilterType","InfoCodeActivity","SrsReportFileFormat","ShiftReconciliationLineStatus","ProductSearchServiceType","SearchSuggestionType","SalesStatus","EFTType","InventoryDocumentLineOperationResultMode","InventoryDocumentStatus","InventoryDocumentUpdateLinesActionType","InventoryInboundOutboundDocumentOperationType","InventoryInboundOutboundSourceDocumentStatus","InventorySourceDocumentType","InventoryInboundOutboundDocumentState","ReceiptNumberResetType","PeriodUnit","WarrantyPriceRangeBaseType","LogOnKeyboardType","LogOnLayoutType","InventoryDocumentValidationResultSeverity","InventoryDocumentOverreceivingErrors","InventoryDocumentSerialNumberErrors","EmployeeIdentityType","FulfillmentOperationType","PaymentStatus","UserAlertSourceType","CustomerOrderMode","InventoryValidationErrors","InventoryJournalPosAdjustmentType","ProductDataValidationErrors","AddressOperationType","AddressType","AttributeDataType","BarcodeEntryMethodType","BarcodeMaskType","TransactionStatus","GiftCardOperationType","RetailGiftCardType","PriceMethod","ConcurrencyMode","SalesAgreementLineType","DiscountLineType","ManualDiscountType","CustomerDiscountType","ReasonCodeInputType","ReasonCodeLineType","ChargeModule","ChargeType","ChargeMethod","CashType","IncomeExpenseAccountType","TenderLineStatus","TenderLineVoidStatus","PaymentProcessingType","CreditCardProcessorStatus","ContactInformationType","CommerceEntityDataLevel","ProductPropertyType","AttributeGroupType","ProductSource","RoundingMethod","LineMultilineDiscountOnItem","LoyaltyRewardPointEntryType","LoyaltyRewardPointType","CashManagementTransactionContext","CustomerTimelineItemEntityType","EmployeePermissionsAllowPrintingReceiptCopy","AddressFormatLineType","StatementMethod","SalesRepPromptType","RetailProductSearchType","RetailDenominationsToDisplay","EmployeeLogonType","RetailCustomerSearchMode","RequirePaymentForFulfillment","CardNotPresentProcessingConfiguration","ChangeDueBehavior","FontSchemeType","DeviceActivationStatus","DeviceType","DualDisplayType","FiscalRegisterType","PrinterLogotype","PrinterLogoAlignmentType","FiscalIntegrationConnectorType","FiscalIntegrationConnectorLocation","ReceiptType","PrintBehavior","DistanceUnit","StockCountStatus","RecommendedElementType","CommerceListInvitationStatus","CommerceListInvitationType","OrderSearchType","SalesTransactionType","CustomerRefinerSource","PriceSourceType","RetailAffiliationType","InventoryDocumentLineOriginType","InventorySerialNumberLineStatus","InventorySourceDocumentLineStatus","RetailOperation","RefinerType","DisplayTemplate","ClientBookRefinerSource","ProductRefinerSource","LoyaltyCardTenderType","RetailChannelType","LogOnConfiguration","TransactionServiceAuthenticationType","IncludePersonalDataInGuestOrderLookupPolicy","RetailAddressBookType","InventAvailabilityCalculationMode","InventoryAvailabilityClientDisplayMode","EmployeeActivityType","DeliveryPreferenceType","LayoutType","SalesInvoiceType","TaxOverrideType","TaxOverrideBy","ReasonCodeInputRequiredType","RecordingValueType","UserActionType","ArtifactType","FrameworkAccess","MetadataControl","FiscalIntegrationRegistrationStatus","CustomerOrderOperation","BusinessPartnerOperationType","BusinessPartnerOperationStatus","CartType","CartStatus","PeriodicDiscountsCalculateScope","CustomerType","ContactInfoType","ChecklistStatus","ChecklistTaskDeepLinkType","ChecklistTaskStatus","DocumentStatus","CustomerOrderType","LineDiscountCalculationType","TaxCalculationType","ShiftStatus","TaxRegistrationType","CommerceListType","RecommendationType","PurchaseTransferOrderType","BusinessPartnerUserStatus","ElectronicAddressType","DownloadSessionStatus","HardwareStationType","AuditEventUploadType","AuditEventType","AuditLogTraceLevel","FiscalIntegrationEventType","FiscalIntegrationDocumentGenerationResultType","FiscalIntegrationRegistrationProcessMode","FiscalIntegrationServiceCommunicationResultType","FiscalIntegrationServiceFailureType","PickupTimeslotAvailabilitySearchOption","VendorValidationResultLevel","AttachedServiceStatus","ReceiptEmailBehavior","CartLineQuantityLimitsErrors","CommunicationErrors","ConfigurationErrors","DataValidationErrors","FeatureNotSupportedErrors","SecurityErrors","StorageErrors","VersionNotSupportedErrors","PaymentErrors","FiscalIntegrationServiceErrors","CommerceDataExchangeErrors","TaskManagementErrorCode","PricingDataValidationErrors","PaymentConfigurationErrors","TaxLimitBase","BusinessPartnerOperationDeliveryType","OnlineStoreCustomerType","WrongEndpointErrors","RetailServerApiErrors","ExceptionSeverity","ICacheSource","isAsyncResult","executor","_type","_handlers","_attachHandler","_executeHandlers","onFail","onSuccess","_resolve","_updateStatus","_reject","getType","run","asyncResult","finally","onfinally","failed","Symbol","toStringTag","newStatus","isError","obj","ErrorTypeEnum","GENERICERRORMESSAGE","DeviceActivationErrorsForwardLinks","ErrorHelper","errorResourceId","AGGREGATED_ERROR_RESOUCEIDS","statusCode","err","errorCode","canRetry","BAD_REQUEST","NOT_AUTHORIZIED","FORBIDDEN","PRECONDITION_FAILED","SERVICE_UNAVAILABLE","SERVER_ERROR","RETURN_NO_ORDERS_FOUND","SERVER_TIMEOUT","ProxyError","numErrors","isRetryable","CanRetry","errorResourceIds","ErrorCode","LocalizedErrorMessage","isObo","isOboRequest","handled","redirectUrl","redirectCountQueryString","noRedirectQueryString","currentUrl","rdc","parseError","responseText","jsonResponse","ErrorResourceId","Message","ex","errorString","errorResponse","commerceErrors","odataError","CorrelationId","localizedMessage","LocalizedMessage","exceptionType","convertExceptionToErrors","serverException","DataValidationExceptionType","CartValidationExceptionType","dataValidation","getErrorsFromDataValidationFailures","StorageExceptionType","commerceException","failures","failure","ErrorContext","contentType","bodyString","Exception","parseJSONError","genericWarning","ProxyErrorSDK","localizedErrorMessage","formatData","setPrototypeOf","extraData","_canRetry","_errorCode","_errorMessage","_localizedErrorMessage","_commerceException","_formatData","_extraData","proxyError","errorName","ErrorMessage","accumulator","depth","stringifyValue","returnValue","params","param","regexp","RegExp","normalHeaders","accept","normalizeHeaders","lowerName","normalName","defaultHttpClient","callbackParameterName","formatQueryString","enableJsonpCallback","success","abort","handleTimeout","cancelToken","axios","done","cancel","isAbsoluteUrl","authenticationCreds","username","password","axiosTimeout","timeoutMS","_clientPlatformSetting","clientSideDataActionTimeoutInMs","auth","timeout","axiosResponse","axiosError","recognizeDates","useJsonLight","inferJsonLightFeedAsObject","Accept","write","maxDataServiceVersion","prepareRequest","jsonHandler","httpClient","invokeRequest","jsonMediaType","ODATA_VERSION","ODATA_MAX_VERSION","str","contentTypeParts","properties","len","contentTypeParams","mediaType","jsonContentType","createReadWriteContext","contentTypeStr","dataServiceVersion","rwContext","versionRE","getDataServiceVersion","headerVersion","matches","exec","handlerWrite","cType","CONTENT_TYPE_HEADER_NAME","version","writeContext","left","right","leftParts","rightParts","leftVersion","rightVersion","maxVersion","ContentType","contentTypeObj","contentTypeToString","handlerRead","formatNumberWidth","append","parseTimeRE","parseDateTimeRE","parseDateTimeOffset","withOffset","nullOnError","parts","timezone","year","ms","seconds","direction","d","h","m","parseTimezone","setUTCFullYear","setUTCHours","valueOf","__ns","jsonLightReadStringPropertyValue","propertyType","EDM","parseFloat","duration","years","months","days","parseDuration","dateStr","time","timezoneOffsetIndex","EventLevel","EventChannel","EventType","func","DebuggingConsoleSink","setSessionInfo","offlineAvailability","offlineCurrentMode","setInstrumentationKey","instrumentationKey","writeEvent","event","LoggerBase","eventId","level","task","opCode","loggingSink","enumType","sink","informationformat","TracingOn","GetMessage","apply","TracerDynamicsError","warningFormat","errorFormat","formatString","uniqueFunctionName","counter","Counters","PerformanceCounters","Count","getTime","Timers","startTime","pop","TotalTime","Information","TracerDynamics","init","callActionOrExecute","chainAction","isObservable","exports","React","ReactDOM"],"sourceRoot":""}